升级Ubuntu 22.04.3 LTS时安装RTL8723BE无线网卡驱动报错的解决求助
升级Ubuntu 22.04.3 LTS时安装RTL8723BE无线网卡驱动报错的解决求助
嘿,我来帮你捋捋这个问题。首先看你的报错信息,核心矛盾是旧的rtlwifi_new驱动代码和Ubuntu 22.04搭载的5.15内核不兼容了——具体来说,驱动里用的uninitialized_var()宏在新内核的编译环境下语法解析逻辑变了,导致编译器误以为value、valueHi这些变量没被声明,所以抛出了错误。
先试试系统自带驱动的修复方案
你的lspci输出显示系统已经加载了官方的rtl8723be驱动,但可能默认参数有问题才导致WiFi不能用。可以先尝试调整自带驱动的参数,说不定不用折腾第三方驱动就能解决:
- 先卸载你已经编译到一半的第三方驱动(如果有的话):进入驱动目录执行
sudo make uninstall,然后重启系统 - 重新加载自带驱动:
sudo modprobe rtl8723be - 调整天线优先级(RTL8723BE常见的信号问题修复):
重启系统后如果信号还是不好,可以把sudo echo "options rtl8723be ant_sel=1" | sudo tee /etc/modprobe.d/rtl8723be.confant_sel=1改成ant_sel=2再试一次。
如果必须用第三方驱动,修改代码适配新内核
要是自带驱动确实不行,那我们需要修改旧驱动的代码来适配5.15内核的编译规则:
- 打开报错的文件:
nano /home/sns/Downloads/rtlwifi_new/rtl8192cu/hw.c - 找到第一个报错的函数
_rtl92cu_init_chipN_one_out_ep_priority,把里面的:
改成:u16 uninitialized_var(value);
要是想避免编译器的未使用警告,也可以改成:u16 value = 0;u16 value __attribute__((unused)) = 0; - 同样处理第二个函数
_rtl92cu_init_chipN_two_out_ep_priority里的两行:
把
分别改成:u16 uninitialized_var(valueHi); u16 uninitialized_var(valueLow);u16 valueHi = 0; u16 valueLow = 0; - 保存文件后,重新执行编译安装:
make clean make sudo make install - 重启系统后加载驱动:
sudo modprobe rtl8723be
这样修改后,编译器就能正确识别变量,应该就能顺利编译通过了。
备注:内容来源于stack exchange,提问作者nupro
相关产品推荐
相关产品推荐

