如何防止从挂起和/或休眠状态立即唤醒?

Baz*_*zon 42 suspend wakeup

几天来,我的 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再次检查 或刷新文件视图),然后,计算机像它应该的那样保持挂起状态。:-)

  • 就我而言,没有 USB* 设备,看起来它们是通过 USB 集线器在内部连接的:将 EHC1、EHC2 和 XHC 添加到 /proc/acpi/wakeup 对我有帮助。 (4认同)
  • 就我而言,它是 USB 3 的 _XHCI_ (2认同)

小智 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。

所以现在:

  1. 在终端中点击:

    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 设备(在我的示例中)恢复为启用状态。

  1. 也写了一条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退出并重启。


geo*_*rey 6

使修复永久化

(我正在编译 Bazon、Ilikerobots 和 Pavlos Theodorou 提供的解决方案——它们一起解决了我的具体问题)

要永久解决此问题,无论是 USB 端口唤醒系统还是其他原因:

  1. 找出允许唤醒系统的内容:

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