从睡眠状态唤醒时,有时我的 Linux 笔记本电脑不会重新建立其 Wi-Fi 互联网连接。
有趣的是,重启即可修复,尽管必须进行完全关机/重启有点麻烦。
换句话说,当我从睡眠中醒来时,我的 HP Debian Buster v10.4 笔记本电脑有时无法重新连接到我的家庭接入点。这种情况发生的概率大约是每 6 次过夜中就有 1 次。
注意到 Wi-fi 已断网后,单击 也rescan for wireless networks
无法解决问题。此外,iw wlan0 scan
(或明确iw dev wlan0 scan
)给出:“命令失败:网络已断网 (-100)”。
仔细研究输出journalctl -n 1000 -u NetworkManager -u wpa_supplicant
后,我可以看到,在“NetworkManager 状态现在处于睡眠状态”(即唤醒时)这一行之后不久,第一个问题似乎出现在这样一行:“设备(wlan0):请求者接口状态:已完成->已禁用“。
我认为这应该是“...完成->断开连接”,它出现在工作唤醒中,即当WI-fi在唤醒后再次正常工作时。
无法修复的问题:
- 注销并重新登录;
- 睡一觉又醒来,
- 冬眠然后醒来
- 重新启动网络管理器(使用
$ sudo systemctl restart NetworkManager.service
) - 跑步
$ sudo nmcli networking on
- 使用以下命令删除并重新创建
wlan0
网络设备:iw dev wlan0 del
,然后iw phy phy0 interface add wlan0 type managed addr ca:xxx:4b
。尽管这似乎有效,但 wifi 仍然无效。
我还检查过,$ rfkill list
没有报告任何堵塞情况。
以下是 nmcli 在以下情况下的状态报告:失败的(互联网中断)状态。请注意普通州以下。 (我混淆了真实地址。)
$ nmcli device show wlan0
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 00:26:##:##:##:2A
GENERAL.MTU: 1500
GENERAL.STATE: 20 (unavailable) <-- this is not right
GENERAL.CONNECTION: --
GENERAL.CON-PATH: --
...
另外,以下是来自普通的有效的 wifi 连接:
$ nmcli device show wlan0
GENERAL.DEVICE: wlan0
GENERAL.TYPE: wifi
GENERAL.HWADDR: 00:26:##:##:##:2A
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected) <--- this is when it works
GENERAL.CONNECTION: Auto NETGEAR14
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]: 192.168.1.128/32
IP4.GATEWAY: 192.168.1.1
IP4.ROUTE[1]: dst = 192.168.1.128/32, nh = 0.0.0.0, mt = 600
IP4.ROUTE[2]: dst = 192.168.1.1/32, nh = 0.0.0.0, mt = 600
IP4.ROUTE[3]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.ROUTE[4]: dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 600
IP4.DNS[1]: 192.168.1.1
IP6.ADDRESS[1]: fe80::...:7f2a/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 600
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
有什么想法吗?有没有办法重新初始化phy0收音机司机?
答案1
调试此问题的最佳方法是检查连接消失时的系统日志消息:
journalctl -n 1000 -u NetworkManager -u wpa_supplicant
NetworkManager 不直接使用内核 Wi-Fi API,而是依靠 wpa_supplicant 来实现。它可能wpa_supplicant.service
卡住了,或者一直崩溃,或者与其他Wi-Fi 工具(例如 iwd、connman 或由其他应用程序意外启动的不同 wpa_supplicant 实例)。
您可以通过运行以下命令来增加 NetworkManager 的详细程度:
nmcli gen log level debug
并运行 wpa_supplicant:
busctl set-property fi.w1.wpa_supplicant1 \
/fi/w1/wpa_supplicant1 \
fi.w1.wpa_supplicant1 DebugLevel s debug
此外,尝试完全绕过 NM 和 w_s 并直接要求内核扫描网络 - 如果可行,则问题很可能出在用户空间方面;如果不行,则很可能出在驱动程序/硬件方面:
iw wlan0 scan