RTL8188GU+Archlinux

网卡信息:COMFAST AX3000免驱USB无线网卡

解决问题:win11使用正常;Archlinux无法正常识别使用网卡,需自行配置驱动

准备&驱动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 插入网卡,终端输入,得到网卡芯片信息
❯ lsusb
# 找到输出如下,确定芯片型号为RTL8188GU
Bus 003 Device 007: ID 0bda:1a2b Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter (Driver CDROM Mode
# 发现模式(Driver CDROM Mode)不对,被识别为cdrom,所以尝试使用usb_modeswitch命令切换模式
❯ yay -S usb_modeswitch # aur可下载
sudo usb_modeswitch -KW -v 0bda -p 1a2b # 切换为wifi模式
# 被识别为cdrom,也可以尝试卸载
❯ eject /dev/cdrom

# 安装相应的内核头文件
sudo pacman -S linux-headers
# 安装base-devel软件包
sudo pacman -S base-devel
# 安装驱动(对于archlinux,有[aur包](https://aur.archlinux.org/packages/rtl8xxxu-dkms-git#:~:text=I%20recently%20had%20problems%20getting%20my%20RTL8188GU%20wireless)
❯ yay -S rtl8xxxu-dkms-git

模块&配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 列出连接的usb设备
❯ lsmod # 输出识别到对应usb网卡(无线标准:IEEE802.11ax)
Bus 003 Device 006: ID 0bda:c832 Realtek Semiconductor Corp. 802.11ax WLAN Adapter
❯ lspci | grep Network # 输出识别到原集成网卡(这里是Intel的)
0000:00:14.3 Network controller: Intel Corporation Alder Lake-P PCH CNVi WiFi (rev 01)
# 查看默认网关所在接口,列出路由表
❯ ip route # 输出可得wlo1是默认网关所在接口
❯ default via 192.168.1.1 dev wlo1
# 查看wlo1接口对应的硬件信息
ls -l /sys/class/net/wlo1/device/driver/module # 输出有iwlwifi是intel相关的网卡相关的信息,说明用的不是Realtek网卡
❯ lrwxrwxrwx 1 root root 0 9月10日 14:59 /sys/class/net/wlo1/device/driver/module -> ../../../../module/iwlwifi
# 运行下面命令发现无输出,模块未被正确加载
❯ lsmod | grep rtl8xxxu

# 查看内核模块配置文件
ls /etc/modprobe.d
# 输出有 blacklist-rtl8xxxu.conf 与 rtl8xxxu_git.conf 两个文件
cat /etc/modprobe.d/blacklist-rtl8xxxu.conf
blacklist rtl8xxxu
# 输出blacklist rtl8xxxu,即被添加到黑名单,需修改
# 需要将文件代码注释掉或者删掉
cat /etc/modprobe.d/rtl8xxxu_git.conf # 内核加载参数不用修改
options rtl8xxxu_git ht40_2g=1 # ht40_2g=1参数启用了2.4GHz频段下的HT40模式
# 将原来的intel网卡添加到黑名单防止冲突
sudo sh -c 'echo "blacklist iwlwifi" > /etc/modprobe.d/blacklist-iwlwifi.conf'

加载&检查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 切换模式后可能需要重新加载rtl8xxxu驱动来确保设备能够被正确识别
# 实在不行也可以重启电脑再运行加载
sudo modprobe -r rtl8xxxu
sudo modprobe rtl8xxxu
# 再次运行检测模块是否被加载
❯ lsmod | grep rtl8xxxu
rtl8xxxu 339968 0
mac80211 1708032 1 rtl8xxxu
cfg80211 1409024 2 mac80211,rtl8xxxu
# 输出来看 rtl8xxxu 模块已经被加载,并且依赖于 mac80211 和 cfg80211 模块

# 检查网络连接
ifconfig
# 没有ifconfig
sudo pacman -S net-tools

注意:

  1. 如果usb wifi 适配器基于 RTL8188GU 或 RTL8192FU 芯片,需要先使用命令 usb_modeswitcheject 将其切换到“Wifi 模式”。
  2. 在安装此软件包之前,请确保您的系统已安装相应的内核头文件和 base-devel 软件包。
  3. 必须手动将安装的驱动程序列入黑名单或删除除内核内 rtl8xxxu 驱动程序之外的任何冲突驱动程序。

参考

https://melonedo.github.io/2024/05/13/RTL8188GU.html