👁 650

Intel BE200 是 Intel 旗下首款 WiFi 7 (802.11be) M.2 网卡,Linux 下用 iwlwifi-mld 驱动。这卡有个坑:5G 频段连有密码的 AP 死活连不上,NetworkManager 不停弹”需要密钥”,密码输多少遍都没用。

不止 BE200——笔记本上的 AX210 也一样中招。我在多个 Linux 发行版上都踩到了——Arch、Fedora、Ubuntu 全一样。2.4G 有密码能连,5G 无密码(open)也能连,唯独 5G + WPA 密码不行。换过好几个路由器都一样,说明不是 AP 端的问题。


现象

场景 能否连接
2.4G + WPA2 密码 ✅ 正常
5G + open(无密码) ✅ 正常
5G + WPA2 密码 ❌ 超时,NM 报”需要密钥”

关键特征:

  1. 密码绝对没错——同一密码 2.4G 能连,手机/其他设备 5G 也能连
  2. 5G 无密码能连——说明射频和 5G 频段本身没问题
  3. 换路由器也一样——不是某个 AP 的兼容性问题
  4. NM 反复弹”需要密钥”——密码完全正确,输多少遍都没用
  5. AX210 也一样——不止 BE200,Intel WiFi 6E/7 系列都受影响
  6. 路由器没有 WiFi 7 模式——跟 AP 支持无关,是驱动端主动塞 EHT IE

根因

BE200 的 iwlmld 驱动在 5G 频段发出的 association request 帧,与 AP 不兼容。

完整链路:

BE200 → 5G auth (认证) → ✅ 成功(射频和链路层通信正常)
      → association request → ❌ AP 无响应
      → 重试 3 次 → 超时
      → NetworkManager 把 association 超时当成密码错误
      → 弹窗"需要密钥"

为什么 5G 无密码能连、2.4G 有密码也能连:

  • 5G 无密码(open):走 open auth,关联流程不同,不需要 4-way handshake 阶段的交互
  • 2.4G 有密码:2.4G 频段没有 no IR 限制,association 帧格式也兼容
  • 5G 有密码(WPA-PSK):association 后还需要 4-way handshake,BE200 的 association request 里带的 IE(可能是 EHT/WiFi 7 相关的)让 AP 固件无法处理,直接不回复

简单说:驱动主动在 association request 里塞了 WiFi 7 (EHT) IE,AP 看不懂,装没看见。

注意:我的路由器根本没有 WiFi 7 模式——是驱动端单方面宣告自己支持 WiFi 7,不管 AP 支不支持都往 association 帧里塞 EHT IE。AP 收到看不懂的 IE 就直接忽略这个关联请求,不回复。所以这不是”路由器不支持 WiFi 7″的问题,是驱动太积极的问题。


解决方案(按优先级)

方案 1:更新内核

新版内核的 iwlmld 驱动可能修复了 5G association 兼容性。

sudo dnf update kernel

# Ubuntu
sudo apt update && sudo apt install linux-generic

# Arch
sudo pacman -Syu linux

我当前内核 6.19.10,7.1.3 有更新可用。先试这个,成本最低。

方案 2:禁用 WiFi 7 (802.11be)

如果更新内核还不行,加载驱动时禁用 WiFi 7,让 BE200 退回 WiFi 6 模式工作:

# 临时测试
sudo modprobe -r iwlmld
sudo modprobe iwlmld disable_11be=1

# 永久生效
echo "options iwlmld disable_11be=1" | sudo tee /etc/modprobe.d/iwlmld.conf

禁用 WiFi 7 后,association request 里不再带 EHT IE,AP 就能正常处理了。代价是失去 WiFi 7 特性(MLO、320MHz 等),但 WiFi 6 (802.11ax) 仍然可用,5G 也能连了。

方案 3:路由器端调整

如果不想动客户端,可以试路由器端:

  1. 5G 加密改为纯 WPA2-AES——WPA1/2 混合模式 + TKIP 可能跟 BE200 不兼容
  2. 5G 带宽降一档——从 HT160 改 HT80 或 HT40 试试
  3. 关闭 802.11be / WiFi 7——如果路由器有这个选项

这个方案治标不治本,换一个路由器又得改一遍。


已做的准备

在排查过程中已经确认的环境:

# GRUB 已加 regdom
# /etc/default/grub:
GRUB_CMDLINE_LINUX="... ieee80211_regdom=CN"

# iwlwifi-mld 固件已更新到最新
ls /lib/firmware/iwlwifi-mld-*
# iwlwifi-mld-b0-fm-c0-89.ucode  (20260622)

# 当前内核
uname -r
# 6.19.10

排查过程备忘

如果以上方案都不行,可以手动抓包确认:

# 1. 看当前连接状态
nmcli device wifi list
iw dev wlan0 link

# 2. 开启调试日志
echo 0x1 | sudo tee /sys/module/iwlmld/parameters/debug 2>/dev/null || true
sudo dmesg | grep -iE 'iwl|assoc|auth|be200' | tail -30

# 3. 手动连接看详细日志
sudo iw wlan0 scan | grep -E 'SSID|signal|capability'
nmcli device wifi connect "你的SSID" password "你的密码" --ask

# 4. 看 wpa_supplicant 日志
sudo journalctl -u NetworkManager --since "5 min ago" | grep -iE 'assoc|auth|timeout|key'

典型日志特征:

wlan0: association request to AP timed out
wlan0: deauthenticating from AP by local choice (reason=3)
nm-device-wifi: Activation: (wifi) association took too long
nm-device-wifi: Activation: (wifi) asking for new secrets

“asking for new secrets” 就是 NM 把 association 超时误判为密码错误的铁证。


总结

说明
问题 BE200 5G + WPA 密码连不上
根因 iwlmld 驱动 5G association 帧带 WiFi 7 IE,AP 不兼容
误报 NM 把 association 超时当密码错误
首选方案 更新内核(新驱动可能已修)
保底方案 disable_11be=1 禁 WiFi 7
影响范围 所有 Linux 发行版 + 所有 5G 有密码 AP

这不是你密码错了,是驱动跟 AP 说的话 AP 听不懂。


—— godsun.pro · 密码没错,是网卡嘴瓢了