在Ubuntu主机上使用USB无线网卡

前言

上个月冲动消费攒了一台华擎DeskMini X300小主机,装了Ubuntu 22.04,用来解决M1芯片MacBook Pro上无法编译x86_64架构的StarRocks和ClickHouse的问题。

在Ubuntu主机上使用USB无线网卡_第1张图片
因为没什么特殊需求所以没用Zen 3的5600G / 5700G

当时图便宜买了不带无线网卡的版本(书房有网线,并且自带的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按钮。

在Ubuntu主机上使用USB无线网卡_第2张图片

点击搜索结果进入详情页,就可以找到第三方驱动在GitHub上的地址。可见网卡芯片的型号是RTL8821CU。

在Ubuntu主机上使用USB无线网卡_第3张图片

注意:如果通过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

然后重启主机,就会出现选择无线网络的菜单,大功告成。

在Ubuntu主机上使用USB无线网卡_第4张图片

注意如果前面执行过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"

保存退出即可。

The End

晚安。

你可能感兴趣的:(ubuntu,linux,运维,服务器)