挂起后 WiFi 信号图标切换到以太网图标(向上向下箭头)?

Mix*_*ixx 6 suspend wireless networking ethernet 16.04

当我在暂停一段时间后唤醒我的笔记本电脑时,WiFi 信号被上下箭头取代。连接仍然有效,但仍然很烦人。重新启动网络管理器有效,但只是临时修复。

我在某处读到这可能是因为连接被重命名,从而导致它认为我是通过以太网而不是 WiFi 连接的?

我怎样才能解决这个问题?

编辑:我注意到在打开/关闭 WiFi 后偶尔也会发生这种情况。

Win*_*nix 5

自动方式

使用 sudo 权限创建/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
Run Code Online (Sandbox Code Playgroud)

使用以下命令将脚本标记为可执行:

sudo chmod a+x /lib/systemd/system-sleep/iwlwifi-reset
Run Code Online (Sandbox Code Playgroud)

从挂起使用中唤醒后检查脚本的执行情况:

cat /var/log/syslog | grep iwlwifi
Run Code Online (Sandbox Code Playgroud)

如果它在测试期间似乎可以工作,请不要太兴奋,因为有时此脚本在短暂挂起时可以工作,但在长时间挂起后不起作用。

如果这不起作用,在尝试下一节中的手动方法sleep 5之前,将命令放在行之前restart_wifi;;

手动方式

如果使用 sudo 权限自动方法不起作用,请创建/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'
Run Code Online (Sandbox Code Playgroud)

使用以下命令将脚本标记为可执行:

sudo chmod a+x /usr/local/bin/iwlwifi-reset
Run Code Online (Sandbox Code Playgroud)

如上一节所述,您可以在运行此脚本时检查/var/log/syslog中的消息,但无论如何您都会在终端中看到任何错误消息。

要调用此脚本,请使用:

sudo iwlwifi-reset
Run Code Online (Sandbox Code Playgroud)

您不需要指定目录,因为/usr/local/bin它位于终端的命令搜索路径中。


2017 年 4 月 8 日编辑根据 OP 评论和此操作方法,对脚本进行了修改。使用重新启动网络服务而不是删除和重新插入内核模块。