rtl8812au和rtl8814au网络加密狗的dkms驱动程序无法在17.10(内核4.13)上构建

我有用于rtl8812au(v4.3.14)和rtl8814au(v4.3.21)的github dkms内核驱动程序,这些驱动程序在17.04正常工作,但在升级到17.10期间无法构建。 这两个驱动程序都基于类似的代码,并且无法以类似的方式构建。

我不知道这是一个新的gcc编译器,还是新的4.13内核,可能导致问题。 它可能只需要对Makefile进行一些小调整即可解决错误。

如果我使用标准的make命令,而不是普通的dkms add/build/install序列,我可以很容易地看到错误。

以下是rtl8812au代码版本4.3.14的错误(比当前Ubuntu回购中的内容更新)…

 user@Satellite-E55:~/src/rtl8812AU$ make make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/4.13.0-16-generic/build M=/home/user/src/rtl8812AU modules make[1]: Entering directory '/usr/src/linux-headers-4.13.0-16-generic' CC [M] /home/user/src/rtl8812AU/core/rtw_cmd.o In file included from /home/user/src/rtl8812AU/include/drv_types.h:32:0, from /home/user/src/rtl8812AU/core/rtw_cmd.c:22: /home/user/src/rtl8812AU/include/osdep_service.h: In function 'thread_enter': /home/user/src/rtl8812AU/include/osdep_service.h:343:2: error: implicit declaration of function 'allow_signal'; did you mean 'do_signal'? [-Werror=implicit-function-declaration] allow_signal(SIGTERM); ^~~~~~~~~~~~ do_signal /home/user/src/rtl8812AU/include/osdep_service.h: In function 'flush_signals_thread': /home/user/src/rtl8812AU/include/osdep_service.h:353:6: error: implicit declaration of function 'signal_pending'; did you mean 'timer_pending'? [-Werror=implicit-function-declaration] if (signal_pending (current)) ^~~~~~~~~~~~~~ timer_pending /home/user/src/rtl8812AU/include/osdep_service.h:355:3: error: implicit declaration of function 'flush_signals'; did you mean 'do_signal'? [-Werror=implicit-function-declaration] flush_signals(current); ^~~~~~~~~~~~~ do_signal cc1: some warnings being treated as errors scripts/Makefile.build:302: recipe for target '/home/user/src/rtl8812AU/core/rtw_cmd.o' failed make[2]: *** [/home/user/src/rtl8812AU/core/rtw_cmd.o] Error 1 Makefile:1546: recipe for target '_module_/home/user/src/rtl8812AU' failed make[1]: *** [_module_/home/user/src/rtl8812AU] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-4.13.0-16-generic' Makefile:1576: recipe for target 'modules' failed make: *** [modules] Error 2 user@Satellite-E55:~/src/rtl8812AU$ 

osdep_service.h引用的代码如下所示……

 #ifdef PLATFORM_LINUX #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 8, 0)) daemonize("%s", name); #endif allow_signal(SIGTERM); #endif #ifdef PLATFORM_FREEBSD printf("%s", "RTKTHREAD_enter"); #endif } __inline static void flush_signals_thread(void) { #ifdef PLATFORM_LINUX if (signal_pending (current)) { flush_signals(current); } #endif 

rtl8814au的错误和代码看起来很相似,所以除非请求/要求,否则我不会发布它们。

请帮忙。 我想让我的无线网络恢复在线状态。

你可以尝试:

 git clone https://github.com/zebulon2/rtl8814au.git cd rtl8814au make sudo make install sudo modprobe 8814au 

它完全适用于我的17.10系统。 我不相信我可以推荐一个dkms进程,所以内核更新需要重新编译。

感谢@ chili555指出我正确的方向。 git clone链接中引用的rtl8814au驱动程序与17.10一起工作,同一作者也有一个工作的rtl8812au驱动程序也适用于17.10。

从记忆里…

rtl8812au(Edimax EW-7822UAC)

 sudo git clone https://github.com/zebulon2/rtl8812au-driver-5.2.9.git note: dkms.conf file already included sudo cp -r rtl8812au-driver-5.2.9 /usr/src/rtl8812au-5.2.9 sudo dkms add rtl8812au/5.2.9 sudo dkms build rtl8812au/5.2.9 sudo dkms install rtl8812au/5.2.9 dkms status 

rtl8814au(Edimax EW-7833UAC和D-Link DWA-192)

 sudo git clone https://github.com/zebulon2/rtl8814au.git create dkms.conf and add these lines... ---- # rtl8814AU-4.3.21_17997.20160531 # # PACKAGE_NAME="rtl8814au" PACKAGE_VERSION="4.3.21_17997.20160531" MAKE[0]="'make' all KVER=${kernelver}" BUILT_MODULE_NAME[0]="8814au" DEST_MODULE_LOCATION[0]="/updates/dkms" AUTOINSTALL="YES" REMAKE_INITRD="NO" ---- sudo cp -r rtl8814au /usr/src/rtl8814au-4.3.21 sudo dkms add rtl8814au/4.3.21 sudo dkms build rtl8814au/4.3.21 sudo dkms install rtl8814au/4.3.21 dkms status