我正在尝试在 ubuntu 24.04.1 上编译 TP-Link TL-WN823N wifi 适配器的驱动程序,源代码来自 https://www.tp-link.com/en/support/download/tl-wn823n/#Driver, 按照 tp-link 说明
但是编译时会出现如下错误
TP-Link_Driver_Linux_series8_beta1/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047/include/osdep_service_linux.h:299:15: error: ‘_timer’ {aka ‘struct timer_list’} has no member named ‘data’
299 | ptimer->data = (unsigned long)cntx;
| ^~
/home/aaa/Downloads/TP-Link_Driver_Linux_series8_beta1/rtl8192EU_WiFi_linux_v5.2.19.1_25633.20171222_COEX20171113-0047/include/osdep_service_linux.h:300:9: error: implicit declaration of function ‘init_timer’; did you mean ‘_init_timer’? [-Werror=implicit-function-declaration]
300 | init_timer(ptimer);
| ^~~~~~~~~~
| _init_timer
我联系了 TP-Link 的支持部门,咨询他们的产品,他们宣传说兼容 Linux,但被告知他们不支持 Linux
论坛上至少还有另一个答案,但针对的是较旧的内核。
lsusb(已插入适配器)显示
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 062a:4101 MosArt Semiconductor Corp. Wireless Keyboard/Mouse
Bus 001 Device 004: ID 2357:0109 TP-Link TL-WN823N v2/v3 [Realtek RTL8192EU]
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
dmsg 输出
$sudo dmesg | grep rtl8
[1196665.322540] usb 1-9: rtl8xxxu: Loading firmware rtlwifi/rtl8192eu_nic.bin
[1196666.149524] usbcore: registered new interface driver rtl8xxxu
[1196666.198142] rtl8xxxu 1-9:1.0 wlxa86e8407690a: renamed from wlan0
有人可以帮忙吗?
更新。尝试按照下面链接的步骤操作后,我遇到了问题
aaa@Cirrus:~/dev/wifi-driver/rtl8192eu-linux-driver$ sudo dkms add .
[sudo] password for aaa:
Deprecated feature: REMAKE_INITRD (/home/aaa/dev/wifi-driver/rtl8192eu-linux-driver/dkms.conf)
Deprecated feature: REMAKE_INITRD (/usr/src/rtl8192eu-1.0/dkms.conf)
Creating symlink /var/lib/dkms/rtl8192eu/1.0/source -> /usr/src/rtl8192eu-1.0
aaa@Cirrus:~/dev/wifi-driver/rtl8192eu-linux-driver$ sudo dkms install tl8192eu/1.0
Sign command: /usr/bin/kmodsign
Certificate or key are missing, generating them using update-secureboot-policy...
Adding '/var/lib/shim-signed/mok/MOK.der' to shim:
Signing key: /var/lib/shim-signed/mok/MOK.priv
Public certificate (MOK): /var/lib/shim-signed/mok/MOK.der
Error! Could not find module source directory.
Directory: /usr/src/tl8192eu-1.0 does not exist.
aaa@Cirrus:~/dev/wifi-driver/rtl8192eu-linux-driver$