挂起后通过 /proc/acpi/wakeup 从键盘/鼠标唤醒 ACPI。如何找到正确的设备?

Flo*_*low 5 linux suspend acpi

我想通过键盘或鼠标唤醒我的系统。这可以通过/proc/acpi/wakeup和一个简单的

echo DEVNAME > /proc/acpi/wakeup
Run Code Online (Sandbox Code Playgroud)

我的唤醒文件看起来像这样

       Device   S-state   Status   Sysfs node
  ---------------------------------------
  1. P0P2     S4    *disabled  pci:0000:00:01.0
  2. P0P3     S4    *disabled  
  3. P0P1     S4    *disabled  pci:0000:00:1e.0
  4. UAR1     S4    *disabled  pnp:00:0c
  5. EUSB     S4    *disabled  pci:0000:00:1d.7
  6. USBE     S4    *disabled  pci:0000:00:1a.7
  7. P0P5     S4    *disabled  
  8. P0P6     S4    *disabled  
  9. P0P7     S4    *disabled  
  10. P0P8    S4    *disabled  pci:0000:00:1c.4
  11. P0P9    S4    *disabled  pci:0000:00:1c.5
  12. GBEC    S4    *disabled  
  13. USB0    S4    *disabled  pci:0000:00:1d.0
  14. USB1    S4    *disabled  pci:0000:00:1d.1
  15. USB2    S4    *disabled  pci:0000:00:1d.2
  16. USB3    S4    *disabled  
  17. USB4    S4    *disabled  pci:0000:00:1a.0
  18. USB5    S4    *disabled  pci:0000:00:1a.1
  19. USB6    S4    *disabled  pci:0000:00:1a.2
  20. P0P4    S4    *disabled  pci:0000:00:1c.0
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何找出属于我的鼠标/键盘的(USB)设备?到目前为止,我使用lsusb失败了,但也许我只是错过了正确的开关。

小智 6

grep `ls /dev/input/by-path/*-mouse |\
    head -1 |\
    cut -d- -f 3` /proc/acpi/wakeup |\
    gawk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

这将找到鼠标的输入设备,然后在 /proc/acpi/wakeup 中查找 PCI ID 以提供名称。事实上,您可以将该命令的输出重定向回 /proc/acpi/wakeup 以启用该设备的唤醒。


roz*_*acz 3

好吧,我找到了一种方法,虽然它看起来不太干净;)

我将从最后开始 - 运行这个单行会告诉你真相:

grep "USB.*pci" /proc/acpi/wakeup |\
    cut -d ':' -f 2- |\
    while read aaa; do \
        find /dev/.udev \
            -name "*$aaa*" \
            -print \
            -exec grep "$aaa" /proc/acpi/wakeup \; -exec echo \; ;\
    done
Run Code Online (Sandbox Code Playgroud)

很好,不是吗?这是它的工作原理:

  • 开始应该是显而易见的:grep "USB.*" /proc/acpi/wakeup仅从列表中提取具有已知 sysfs 节点的 USB 设备。
  • cut -d ':' -f 2-只留下每行“pci:”后面的结尾(数字)。
  • 然后,对于每个结尾(aaa=0000:00:1d.2等等),尝试查找包含该字符串的udev 设备符号链接
  • 对于找到的每个设备符号链接,查找命令:
    • 打印 udev 符号链接的名称,<-- 这是最有用的部分
    • 执行 grep 显示与/proc/acpi/wakeup找到的设备对应的行,
    • 为了输出清晰而附加一个空行。

因此,由于 udev 对设备符号链接进行了有意义的命名,您可以辨别哪个 USB 设备是键盘、鼠标等。