暂停后如何防止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.powersave
从2
更改为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接入点。