web-dev-qa-db-fra.com

Les pilotes dkms pour les dongles réseau rtl8812au et rtl8814au ne peuvent pas être construits le 17.10 (noyau 4.13)

J'ai des pilotes de noyau github dkms pour les clés de réseau sans fil USB rtl8812au (v4.3.14) et rtl8814au (v4.3.21) qui fonctionnaient correctement dans 17.04, mais n'ont pas été créées lors de la mise à niveau vers 17.10. Les deux pilotes sont basés sur un code similaire et ne peuvent pas être construits de la même manière.

Je ne sais pas s'il s'agit d'un nouveau compilateur gcc ou du nouveau noyau 4.13 qui pourrait être à l'origine du problème. Il suffit peut-être d’un ajustement mineur à la Makefile pour contourner les erreurs.

Si j'utilise la commande standard make, au lieu de la séquence normale dkms add/build/install, je peux facilement voir l'erreur.

Voici les erreurs pour la version 4.3.14 du code rtl8812au (plus récente que celle trouvée dans le dépôt actuel d'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$

Le code référencé dans osdep_service.h ressemble à ceci ...

#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

Les erreurs et le code pour le rtl8814au se ressemblent, je ne les posterai donc que si demandé/requis.

S'il vous plaît aider. J'aimerais remettre mes réseaux sans fil en ligne.

1
heynnema

Vous pourriez essayer:

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

Il fait parfaitement sur mon système 17.10. Je ne suis pas sûr de pouvoir recommander un processus dkms. Les mises à jour du noyau nécessitent donc une recompilation.

2
chili555

Merci à @ chili555 de m'avoir orienté dans la bonne direction. Le pilote rtl8814au mentionné dans le lien git clone fonctionne avec 17.10, et le même auteur dispose également d’un pilote rtl8812au qui fonctionne également avec 17.10.

De mémoire...

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