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.
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.
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...
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
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