答案1
请打开终端并执行:
gksudo gedit /etc/systemd/system/wifi-resume.service
如果您没有文本编辑器 gedit,请使用 nano 或 kate 或 leafpad。将打开一个新的空文件。添加以下内容:
[Unit]
Description=Local system resume actions
After=suspend.target
[Service]
Type=oneshot
ExecStart=/bin/systemctl restart network-manager.service
[Install]
WantedBy=suspend.target
仔细校对两遍,保存并关闭文本编辑器。
现在做:
sudo chmod +x /etc/systemd/system/wifi-resume.service
接下来:
sudo systemctl enable wifi-resume.service
我建议你重启一下。测试一下,然后让我们听听你的报告。
答案2
另一个解决方案类似于 Tristan T 在问题中引用的 nmcli(没有 nm,正如 Tristan 提到的,它不再是一种选择):
nmcli radio wifi on
我用了奥维斯·隆的回答类似问题启用我的笔记本电脑(Dell Precision)16.04 LTS 版本挂起后自动恢复 wifi 的功能。
我创建了 /etc/pm/sleep.d/10_resume_wifi
#!/bin/sh
case "${1}" in
resume|thaw)
nmcli radio wifi off && nmcli radio wifi on;;
esac
然后sudo chmod +x /etc/pm/sleep.d/10_resume_wifi
使该文件可执行。
如果你像我一样对双分号或单括号感到疑惑,请参阅http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html—— 这就是 case 语法的工作方式。
答案3
对我来说有效
#!/bin/sh
case $1 in
resume|thaw)
nmcli radio wifi off && nmcli radio wifi on;;
esac
然后是 sudo chmod +x /etc/pm/sleep.d/10_resume_wifi
如果第一次失败,用户还可以尝试。
#!/bin/sh
case $1 in
post|resume|thaw)
nmcli radio wifi off && nmcli radio wifi on;;
esac
答案4
本主题中接受的答案对我不起作用,其他任何替代解决方案也不起作用。我必须添加以下服务文件作为/etc/systemd/system/wifi-resume.service
[Unit]
Description=Restart Network Manager at resume (after suspend)
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target
[Service]
Type=oneshot
# note: the following also unloads iwlwifi
ExecStart=/usr/sbin/modprobe -r iwldvm
# note: the following also loads iwldvm
ExecStart=/usr/sbin/modprobe iwlwifi
[Install]
WantedBy=suspend.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target
然后启用sudo systemctl enable wifi-resume.service
作为测试上述内容时的备份,我创建了一个包含以下内容的 bash 脚本
#!/bin/bash
echo {MY_PASSWORD} | sudo -S modprobe -r iwldvm
echo {MY_PASSWORD} | sudo -S modprobe iwlwifi
echo {MY_PASSWORD} | sudo -S service network-manager restart
notify-send "Wifi: reloaded."
exit
并将其与自定义键盘快捷键绑定。