每次打开笔记本电脑时,我都必须等待几秒钟才能重新连接 wifi。我记得在 Windows 中它已经连接了。我需要一种方法来防止 wifi 在挂起时断开连接。
我找到的最接近的答案是https://askubuntu.com/a/961460/613425但它不起作用。我也尝试了iwconfig wlan0 poweroff
答案中的方法,但在重启之前它不起作用。
答案1
有两种方法可以在睡眠后启用 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
- 编辑上面显示的网络管理器文件。
WiFi.powersave
从更改2
为3
(启用省电)。- 如果已设置,请
3
尝试将其设置为2
(禁用省电)。 - 保存文件后运行
sudo systemctl restart NetworkManager
第二个是systemd
从挂起状态恢复时重新加载 WiFi 内核模块的脚本。它来自这个答案:Wi-Fi 可用网络突然不显示:
此脚本是为 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
笔记:有时只需重置网络管理器即可。在这种情况下,通过删除 取消注释上面的行。然后通过在这两行的开头#
添加 来注释掉上面的两行。#
您需要创建名为 的脚本iwlwifi-reset
,并sudo
赋予其权限,然后将其保存到目录 中/lib/systemd/system-sleep
。然后使用以下命令将其标记为可执行文件:
chmod a+x /lib/systemd/system-sleep/iwlwifi-reset
答案2
我认为这与 systemd 有关。您可以编写一个脚本,在挂起后启动 wifi 设备。先尝试手动执行此操作。
答案3
首先创建一个新脚本并使其可执行。
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 无线电 wifi 开启是正确的命令,尝试进入睡眠模式,启动计算机并执行
sudo nmcli radio wifi on
如果您的计算机连接到正确的 wifi,那么这可能是一个可选的解决方案。您的计算机应该自动连接到您保存的 wifi 接入点。