![暂停后显示“Wifi已被硬件开关禁用”](https://linux22.com/image/981313/%E6%9A%82%E5%81%9C%E5%90%8E%E6%98%BE%E7%A4%BA%E2%80%9CWifi%E5%B7%B2%E8%A2%AB%E7%A1%AC%E4%BB%B6%E5%BC%80%E5%85%B3%E7%A6%81%E7%94%A8%E2%80%9D.png)
我在 HP 15-P234TX 笔记本电脑上运行 Ubuntu 14.04。每次我合上盖子或挂起它时,无线都会停止工作,直到我重新启动整个电脑。我无法点击启用 wifi,因为它显示“wifi 被硬件开关禁用”。据我所知,机箱上任何地方都没有开关。我尝试运行 rfkill list all 并得到以下结果
rfkill list all
1: phy0: Wireless LAN
Soft blocked: no
Hard blocked: yes
rfkill unblock all 无效
__
请参阅lspci-knn| grep Net-A2
08:00.0 Network controller [0280]: Intel Corporation Wireless 3160 [8086:08b3] (
rev 83)
Subsystem: Intel Corporation Dual Band Wireless-AC 3160 [8086:0070]
Kernel driver in use: iwlwifi
我该如何解决?
答案1
此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
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
笔记:有时只需重置网络管理器即可。在这种情况下,通过删除 取消注释上面的行。然后通过在这两行的开头#
添加 来注释掉上面的两行。#
您需要创建名为 的脚本iwlwifi-reset
,并sudo
赋予其权限,然后将其保存到目录 中/lib/systemd/system-sleep
。然后使用以下命令将其标记为可执行文件:
chmod a+x /lib/systemd/system-sleep/iwlwifi-reset