GitHub - brektrou/rtl8821CU: Realtek RTL8811CU/RTL8821CU USB Wi-Fi adapter driver for Linux
适用于 Linux 4.4.x 至 5.x
在构建此驱动程序之前,请确保已安装 make
、gcc
、linux-header/kernel-devel
、bc
和 git
。
首先,克隆此代码仓库
mkdir -p ~/build cd ~/build
git clone https://gitee.com/TUAL/rtl8821CU.git
cd ~/build/rtl8821CU
make
sudo make install
检查接口名称
使用 ifconfig
查看 WiFi 适配器的接口名称。通常,它的默认名称是 wlan0
,但根据内核和设备的不同,可能会有所变化。例如,在 Ubuntu 上,它可能会显示为 wlx + MAC 地址
(参考:https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/)。
如果出现这种情况,你可以通过参考上述链接禁用该功能,或者使用以下命令替换驱动程序中使用的名称:
grep -lr . | xargs sed -i '' -e '/ifcfg-wlan0/!s/wlan0/<你的设备名称>/g'
插入你的 USB WiFi 适配器
如果 WiFi 能被检测到,恭喜!如果没有,你可能需要通过以下步骤在终端中切换设备的 USB 模式:
-
使用以下命令查找你的 USB WiFi 适配器的设备 ID,例如
0bda:c811
:lsusb
-
使用以下命令切换模式(设备 ID 必须是你自己的): 需要安装
usb_modeswitch
(Arch Linux:sudo pacman -S usb_modeswitch
):sudo usb_modeswitch -KW -v 0bda -p c8111
-
如果 Bluetooth 处于非活动状态,启动 Bluetooth 服务:
systemctl start bluetooth.service
这样应该就能正常工作。
使其永久生效
如果上述步骤正常工作并且你希望避免定期执行
usb_modeswitch
,可以使其永久生效(在 Ubuntu 18.04 LTS 中有效):-
编辑
usb_modeswitch
规则:sudo nano /lib/udev/rules.d/40-usb_modeswitch.rules
-
在
LABEL="modeswitch_rules_end"
之前追加以下内容:# Realtek 8211CU Wifi AC USB ATTR{idVendor}=="0bda", ATTR{idProduct}=="c811", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p 1a2b"
确保将你的
ATTR{idVendor}
和-v
参数设置为lsusb
输出设备 ID 的左侧部分,将你的ATTR{idProduct}
和-p
参数设置为设备 ID 的右侧部分。例如,对于 Cudy AC600 USB WiFi 适配器,lsusb
命令的输出如下:
-
Bus 001 Device 016: ID 0bda:c811 Realtek Semiconductor Corp. 802.11ac NIC
那么在 /lib/udev/rules.d/40-usb_modeswitch.rules
中的配置应该是:
# Realtek 8211CU Wifi AC USB
ATTR{idVendor}=="0bda", ATTR{idProduct}=="c811", RUN+="/usr/sbin/usb_modeswitch -K -v 0bda -p c811"
GitHub - brektrou/rtl8821CU: Realtek RTL8811CU/RTL8821CU USB Wi-Fi adapter driver for Linux