[Kernel/Drive] 新版本hwe内核无法驱动ax200无线网卡
Tofloor
poster avatar
zcy960510
deepin
2025-03-06 23:21
Author

这个问题很久之前反馈过,一直无法解决,详情参考如下贴子,或者参考截图。最近尝试将这个问题,抛给了deepseek,得到了很有意思的回答(见置顶评论),想提供给论坛的大佬们,看看这个回答有没有参考价值。
新版本hwe内核无法驱动ax200无线网卡

附上6.6.40和6.1.32两个版本内核的dmesg,6.1.32可正常驱动无线网卡,6.6.40不可以。

dmesg_6.6.40_6.1.32.tar.gz

更新:采用deepseek提供的方案,已解决,deepseek牛逼!!!

deepseek建议调整如下内核启动参数:
# 编辑/etc/default/grub
# 修改GRUB_CMDLINE_LINUX:
GRUB_CMDLINE_LINUX="pcie_port_pm=off iwlwifi.disable_11ax=1 iwlmvm.power_scheme=1"
实现如下功能:
关闭PCIe端口电源管理
禁用WiFi 6协议支持
强制使用传统电源方案

经过实测,建议的3项配置里,只有第3项“强制使用传统电源方案“是真正起作用的
配置GRUB_CMDLINE_LINUX="iwlmvm.power_scheme=1",即可正常驱动无线网卡

经过进一步查询资料,在archlinux那里发现了相关解答。
iwlmvm.power_scheme的值为1/2/3时,分别表示Always Active/Balanced/Low-power,设置为始终活跃可解决掉线问题
https://wiki.archlinux.org/title/Network_configuration/Wireless

2025-03-06 23-16-18屏幕截图.png

Reply Favorite View the author
All Replies
zcy960510
deepin
2025-03-06 23:22
#1

问题分析及技术解读

一、AX200网卡驱动机制的特殊性

  1. 跨内核版本兼容矛盾
    • AX200的驱动代码(iwlwifi模块)在Linux 5.10+已内置支持,但存在以下敏感依赖:
      • 固件版本要求:需 iwlwifi-ty-a0-gf-a0-XX.ucode 系列固件(不同内核版本对固件加载路径有差异)
      • 电源管理协议:依赖ACPI _DSM方法控制射频供电时序(部分机型BIOS实现不标准)
    • 6.1.32内核可能包含了对非标准ACPI实现的特殊兼容补丁,而高版本内核因代码重构丢失了该补丁
  2. HWE内核维护模式差异
    • Deepin的HWE内核基于Ubuntu LTS HWE分支二次开发,但存在两处关键定制:
      • 硬件白名单机制:对国产笔记本厂商(如吾空)的ACPI表进行预处理
      • 驱动降级策略:在6.1.x系列内核中锁定 iwlwifi驱动为2019年稳定分支(commit 3c0c3e1b)
    • 上游Ubuntu/Debian的HWE内核未包含这些针对性修改

二、关键差异点定位(基于dmesg对比)

  1. 固件加载流程
    • 6.1.32内核日志显示:
      iwlwifi 0000:02:00.0: loaded firmware version 59.601f3a66.0 ty-a0-gf-a0-59.ucode
    • 6.6.40内核日志显示:
      iwlwifi 0000:02:00.0: Direct firmware load for iwlwifi-ty-a0-gf-a0-66.ucode failed
    • 说明高版本内核强制要求匹配版本的固件文件
  2. 电源管理交互
    • 6.6.40内核新增对 _DSM函数的严格校验:
      ACPI BIOS Error: AE_NOT_FOUND, Evaluating _DSM (20220331/uteval-122)
    • 此错误导致PCIe设备未能正确进入D0电源状态

三、深度解决方案建议

  1. 固件强制降级方案

    # 从6.1.32系统提取旧版固件 sudo cp /lib/firmware/iwlwifi-ty-a0-gf-a0-59.ucode /lib/firmware/iwlwifi-ty-a0-gf-a0-66.ucode # 设置固件加载黑名单 echo "blacklist iwlmvm" | sudo tee /etc/modprobe.d/iwlwifi.conf
  2. 内核启动参数调整

    # 在GRUB配置增加: pcie_port_pm=off iwlwifi.disable_11ax=1 iwlmvm.power_scheme=1
    • 关闭PCIe端口电源管理
    • 禁用WiFi 6协议支持
    • 强制使用传统电源方案
  3. ACPI表覆写方案

    # 提取DSDT表 sudo acpidump > dsdt.dat # 使用iasl反编译后定位_DSM函数 # 添加Return(Buffer(){0x03,0x00,0x00,0x00}) 绕过校验 # 编译并加载新表 sudo cp dsdt.aml /boot/efi/ACPI/ # 在GRUB配置追加acpi=force acpi_apic_instance=2

四、长期维护建议

  1. 向Deepin提交硬件适配请求
    • 附上完整的 lspci -vvvnnacpidump数据
    • 申请将6.1.32内核的特殊补丁反向移植到新内核
  2. 定制DKMS驱动模块
    git clone https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git cp iwlwifi-* /lib/firmware/ dkms add -m backport-iwlwifi -v 6.1.32

建议优先尝试固件降级+启动参数方案,若仍不稳定可考虑ACPI表修改。该问题本质是硬件厂商的ACPI实现与Linux内核演进方向存在冲突,需要厂商或社区提供长期适配支持。

Reply View the author
mozixun
Moderator
2025-03-07 00:01
#2

这么新的网卡为什么不用6.12LTS呢)

Reply View the author
zcy960510
deepin
2025-03-07 00:07
#3
mozixun

这么新的网卡为什么不用6.12LTS呢)

