我正在运行带有 Gnome 的 Ubuntu 18.10 - Suspend to Ram 不起作用。我的系统日志告诉我wpa_请求者拒绝冻结。我已经尝试了几个修复方法,但都没有奏效。它们大多数是不同的变体这。我还尝试使用不同的固件版本这里。虽然这有点夸张,因为 wifi 工作正常,我的想法是在点击暂停按钮时运行一个脚本,在实际暂停操作发生之前关闭 wifi。
如果我在挂起之前手动禁用 wifi,挂起至 Ram 功能就会起作用。有没有办法自动执行此操作?
无线芯片组:
description: Wireless interface
product: QCA6174 802.11ac Wireless Network Adapter
vendor: Qualcomm Atheros
physical id: 0
bus info: pci@0000:04:00.0
logical name: wlp4s0
version: 20
serial: c0:38:96:2f:a8:1f
width: 64 bits
clock: 33MHz
capabilities: bus_master cap_list ethernet physical wireless
configuration: broadcast=yes driver=ath10k_pci driverversion=4.18.0-13-generic firmware=SW_RM.1.1.1-00157-QCARMSWPZ-1
更新#1:正如@GAD3R指出的那样,/lib/systemd/system-sleep 中的一个脚本可以解决这个问题。但是它似乎不起作用。我创建了脚本
基尔帕
在
/lib/systemd/系统睡眠
并使其可执行使用
sudo chmod + x
我仍然无法使用 Wifi 暂停,这是我的输出系统日志:
Freezing user space processes ...
Freezing of tasks failed after 20.002 seconds (9 tasks refusing to freeze, wq_busy=0):
wpa_supplicant D 0 1013 1 0x00000004
更新 2:我修改了脚本以使用modprobe
网络管理器卸载驱动程序并停止它 - 但仍然冻结。
脚本:
#!/bin/bash
if [ "${1}" == "pre" ]; then
modprobe -rv ath10k_pci
systemctl stop NetworkManager.service
elif [ "${1}" == "post" ]; then
modprobe -v ath10k_pci
systemctl start NetworkManager.service
fi
系统日志输出:
Feb 1 09:13:25 aaron-GACK kernel: [ 1350.265251] Freezing user space processes ...
Feb 1 09:13:25 aaron-GACK kernel: [ 1370.272019] Freezing of tasks failed after 20.006 seconds (3 tasks refusing to freeze, wq_busy=0):
Feb 1 09:13:25 aaron-GACK kernel: [ 1370.274617] wpa_supplicant D 0 1036 1 0x00000004
更新 3: 我尝试简化它并使用单个脚本来卸载驱动程序并杀死 wpa,正如 GAD3R 所建议的那样:
!/bin/bash
if [ "${1}" == "pre" ]; then
modprobe -rv ath10k_pci
/usr/bin/pkill wpa_supplicant
fi
天哪--它成功了!暂停后恢复,Wifi 也恢复正常。
更新 4: 没关系。成功尝试后再次尝试暂停...然后再次冻结。 系统日志:
Feb 1 09:27:30 aaron-GACK kernel: [ 421.558759] Freezing user space processes ...
Feb 1 09:27:30 aaron-GACK kernel: [ 441.561752] Freezing of tasks failed after 20.002 seconds (10 tasks refusing to freeze, wq_busy=0):
Feb 1 09:27:30 aaron-GACK kernel: [ 441.564343] wpa_supplicant D 0 1082 1 0x00000004
答案1
我想在暂停之前做同样的事情,并尝试了您的脚本,两种形式。 Syslog 显示格式错误,脚本失败。 systemd 对脚本格式很挑剔吗?
这对我有用,经过手动测试,只需卸载驱动程序就可以成功暂停。
!/bin/sh
case $1/$2 in
pre/*)
modprobe -rv ath10k_pci
;;
post/*)
modprobe -v ath10k_pci
;;
esac