Ubuntu20.04 TL-WDN5200免驱版 芯片应该是RTL8811CU
驱动地址:Linux Driver for USB WiFi Adapters that are based on the RTL8811CU, RTL8821CU and RTL8731AU Chipsets - v5.12.0 Github
该驱动支持的Linux核心号:
Kernels: 4.14 - 5.11 (Realtek)
Kernels: 5.12 - 5.17 (community support)
我的核心号为:5.13.0-39-generic
参考安装步骤:ubuntu 安装usb免驱无线网卡TP-LINK WN726N
在第二步执行
sudo modprobe 8821cu
后报错:
modprobe: ERROR: could not insert ‘8821cu’: Exec format error
而且右上角没有WiFi标志,说明安装失败。
而且输入lsusb -tv
查看USB无线网卡项,它的Driver=,即无驱动。
采用Ubuntu16.04 modprobe: ERROR: could not insert ‘8821ce’: Exec format error所示方法重新编译安装后仍然不成功,报一样的错误。
查CSDN后发现此种报错很可能是由于版本号对不上,执行
modinfo 8821cu.ko
输出的vermagic行显示有mod_unload字样,应该意思是模块未加载
但以下两个命令均不能加载模块
sudo insmod 8821cu
sudo modprobe 8821cu
参考Ubuntu 台式机 usb WiFi 接收器设置方法第三步
主要是以下命令
sudo apt-get install --reinstall linux-headers-generic
sudo apt-get install --reinstall linux-headers-$(uname -r)$
sudo apt-get install --reinstall build-essential
然后make clean
再重新执行:
make
sudo make install
sudo modprobe 8821cu
最终modprobe成功执行,重启后右上角显示出WiFi,输入lsusb -tv
后显示无线网卡对应的Driver=rtl8821cu。
(提一句:Ubuntu20.04可以在图形化界面配置WiFi,在终端输nm-connection-editor
打开网络配置,第一次使用手动新增一个WiFi的SSID和密码)
起作用的应该是中间指定了版本号的命令sudo apt-get install --reinstall linux-headers-$(uname -r)$
,有关指定版本号与否的区别参考Linux如何查看内核版本并安装内核头文件linux-headers-generic。
其中指出二者会安装不同内核版本的头文件,我驱动一直安不上的原因很可能是sudo apt-get install --reinstall linux-headers-generic
装的是5.4一个核心版本的Header,而我需要的是5.13.0-39-generic版本的,即本机最新Linux Core的Header。
重启后,又出现了WiFi不显示的问题,原因是Ubuntu系统把无线网卡识别成了存储设备。
进入/lib/udev/rules.d/文件夹,打开终端输入:
sudo vi ./40-usb_modeswitch.rules
按下I键进入插入模式,在文件末尾 LABEL=“modeswitch_rules_end” 前插入以下内容:
ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p 1a2b"
输入:x
保存并推出,然后重启即可。
上文我采用的是传统的编译安装驱动到内核的方式,所以该网卡驱动跟内核走;Linux内核一换,驱动不会自动再安装到新的内核中。
实际上,该驱动仓库的作者推荐使用自动方式,安装了DKMS后,执行:
sudo ./install-driver.sh
这样就不用手动在每次更新核心后重新安装驱动了。