Ubuntu 22.04双系统下Realtek 10ec:b852无线网卡未识别,编译驱动报错求助
Ubuntu 22.04双系统下Realtek 10ec:b852无线网卡未识别,编译驱动报错求助
别慌,我来帮你拆解问题并给出可行的解决方案~
问题根源分析
你遇到的编译错误,本质是内核版本兼容性问题:你当前用的Ubuntu内核是5.19,属于比较新的版本,而你下载的rtl8852be驱动源码里还在使用已经被Linux内核废弃的PCI DMA旧接口(比如pci_dma_sync_single_for_device、pci_map_single这类函数),新内核已经移除了这些接口的声明,所以编译器会报「隐式函数声明」的错误。
解决方案(推荐方案一,更省心)
方案一:使用适配新内核的官方维护驱动
Realtek的新网卡(包括你的10ec:b852)现在有专门的rtw89驱动分支,完美适配Ubuntu 22.04的5.15/5.19内核,步骤如下:
- 先清理原来的驱动源码目录(避免冲突):
cd /home/jakob/Programs/rtl8852be sudo make clean cd ../ sudo rm -rf rtl8852be
- 克隆适配版驱动源码:
git clone https://github.com/lwfinger/rtw89.git cd rtw89
- 编译并安装驱动:
make sudo make install sudo modprobe rtw89pci
- 重启电脑后,打开WiFi设置,应该就能看到可用网络了。
方案二:手动修改旧驱动源码(适合想折腾的情况)
如果你坚持要用原来的rtl8852be驱动,需要手动替换源码里的旧内核函数,具体修改/home/jakob/Programs/rtl8852be/platform/platform_linux_pc_pci.c文件:
- 将
pci_dma_sync_single_for_device替换为dma_sync_single_for_device,同时把第一个参数hwdev改成&hwdev->dev - 将
pci_dma_sync_single_for_cpu替换为dma_sync_single_for_cpu,参数改为&hwdev->dev - 将
pci_map_single替换为dma_map_single,参数改为&hwdev->dev - 将
pci_unmap_single替换为dma_unmap_single,参数改为&hwdev->dev - 将
pci_free_consistent替换为dma_free_coherent,参数改为&pdev->dev
举个具体的修改例子:
原来的代码行:
pci_dma_sync_single_for_device(hwdev, *bus_addr, size, direction);
修改后:
dma_sync_single_for_device(&hwdev->dev, *bus_addr, size, direction);
所有涉及上述函数的地方都按这个规则修改后,重新执行:
make sudo make install sudo modprobe rtl8852be
重启后验证网卡状态。
验证方法
驱动安装完成并重启后,执行以下命令查看网卡是否被正确识别:
sudo lshw -C network
如果输出里的网卡状态从UNCLAIMED变成claimed,说明驱动加载成功,WiFi选项应该会正常显示。
备注:内容来源于stack exchange,提问作者Jakob
相关产品推荐
相关产品推荐

