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

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

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

echo DEVNAME > /proc/acpi/wakeup

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

       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

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

答案1

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

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

答案2

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

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

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

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

  • 开始应该是显而易见的: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 设备是键盘、鼠标等。

相关内容