我是 Ubuntu 的新用户,到目前为止,我真的很喜欢它。但是,昨天我花了大约 3 个小时尝试在笔记本电脑从睡眠模式唤醒后恢复 wifi(如果我重新启动,它就会起作用)。我搜索了留言板,谷歌上关于这个问题的每个搜索结果的 3 或 4 页都是紫色的。因此,我认为这个问题不会重复。
我有
- 戴尔 Inspiron 15
- AMD A6-6310
- Ubuntu A6-6310
- 我的无线网卡标记为(设备)wlp3s0(驱动程序)ath9k
我已经尝试了以下方法:
我已将它们放入 /config.d 中的配置文件夹中
SUSPEND_MODULES="$SUSPEND_MODULES ath9k"
SUSPEND_MODULES="ath9k"
我在 /sleep.d 中创建了可执行文件,例如:
#!/bin/sh
#Tell Network Manager that resume was successful
case "$1" in
thaw)
/usr/bin/nmcli nm sleep false
;;
esac
#!/bin/sh
case "${1}" in
resume|thaw)
nmcli r wifi off && nmcli r wifi on ;;
esac
以及其许多其他变体。
此外,这会重新启动 NetworkManager,但不会再次连接 wifi:
sudo service network-manager restart
我还尝试了其他一些方法,但我记不清具体是什么方法了,比如使用 nmcli d wifi on 之类的命令。这些方法都没用。
现在,我可能错了,但我认为问题可能在于此:
sudo nmcli nm sleep false
现在,我的终端无法识别“nm”并显示:
sudo nmcli nm sleep false
当我打开 nmcli 菜单时,对象列表中找不到 nm。我觉得这可能是问题的关键。那么,我是否应该做点什么而没有做?有什么方法可以“修复”这个“nm”问题?提前致谢!
答案1
编辑:从挂起状态返回时驱动程序行为不当是我在多个操作系统的多个网络接口上遇到过多次的问题。我发现唯一有效的方法是关闭 WiFi 卡的电源管理。在回顾了我对系统所做的调整以解决类似问题后,我提供了以下解决方案。
首先,我们将使用以下命令备份现有的默认电源管理设置:
sudo cp /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf.bak
接下来,我们将编辑内容以完全关闭 WiFi 的电源管理。使用 gksu gedit /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf,其中包含wifi.powersave = 3
在 WiFi 设备上启用省电的默认值。将此文件的内容更改为:
[connection]
wifi.powersave = 0
完成上述内容并将我的接口重命名为 wlan0 解决了我在 16.04 下的问题
完成后,你需要重新启动或发出命令sudo systemctl restart NetworkManager
重新启动网络管理器
注意:我的卡没有 Atheros 芯片,标识如下:
*-网络描述:无线接口产品:RT2561/RT61 802.11g PCI 供应商:Ralink corp. 物理 ID:1 总线信息:pci@0000:04:01.0 逻辑名称:wlan0 版本:00 序列号:00:1a:ef:03:00:aa 宽度:32 位 时钟:33MHz 功能:pm bus_master cap_list 以太网物理无线
对于有类似问题的人,可能有用的替代方案是:
将下面的 bash 脚本放在您的/etc/pm/sleep.d
文件夹中,并命名为 99_wifiup。
笔记:需要 99_,其中 99 是文件夹中的最高数字,以确保它最后运行。
您需要确保脚本具有执行权限,并且需要超级用户 (sudo) 权限才能将文件写入其中。一旦到位,每次您退出暂停状态时它都会运行。
#!/bin/bash
case "$1" in
suspend | hibernate)
# executed on suspend
;;
resume | thaw)
# executed on resume
/usr/sbin/rfkill block all
/usr/sbin/rfkill unblock all
/sbin/iwlist wlan0 scan
;;
*)
;;
esac
如果这不起作用,那么应该值得探索修改脚本以nmcli networking off
在暂停和nmcli networking on
解冻时发出命令。
如果这些解决方案都对你不起作用,并且你注意到其他异常,那么你的 WiFi 适配器可能存在故障,或者这个错误已经复活。
资料来源:
在我的一个系统上修改了 /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf 和 /etc/udev/rules.d/70-persistent-net.rules。
Mickeypop 帖子 #9https://ubuntuforums.org/showthread.php?t=2321399
man nmcli
https://gist.github.com/jcberthon/ea8cfe278998968ba7c5a95344bc8b55
答案2
我发现 wifi 电源管理经常是 Linux 体验的祸根。就我而言,它涉及各种 Intel 和 Broadcom 适配器。也许禁用它会解决您的问题。以下是我的做法(针对您的界面进行编辑wlp3s0
):
创建:/etc/network/if-up.d/wifi-powerman-off
启用:chmod +x /etc/network/if-up.d/wifi-powerman-off
wifi-powerman-off:
#!/bin/sh
IWCONFIG=/sbin/iwconfig
WLAN_IFACE=<<interface name>>
if [ ! -x $IWCONFIG ]; then
exit 1
fi
if [ "$IFACE" = $WLAN_IFACE ]; then
$IWCONFIG $IFACE power off
fi
以下是原文问答参考:
如何防止开启 iwconfig 电源管理?
答案3
尝试几个命令(除了上述命令),如果您发现其中一个可以工作(手动运行时) - 将其添加到您在问题中提到的要在唤醒期间运行的脚本之一中。
重启网络和 WiFi 相关服务:
sudo service wpa_supplicant restart
sudo service network-manager restart
重启网卡:
sudo ifconfig wlan0 down && sudo ifconfig wlan0 up
强制wifi卡模式:
sudo iwconfig wlan0 essid any
(在旧版 Ubuntu 中,该状态被称为auto
,而不是any
)
重新加载网卡内核驱动程序(该列表可能需要针对您的驱动程序进行更新,该列表取自我在另一个型号上使用的脚本):
sudo rmmod ath9k ath9k_common ath9k_hw ath mac80211 rndis_wlan cfg80211 rndis_host cdc_ether usbnet && sleep 1 && sudo modprobe -a usbnet cdc_ether rndis_host cfg80211 rndis_wlan mac80211 ath ath9k_hw ath9k_common ath9k