it-swarm.com.de

dkms-Treiber für rtl8812au und rtl8814au-Netzwerk-Dongles bauen nicht auf 17.10 auf (Kernel 4.13)

Ich habe github dkms-Kerneltreiber für rtl8812au (v4.3.14) und rtl8814au (v4.3.21). USB-WLAN-Dongles funktionierten in 17.04 einwandfrei, konnten jedoch während des Upgrades auf 17.10 nicht erstellt werden. Beide Treiber basieren auf ähnlichem Code und können nicht auf ähnliche Weise erstellt werden.

Ich weiß nicht, ob es sich um einen neuen GCC-Compiler oder den neuen 4.13-Kernel handelt, der möglicherweise das Problem verursacht. Möglicherweise ist nur eine geringfügige Änderung von Makefile erforderlich, um die Fehler zu umgehen.

Wenn ich den Standardbefehl make anstelle der normalen Sequenz dkms add/build/install verwende, kann ich den Fehler leicht erkennen.

Hier sind die Fehler für die rtl8812au-Codeversion 4.3.14 (die neuer ist als die aktuellen Ubuntu-Repos) ...

[email protected]:~/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
[email protected]:~/src/rtl8812AU$

Der Code, auf den in osdep_service.h verwiesen wird, sieht folgendermaßen aus ...

#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

Die Fehler und der Code für das rtl8814au sehen ähnlich aus, daher werde ich sie nicht posten, es sei denn, sie werden angefordert/benötigt.

Bitte helfen Sie. Ich möchte meine drahtlosen Netzwerke wieder online stellen.

1
heynnema

Sie könnten versuchen:

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

Es macht perfekt auf meinem 17.10 System. Ich bin nicht sicher, ob ich einen dkms-Prozess empfehlen kann. Daher erfordern Kernel-Updates eine Neukompilierung.

2
chili555

Vielen Dank an @ chili555 für den Hinweis in die richtige Richtung. Der rtl8814au-Treiber, auf den im Link git clone verwiesen wird, funktioniert mit 17.10, und derselbe Autor verfügt auch über einen funktionierenden rtl8812au-Treiber, der auch mit 17.10 funktioniert.

Aus der Erinnerung ...

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
2
heynnema