前言
上个月冲动消费攒了一台华擎DeskMini X300小主机,装了Ubuntu 22.04,用来解决M1芯片MacBook Pro上无法编译x86_64架构的StarRocks和ClickHouse的问题。
当时图便宜买了不带无线网卡的版本(书房有网线,并且自带的AC3168比较emm)。但是最近想把它拿到卧室使用,又不想拆机装M.2网卡,就用闲置的USB无线网卡(型号是水星UD6H)凑合一下。
根据设备ID寻找驱动
将USB无线网卡插入接口,打开终端,运行lsusb
命令,定位到网卡对应的那一行:
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 0bda:c811 Realtek Semiconductor Corp. 802.11ac NIC ## 这里
Bus 003 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
浏览器打开https://linux-hardware.org/,点击右上角Find Parts,输入Vendor ID和Device ID,点击Find按钮。
点击搜索结果进入详情页,就可以找到第三方驱动在GitHub上的地址。可见网卡芯片的型号是RTL8821CU。
注意:如果通过lsusb
命令返回的设备ID(如1a2b
)不能找到驱动,说明系统没有将这个设备识别成网卡,而是当成了USB存储。这就需要再次进入终端,执行usb_modeswitch
命令切换设备模式:
sudo usb_modeswitch -KW -v 0bda -p 1a2b
此后设备ID会发生变化,变为无线网卡真实的设备ID(如c811
),再次搜索即可。
下载并安装驱动
先安装必要的依赖:
sudo apt install -y linux-headers-$(uname -r) build-essential bc git libelf-dev rfkill iw dkms
拉取驱动源码:
git clone https://github.com/brektrou/rtl8821CU.git
注意这个repo只对内核版本<5.19的系统有效,>=5.19则会出现编译错误。爬Issues区发现,>=5.19的内核应该使用:
git clone https://github.com/morrownr/8821cu-20210916.git
进入源码目录,执行:
make
sudo make install
完成之后,检查驱动文件是否正确安装:
ll /lib/modules/$(uname -r)/kernel/drivers/net/wireless/8821cu.ko
-rw-r--r-- 1 root root 4985928 4月 17 00:01 8821cu.ko
然后重启主机,就会出现选择无线网络的菜单,大功告成。
注意如果前面执行过usb_modeswitch
命令,为了避免每次开机重复此步骤,需要编辑usb_modeswitch
的规则文件:
sudo vim /lib/udev/rules.d/40-usb_modeswitch.rules
在最后一行前面添加:
# Realtek 8821CU Wifi AC USB
ATTR{idVendor}=="0bda", ATTR{idProduct}=="1a2b", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p 1a2b"
保存退出即可。文章来源:https://www.toymoban.com/news/detail-533279.html
The End
晚安。文章来源地址https://www.toymoban.com/news/detail-533279.html