暂停后如何防止wifi睡眠

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

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

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

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

 $ 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 
  • 编辑上面显示的网络管理器文件。
  • WiFi.powersave2更改为3 (启用省电function)。
  • 如果已将其设置为3尝试将其设置为2 (禁用省电)。
  • 保存文件后运行sudo systemctl restart NetworkManager

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

此脚本是为iwlwifi`编写的,这是常见的Intel驱动程序名称。 如果您的不同,请更改以下名称:

 #!/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 exit 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 

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

您需要使用sudo powers创建名为iwlwifi-reset脚本,并将其保存到目录/lib/systemd/system-sleep 。 然后使用以下命令标记它

 chmod a+x /lib/systemd/system-sleep/iwlwifi-reset 

我认为这与systemd有关。 你可以制作一个在暂停后启动wifi设备的脚本。 首先尝试手动完成。

首先停止一个新脚本并使其可执行。

 sudo touch /usr/lib/pm-utils/sleep.d/wakewifi sudo chmod a+x /usr/lib/pm-utils/sleep.d/wakewifi 

然后编辑脚本

 sudo nano /usr/lib/pm-utils/sleep.d/wakewifi 

并让它看起来像这样。

  #!/bin/sh case "$1" in resume) nmcli radio wifi on esac 

要确保nmcli radio wifi on是正确的命令,尝试进入睡眠模式,启动计算机并执行

 sudo nmcli radio wifi on 

如果您的计算机然后连接到正确的WiFi,那么这可能是一个可选的解决方案。 你的电脑应该自动连接。 到您保存的Wi-Fi接入点。