当我唤醒挂起一段时间的笔记本电脑时,WiFi 信号被上下箭头取代。连接仍然有效,但仍然很烦人。重新启动网络管理器有效,但只是暂时的解决办法。
我从某处读到,这可能是因为连接被重命名,从而导致它认为我是通过以太网而不是 WiFi 连接的?
我怎样才能解决这个问题?
编辑:我注意到打开/关闭 WiFi 后偶尔也会发生这种情况。
答案1
自动方法
使用 sudo powers 创建包含以下内容的文件/lib/systemd/system-sleep/iwlwifi-reset
:
#!/bin/sh
# NAME: /lib/systemd/system-sleep/iwlwifi-reset
# DESC: Resets Intel WiFi after a long suspend.
# DATE: Apr 1, 2017. Modified April 8, 2017.
# NOTE: Per AU comment restart network.
MYNAME=$0
restart_wifi() {
/usr/bin/logger $MYNAME 'restart_wifi BEGIN'
# /sbin/modprobe -v -r iwldvm # This removes iwlwifi too
# /sbin/modprobe -v iwlwifi # This starts iwldvm too
systemctl restart NetworkManager.service
/usr/bin/logger $MYNAME 'restart_wifi END'
}
/usr/bin/logger $MYNAME 'case=[' ${1}' ]'
case "${1}/${2}" in
hibernate|suspend|pre*)
;;
resume|thaw|post*)
restart_wifi;;
esac
使用以下方法将脚本标记为可执行:
sudo chmod a+x /lib/systemd/system-sleep/iwlwifi-reset
要从挂起状态唤醒后检查脚本的执行情况,请使用:
cat /var/log/syslog | grep iwlwifi
如果它在测试期间似乎有效,请不要太兴奋,因为有时这个脚本在短暂停顿后有效,但在长时间暂停后不起作用。
如果这不起作用,在尝试手动方法在下一部分中,将命令放在sleep 5
行之前restart_wifi;;
。
手动方法
如果自动方法不起作用,请使用 sudo powers 创建/usr/local/bin/iwlwifi-reset
包含以下内容的脚本:
#!/bin/sh
# NAME: /usr/lib/bin/iwlwifi-reset
# DESC: Manually reset Intel WiFi.
# DATE: Apr 1, 2017. Modified April 8, 2017.
# NOTE: Must call using SUDO POWERS.
MYNAME=$0
/usr/bin/logger $MYNAME 'restart_wifi BEGIN'
# modprobe -r iwldvm # This removes iwlwifi too
# modprobe iwlwifi # This starts iwldvm too
systemctl restart NetworkManager.service
/usr/bin/logger $MYNAME 'restart_wifi END'
使用以下方法将脚本标记为可执行:
sudo chmod a+x /usr/local/bin/iwlwifi-reset
如上一节所述,您可以检查/var/log/syslog在运行此脚本时查看消息,但无论如何您都会在终端中看到任何错误消息。
要调用此脚本,请使用:
sudo iwlwifi-reset
您不需要指定目录,因为/usr/local/bin
它位于终端的命令搜索路径中。
编辑于 2017 年 4 月 8 日根据 OP 评论和本操作指南,对脚本进行了修改。不再删除并重新插入内核模块,而是使用重新启动网络服务。
答案2
我的 HP pavilon G6 也遇到了这个问题,直到我买了一个新的 USB 适配器并插入后,它才真正启动。经过一番搜索,我发现使用了错误的驱动程序,因此我安装了正确的驱动程序 (Ralink),然后就解决了。您没有提到您有第二个适配器,但也许检查 modprobe 返回的内容会有所帮助。
我是从这个帖子的最后一个答案中得到了这个想法:升级到 16.04 后 Wifi 挂起后无法使用