mt7921u 无法在取消授权后重新连接 AP(WPA2 Client 模式)

LittleMio】 在 https://github.com/istoreos/istoreos/issues/2479 发布:
硬件设备:NanoPi R5S
固件版本:istoreos-24.10 branch (25.100.35637~6506bd3)
无线网卡:

/:  Bus 006.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    ID 1d6b:0003  
    |__ Port 001: Dev 002, If 0, Class=[unknown], Driver=mt7921u, 5000M
        ID 0e8d:7961

模式:Client, WPA Supplicant (built-in full)

问题描述

在使用 MT7921U 无线网卡作为 Client 模式连接 WiFi 网络时,当遇到 deauthenticated 事件(例如:路由器更换群组密钥或临时断连)后,WPA Supplicant 无法自动重新建立连接,导致无线网络永久断开,系统反复尝试失败。

该问题在 iStoreOS 24.10 的所有版本均可复现。

复现步骤

1.将设备配置为 Client 模式,连接任意 WPA2 路由器
2.保持连接稳定约24小时
3.路由器侧触发群组密钥轮换
4.查看日志,出现如下事件

kern.info kernel: [263980.830999] phy1-sta0: deauthenticated from <BSSID> (Reason: 16=GROUP_KEY_HANDSHAKE_TIMEOUT)

5.之后设备无法重新连接该 AP,反复尝试失败(使用了 Travelmate 管理无线网),日志持续提示

user.info trm-2.1.3-r3[5001]: can't connect to uplink 'radio1/Xiaomi_73DB/<BSSID>' (1/5)
kern.emerg kernel: [264145.594664] unregister_netdevice: waiting for phy1-sta0 to become free. Usage count = 2

预期行为

应能在被取消授权后自动重新关联并连接 AP,而不是进入死循环或卡死

实际行为

断开后不能自动重连。

phy1-sta0 无法释放,资源卡死,TRM 状态长期为 “not connected”。

需要手动 killall -9 wpa_supplicant && wifi up 才能恢复连接

附加信息

同样配置下,使用其他 USB 网卡没有该问题

搜索看到使用 mt7921u 驱动的设备在 OpenWrt 主线也曾报告类似问题,可能为驱动层 bug

日志与配置

logread.log

# wireless

config wifi-device 'radio0'
	option type 'mac80211'
	option path '3c0800000.pcie/pci0002:00/0002:00:00.0/0002:01:00.0/0002:02:07.0/0002:04:00.0'
	option band '5g'
	option channel '161'
	option htmode 'HE80'
	option country 'AU'
	option cell_density '0'

config wifi-iface 'wifinet1'
	option device 'radio0'
	option mode 'ap'
	option ssid 'BSSID'
	option encryption 'psk-mixed'
	option key '***'
	option network 'lan'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'platform/fcc00000.usb/xhci-hcd.6.auto/usb6/6-1/6-1:1.0'
	option band '5g'
	option channel '161'
	option htmode 'HE80'
	option cell_density '0'

config wifi-iface 'trm_uplink2'
	option device 'radio1'
	option mode 'sta'
	option network 'wwan'
	option ssid 'Xiaomi_73DB'
	option bssid '46:F7:**:**:CF:6E'
	option encryption 'psk2+ccmp'
	option key '****'
	option disassoc_low_ack '0'
	option max_inactivity '600'
	option skip_inactivity_poll '1'
	option teardown_on_down '1'
	option disabled '0'

希望能提供解决方案,感谢各位维护者的辛苦工作