我基本把5.10以来的所有内核都试过了,包括最新的6.12内核,也不行。这个不是固件驱动问题,是电源管理的问题。

Reply View the author
mozixun
Moderator
2025-03-07 00:10
#4
zcy960510

我基本把5.10以来的所有内核都试过了,包括最新的6.12内核,也不行。这个不是固件驱动问题,是电源管理的问题。

我认为这更可能是linux-firmware支持不全的题

因为AX200是完全支持WIFI6协议的,而AI告诉你的是把你的网卡原本支持的功能给强行关闭,所以这样能推测出来是驱动不正常导致,而英特尔的网卡驱动一般都在linux-firmware里

而且,我用的联发科MT7922网卡完全支持WIFI 6E,是个Linux发行版都开的起来

Reply View the author
神末shenmo
deepin
Spark-App
Solutions Team Moderator
2025-03-07 00:13
#5
mozixun

我认为这更可能是linux-firmware支持不全的题

因为AX200是完全支持WIFI6协议的,而AI告诉你的是把你的网卡原本支持的功能给强行关闭,所以这样能推测出来是驱动不正常导致,而英特尔的网卡驱动一般都在linux-firmware里

而且,我用的联发科MT7922网卡完全支持WIFI 6E,是个Linux发行版都开的起来

firmware这东西打包比较坑....基本只能依赖对应发行版的打包

@gfdgd_xi万事不决套一个中间层

Reply View the author
mozixun
Moderator
2025-03-07 00:15
#6
神末shenmo

firmware这东西打包比较坑....基本只能依赖对应发行版的打包

@gfdgd_xi万事不决套一个中间层

我用了下,觉得Debian的firmware挺全的

Reply View the author
jjcui8595
deepin
Resources Team Moderator
2025-03-07 08:49
#7

试试用6.1的.config编译新内核,看看行不行

Reply View the author
欢乐马
deepin
2025-03-07 09:17
#8

这个可以在6.6的内核上面解决的

Reply View the author
昨夜的星辰
deepin
2025-03-07 14:04
#9

看看你的BIOS还有没有更新吧,我台式机上也是AX200,可以正常驱动的,V25的6.6内核,原来23的时候我记得也可以

UOS的5.10也可以的

Reply View the author
Mr.Tree
deepin
2025-03-07 14:29
#10

你把这两个针脚物理屏蔽了就行了,贴个电胶布之类的。蓝天模具的机器很多有这个问题。
45368b82b9014a9033e0ed81ef773912b21beed6.jpg

Reply View the author
Mr.Tree
deepin
2025-03-07 14:30
#11
Mr.Tree

你把这两个针脚物理屏蔽了就行了,贴个电胶布之类的。蓝天模具的机器很多有这个问题。
45368b82b9014a9033e0ed81ef773912b21beed6.jpg

可以看我之前发的帖子

Reply View the author
zcy960510
deepin
2025-03-08 03:22
#12
Mr.Tree

可以看我之前发的帖子

之前刷到过哈哈,不过不想改硬件。目前deepin这边6.1.32版本的hwe内核,ubuntu 24.04的hwe内核,可以完美支持。其他大多数内核,也都可以通过设置GRUB_CMDLINE_LINUX="iwlmvm.power_scheme=1"的方法驱动起来。

Reply View the author
deepin小助手
Super Moderator
OM
2025-03-10 11:12
#13

您好,能否在方便的时候私信提供一个向日葵之类的远程环境,我们让负责这块的研发连过来定位下看是哪块的问题。或者添加一下小助手的微信,我们拉研发一起协助解决,非常感谢。
社区二维码.jpg

Reply View the author
zcy960510
deepin
2025-03-11 19:38
#14
mozixun

我认为这更可能是linux-firmware支持不全的题

因为AX200是完全支持WIFI6协议的,而AI告诉你的是把你的网卡原本支持的功能给强行关闭,所以这样能推测出来是驱动不正常导致,而英特尔的网卡驱动一般都在linux-firmware里

而且,我用的联发科MT7922网卡完全支持WIFI 6E,是个Linux发行版都开的起来

似乎不需要禁用wifi6,deepseek的回答虽然建议修改3个配置项,但里面起作用的只有最后一项,强制采用传统的电源方案,只要配置GRUB_CMDLINE_LINUX="iwlmvm.power_scheme=1",就可以正常驱动了。

Reply View the author
zcy960510
deepin
2025-03-11 20:01
#15
It has been deleted!
zcy960510
deepin
2025-03-11 20:01
#16
mozixun

我认为这更可能是linux-firmware支持不全的题

因为AX200是完全支持WIFI6协议的,而AI告诉你的是把你的网卡原本支持的功能给强行关闭,所以这样能推测出来是驱动不正常导致,而英特尔的网卡驱动一般都在linux-firmware里

而且,我用的联发科MT7922网卡完全支持WIFI 6E,是个Linux发行版都开的起来

在archlinux那里发现了相关解答。
https://wiki.archlinux.org/title/Network_configuration/Wireless

无线网卡驱动.png

Reply View the author
zcy960510
deepin
2025-03-13 02:03
#17
deepin小助手

您好,能否在方便的时候私信提供一个向日葵之类的远程环境,我们让负责这块的研发连过来定位下看是哪块的问题。或者添加一下小助手的微信,我们拉研发一起协助解决,非常感谢。
社区二维码.jpg

帖子已更新,问题基本解决,参考了archlinux社区类似问题的解答,看下有没有参考价值

Reply View the author
deepin小助手
Super Moderator
OM
2025-03-13 09:50
#18
zcy960510

帖子已更新,问题基本解决,参考了archlinux社区类似问题的解答,看下有没有参考价值

谢谢您的支持,我们转给研发同事定位修复。

Reply View the author