暂停后如何防止wifi睡眠

Gue*_*OCs 16 suspend wireless networking

每次打开笔记本盖子时,我都必须等待几秒钟才能重新连接 wifi。我记得在 Windows 中它已经连接了。我需要一种方法来防止 wifi 在挂起时断开连接。

我找到的最接近的答案是https://askubuntu.com/a/961460/613425但它没有用。我也在iwconfig wlan0 poweroff答案中尝试过,但即使在重新启动之前它也不起作用。

Win*_*nix 16

有两种方法可以在睡眠后启用 WiFi。第一个是网络管理器的通用补丁,你可以看到我通过列出文件制作的:

关闭或启用省电功能,如下图所示:

$ cat /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf
[connection]
wifi.powersave = 3
# Slow sleep fix: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1670041
#wifi.powersave = 2
Run Code Online (Sandbox Code Playgroud)
  • 编辑上面显示的网络管理器文件。
  • 变化WiFi.powersave来自23(启用省电)。
  • 如果已经设置为3尝试将其设置为2(禁用省电)。
  • 保存文件后运行 sudo systemctl restart NetworkManager

第二个是systemd从挂起恢复时重新加载 WiFi 内核模块的脚本。它来自这个答案:Wifi 可用网络没有突然出现

此脚本是为 iwlwifi` 编写的,这是常见的英特尔驱动程序名称。如果您的名称不同,请在下面更改该名称:

#!/bin/sh

# NAME: /lib/systemd/system-sleep/iwlwifi-reset
# DESC: Resets Intel WiFi which can be flakey after a long suspend.
# DATE: Apr 1, 2017. Modified August 30, 2017.

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 'systemctl restart NetworkManager.service (SUPPRESSED)'
    /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)

注意:有时只需重置网络管理器即可。在这种情况下,通过删除#. 然后通过将其放在#这两行的开头来注释掉上面的两行。

您需要创建此脚本,叫iwlwifi-reset,有sudo权力,并将其保存到该目录/lib/systemd/system-sleep。然后使用以下命令将其标记为可执行:

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