前言
上個月沖動消費攢了一臺華擎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上的地址??梢娋W卡芯片的型號是RTL8821CU。

注意:如果通過lsusb命令返回的設備ID(如1a2b)不能找到驅動,說明系統(tǒng)沒有將這個設備識別成網卡,而是當成了USB存儲。這就需要再次進入終端,執(zhí)行usb_modeswitch命令切換設備模式:
sudo usb_modeswitch -KW -v 0bda -p 1a2b
此后設備ID會發(fā)生變化,變?yōu)闊o線網卡真實的設備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的系統(tǒng)有效,>=5.19則會出現(xiàn)編譯錯誤。爬Issues區(qū)發(fā)現(xiàn),>=5.19的內核應該使用:
git clone https://github.com/morrownr/8821cu-20210916.git
進入源碼目錄,執(zhí)行:
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
然后重啟主機,就會出現(xiàn)選擇無線網絡的菜單,大功告成。

注意如果前面執(zhí)行過usb_modeswitch命令,為了避免每次開機重復此步驟,需要編輯usb_modeswitch的規(guī)則文件:
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
晚安。