Linux RTL8188EUS Wifi驱动调试

正点原子提供的RTL8188EUS只能用在低版本Kernel,高版本Kernel会出现编译错误,比如我用的6.6.52版本的Kernel就无法编译正点原子提供的那几个Realtek的驱动文件。

尝试从网上找能够支持新版本Kernel的RTL8188EUS的驱动,Google出来第一位是这个:
https://github.com/aircrack-ng/rtl8188eus

看了一圈,这个仓库有1k的star,并且最新支持到了6.12版本的Kernel,看上去很不错,下载下来,准备在虚拟机里交叉编译成arm版本:

1
2
3
export KDIR=~/linux/NXP_linux/linux-imx-lf-6.6.y

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KSRC=$KDIR

注意这里的KDIR要设置成自己的Linux Kernel源码目录,不能用默认的,否则编译出来的是x86架构,没法在板子上用。

正常状况下编译会得到8188eu.ko这个模块:

1
2
3
4
5
8188eu.ko     BUILD_FOR_NETHUNTER.md  dkms-remove.sh  modules.order   ReleaseNotes.pdf
8188eu.mod built-in.a hal Module.symvers
8188eu.mod.c core include os_dep
8188eu.mod.o dkms.conf Kconfig platform
8188eu.o dkms-install.sh Makefile README.md

把模块拷贝到根目录下/lib/modules/6.6.52中,重启开发板,尝试加载模块,Kernel报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[   77.296944] 8188eu: loading out-of-tree module taints kernel.
[ 77.306670] 8188eu: Unknown symbol __cfg80211_alloc_event_skb (err -2)
[ 77.316458] 8188eu: Unknown symbol wiphy_register (err -2)
[ 77.325178] 8188eu: Unknown symbol cfg80211_remain_on_channel_expired (err -2)
[ 77.335632] 8188eu: Unknown symbol cfg80211_vendor_cmd_reply (err -2)
[ 77.345288] 8188eu: Unknown symbol cfg80211_del_sta_sinfo (err -2)
[ 77.354656] 8188eu: Unknown symbol wiphy_unregister (err -2)
[ 77.363749] 8188eu: Unknown symbol cfg80211_ch_switch_notify (err -2)
[ 77.373440] 8188eu: Unknown symbol ieee80211_get_channel_khz (err -2)
[ 77.383033] 8188eu: Unknown symbol cfg80211_ready_on_channel (err -2)
[ 77.392592] 8188eu: Unknown symbol wiphy_free (err -2)
[ 77.400814] 8188eu: Unknown symbol wiphy_new_nm (err -2)
[ 77.409047] 8188eu: Unknown symbol cfg80211_get_bss (err -2)
[ 77.417488] 8188eu: Unknown symbol ieee80211_freq_khz_to_channel (err -2)
[ 77.427077] 8188eu: Unknown symbol __cfg80211_send_event_skb (err -2)
[ 77.436316] 8188eu: Unknown symbol cfg80211_disconnected (err -2)
[ 77.445217] 8188eu: Unknown symbol cfg80211_michael_mic_failure (err -2)
[ 77.454688] 8188eu: Unknown symbol cfg80211_ibss_joined (err -2)
[ 77.463463] 8188eu: Unknown symbol cfg80211_scan_done (err -2)
[ 77.471772] 8188eu: Unknown symbol cfg80211_roamed (err -2)
[ 77.479798] 8188eu: Unknown symbol cfg80211_put_bss (err -2)
[ 77.487786] 8188eu: Unknown symbol cfg80211_connect_done (err -2)
[ 77.496214] 8188eu: Unknown symbol cfg80211_unlink_bss (err -2)
[ 77.504461] 8188eu: Unknown symbol cfg80211_inform_bss_frame_data (err -2)
[ 77.513599] 8188eu: Unknown symbol cfg80211_new_sta (err -2)
[ 77.521513] 8188eu: Unknown symbol __cfg80211_alloc_reply_skb (err -2)
[ 77.530336] 8188eu: Unknown symbol cfg80211_rx_mgmt_ext (err -2)
[ 77.538526] 8188eu: Unknown symbol wiphy_apply_custom_regulatory (err -2)
[ 77.547557] 8188eu: Unknown symbol cfg80211_mgmt_tx_status_ext (err -2)
[ 77.656978] 8188eu: Unknown symbol __cfg80211_alloc_event_skb (err -2)
[ 77.665898] 8188eu: Unknown symbol wiphy_register (err -2)
[ 77.673436] 8188eu: Unknown symbol cfg80211_remain_on_channel_expired (err -2)
[ 77.682597] 8188eu: Unknown symbol cfg80211_vendor_cmd_reply (err -2)
[ 77.691051] 8188eu: Unknown symbol cfg80211_del_sta_sinfo (err -2)
[ 77.699152] 8188eu: Unknown symbol wiphy_unregister (err -2)
[ 77.706787] 8188eu: Unknown symbol cfg80211_ch_switch_notify (err -2)
[ 77.715234] 8188eu: Unknown symbol ieee80211_get_channel_khz (err -2)
[ 77.723608] 8188eu: Unknown symbol cfg80211_ready_on_channel (err -2)
[ 77.732000] 8188eu: Unknown symbol wiphy_free (err -2)
[ 77.739088] 8188eu: Unknown symbol wiphy_new_nm (err -2)
[ 77.746251] 8188eu: Unknown symbol cfg80211_get_bss (err -2)
[ 77.753799] 8188eu: Unknown symbol ieee80211_freq_khz_to_channel (err -2)
[ 77.762421] 8188eu: Unknown symbol __cfg80211_send_event_skb (err -2)
[ 77.770861] 8188eu: Unknown symbol cfg80211_disconnected (err -2)
[ 77.778911] 8188eu: Unknown symbol cfg80211_michael_mic_failure (err -2)
[ 77.787562] 8188eu: Unknown symbol cfg80211_ibss_joined (err -2)
[ 77.795674] 8188eu: Unknown symbol cfg80211_scan_done (err -2)
[ 77.803474] 8188eu: Unknown symbol cfg80211_roamed (err -2)
[ 77.810850] 8188eu: Unknown symbol cfg80211_put_bss (err -2)
[ 77.818533] 8188eu: Unknown symbol cfg80211_connect_done (err -2)
[ 77.826583] 8188eu: Unknown symbol cfg80211_unlink_bss (err -2)
[ 77.834431] 8188eu: Unknown symbol cfg80211_inform_bss_frame_data (err -2)
[ 77.843325] 8188eu: Unknown symbol cfg80211_new_sta (err -2)
[ 77.850940] 8188eu: Unknown symbol __cfg80211_alloc_reply_skb (err -2)
[ 77.859411] 8188eu: Unknown symbol cfg80211_rx_mgmt_ext (err -2)
[ 77.867403] 8188eu: Unknown symbol wiphy_apply_custom_regulatory (err -2)
[ 77.876210] 8188eu: Unknown symbol cfg80211_mgmt_tx_status_ext (err -2)
modprobe: can't load module 8188eu.ko (8188eu.ko): unknown symbol in module, or unknown parameter

