在Ubuntu 24.04上配置Realtek USB无线网卡(ID 0bda:a192)
问题分析
之前在Ubuntu22.04上安装的驱动rtl8192fuhttps://gitee.com/BrightXu/rtl8192fu.git
在系统升级为24.04后无法使用,重新编译报错,无法编译成功。
解决方法
1. 确认内核版本
- 查看USB无线网卡:
lsusb
可以看到一个Bus 001 Device 004: ID 0bda:a192 Realtek Semiconductor Corp. DISK
- 查看内核版本:
当前linux版本为6.8.0-49-generic,根据仓库的说明rtl8192fu仅支持的内核版本为:5.2 ~ 5.19 / 6.0 ~ 6.4,因此无法编译成功uname -a
2. 修改源码并编译
-
下载源码
- 原始仓库:
https://gitee.com/BrightXu/rtl8192fu.git
- 原始仓库:
-
修改源码文件:os_dep/linux/ioctl_cfg80211.c
由于linux.6.8.0内核的代码中一些函数比如cfg80211_ch_switch_started_notify,cfg80211_ch_switch_notify,函数的借口发生变化,因此这里需要更改部分调用代码 -
修改源码文件:os_dep/linux/usb_intf.c
同理这里也需要更改部分调用代码 -
修改后的代码:
https://github.com/iefengjian/rtl8192fu.git
-
编译安装:
cd rtl8192fu make -j$(nproc) sudo make install
3. 切换设备模式
- 使用usb_modeswitch:
这个命令会尝试将设备切换到网络模式。sudo usb_modeswitch -KW -v 0bda -p a192
4. 安装驱动
- 加载驱动模块:
此时就可以连接无线网络了。sudo modprobe 8192fu
注意事项
- 内核版本: 在ubuntu24.04,内核版本为6.8.0-49-generic上尝试成功,内核版本相同应该没有问题。
- 其他配置: /etc/modprobe.d/rtl8192fu-alias.conf,这个文件不知道干嘛的,我的内容如下:
alias usb:v0BDAp318Bd*dc*dsc*dp*icFFiscFFipFFin* 8192fu
alias usb:v7392pB722d*dc*dsc*dp*icFFiscFFipFFin* 8192fu
alias usb:v0B05p18F1d*dc*dsc*dp*icFFiscFFipFFin* 8192fu
alias usb:v0BDApA725d*dc*dsc*dp*icFFiscFFipFFin* 8192fu
alias usb:v0BDApF192d*dc*dsc*dp*icFFiscFFipFFin* 8192fu
希望这些信息能帮助您解决问题!