【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
日志与配置
# 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'
希望能提供解决方案,感谢各位维护者的辛苦工作