几天来,我的 Ubuntu 12.04 台式计算机在进入挂起模式后立即莫名其妙地醒来。
自安装以来,我的 Ubuntu 12.10 笔记本电脑在挂起和休眠后也立即恢复。
如何预防那些?
Baz*_*zon 38
此问题可能是由奇怪的 USB 信号引起的。gedit /proc/acpi/wakeup向我展示了 USB0 和 USB2 的唤醒功能。
sudo -s
echo USB0 > /proc/acpi/wakeup
echo USB2 > /proc/acpi/wakeup
Run Code Online (Sandbox Code Playgroud)
将它们切换为禁用(gedit /proc/acpi/wakeup再次检查 或刷新文件视图),然后,计算机像它应该的那样保持挂起状态。:-)
小智 31
我最近在 Ubuntu 15.04 上的 Asus Zenbook Pro UX501 上出现了同样的症状。Bazon 的精确修复不起作用,但 Vladimir Rutsky 的变体起作用了。具体来说:
如果从终端运行cat /proc/acpi/wakeup显示以下几行
EHC1 S3 *enabled pci:0000:00:xx.x
EHC2 S3 *enabled pci:0000:00:xx.x
XHC S3 *enabled pci:0000:00:xx.x
Run Code Online (Sandbox Code Playgroud)
(pci地址可能不同)
然后通过发出以下命令将这三个切换为禁用:
sudo -s
echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHC > /proc/acpi/wakeup
Run Code Online (Sandbox Code Playgroud)
Pav*_*rou 18
如果您知道哪个设备唤醒您的 PC,请转到第一步以按照指南进行操作。如果不这样做,请打开终端并执行以下操作:
cat /var/log/syslog
Run Code Online (Sandbox Code Playgroud)
并找出哪个设备正在唤醒您的 PC。
所以现在:
在终端中点击:
grep . /sys/bus/usb/devices/*/power/wakeup
Run Code Online (Sandbox Code Playgroud)列出唤醒我们电脑的所有 USB 端口。
sudo su
Run Code Online (Sandbox Code Playgroud)
我们现在有根特权。
2.我有 8 个 USB 端口,在这个例子中假设我想禁用 usb8,所以:
echo disabled > /sys/bus/usb/devices/usb8/power/wakeup
Run Code Online (Sandbox Code Playgroud)
继续并测试它。现在 USB 端口 8 中的特定设备不会唤醒 PC。
下一步,在每次启动后使更改永久化:
3.
sudo nano /etc/rc.local
Run Code Online (Sandbox Code Playgroud)
然后我们粘贴步骤 2 中的命令。在那里(当然在 exit 0 之前)。
就是这样。
可选仅当在睡眠/唤醒过程后 USB 8 设备(在我的示例中)恢复为启用状态。
udev规则,在每次开机、睡眠、醒来后执行命令。打开终端并执行以下操作:
lsusb
Run Code Online (Sandbox Code Playgroud)
在您的键盘设备 ID 信息中,前 4 位数字是供应商 ID,接下来的 4 位数字是产品 ID 
接下来做:
sudo nano /etc/udev/rules.d/10-wakeup.rules
Run Code Online (Sandbox Code Playgroud)
在“唤醒”中输入您想要的脚本名称。如果您有许多其他 udev 规则,数字 10 是优先级,“规则”将在其他规则之前执行的数字越小。
复制粘贴这个并将供应商 id 和产品 id 替换为您自己的无线键盘供应商 id 和产品 id。
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="062a", ATTRS{idProduct}=="4101" RUN+="/bin/sh -c 'echo disabled > /sys/bus/usb/devices/usb8/power/wakeup'"
Run Code Online (Sandbox Code Playgroud)
*usb8对我来说是我的无线键盘(你也可以在截图中看到(总线 008)),用你自己的替换它。
Ctrl+O保存,Ctrl+X退出并重启。
使修复永久化
(我正在编译 Bazon、Ilikerobots 和 Pavlos Theodorou 提供的解决方案——它们一起解决了我的具体问题)
要永久解决此问题,无论是 USB 端口唤醒系统还是其他原因:
gedit /proc/acpi/wakeup
你可能会得到这些或类似的行:
EHC1 S3 *启用 pci:0000:00:xx.x
EHC2 S3 *启用 pci:0000:00:xx.x
XHC S3 *启用 pci:0000:00:xx.x
然后打开:
须藤 gedit /etc/rc.local
并添加这些线(或类似的,这取决于上述结果)之前 exit 0
echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHC > /proc/acpi/wakeup