这一看就是CFG80211编译报错了,跑了一下dmesg | grep cfg80211发现CFG80211根本没有加载,但是我之前明明配置好了开机自动加载的,不知道哪里把配置弄丢了,于是手动depmod cfg80211,然后再depmod 8188eu.ko

1
2
3
4
5
6
7
8
/lib/modules/6.6.52 # modprobe  cfg80211.ko 
[ 18.046491] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[ 18.123855] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[ 18.138554] Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
/lib/modules/6.6.52 # modprobe 8188eu.ko
[ 25.931742] 8188eu: loading out-of-tree module taints kernel.
[ 25.959171] bFWReady == _FALSE call reset 8051...
[ 26.008887] usbcore: registered new interface driver 8188eu

ifconfig -a,可以看到WLAN0信息,驱动工作成功。

关于cfg80211,之前为了避免出现cfg80211: failed to load regulatory.db的报错信息,参考文章1文章2将CFG80211配置成了模块加载形式,也就是CONFIG_CFG80211=m,不随Kernel启动。但是Kernel编译时会正常编译cfg80211.ko,位于./net/wireless/cfg80211.ko,将它拷贝到/lib/modules/6.6.52里手动modprobe就可以。


Linux RTL8188EUS Wifi驱动调试
http://akichen891.github.io/2025/04/17/LinuxWifi驱动调试/
作者
Aki
发布于
2025年4月17日
更新于
2025年4月17日
许可协议