You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04内核更新后编译RTL8852BE手动驱动报错求助

Ubuntu 22.04内核更新后编译RTL8852BE手动驱动报错求助

兄弟,我太懂你每次Ubuntu内核更新后都要手动重新编译RTL8852BE驱动的麻烦了,这次的报错其实是因为内核5.19+版本移除了旧的PCI DMA相关函数,换成了通用的DMA接口,驱动代码里的旧函数调用就失效了。给你两个可行的解决办法,按步骤来就行:

方法一:手动修改驱动代码适配新内核

你只需要修改报错的platform/platform_linux_pc_pci.c文件里的函数调用,把旧的pci前缀函数替换成对应的dma前缀函数:

  1. 打开该文件:
    nano /home/user/rtl8852be/platform/platform_linux_pc_pci.c
    
  2. 找到以下几行代码,逐个替换函数名:
    • 把pci_dma_sync_single_for_device替换成dma_sync_single_for_device
    • 把pci_dma_sync_single_for_cpu替换成dma_sync_single_for_cpu
    • 把pci_map_single替换成dma_map_single
    • 把pci_unmap_single替换成dma_unmap_single
    • 把pci_free_consistent替换成dma_free_coherent
  3. 保存退出(按Ctrl+O,回车,再Ctrl+X)
  4. 重新执行编译命令:
    make clean
    make
    sudo make install
    
    这样应该就能编译通过,WiFi也能正常工作了。

方法二:更新驱动仓库到最新版本(更省心)

大概率驱动仓库已经更新了适配新内核的代码,你可以先拉取最新代码再编译:

  1. 进入驱动目录:
    cd /home/user/rtl8852be
    
  2. 拉取最新代码:
    git pull
    
  3. 然后再执行编译安装命令:
    make clean
    make
    sudo make install
    

额外建议:用DKMS自动管理驱动(一劳永逸)

以后不想每次内核更新都手动编译的话,可以用DKMS(Dynamic Kernel Module Support)来管理驱动,它会在每次内核更新后自动重新编译驱动:

  1. 先安装DKMS:
    sudo apt install dkms
    
  2. 把驱动添加到DKMS:
    sudo dkms add ./rtl8852be
    
  3. 安装驱动到DKMS:
    sudo dkms install rtl8852be/1.0.0  # 这里的版本号要对应你驱动的实际版本,可以看Makefile里的定义
    
    以后再更内核,重启后驱动就会自动适配,不用再手动操作了。

备注:内容来源于stack exchange,提问作者cauliflower251

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 11:57:49