web-dev-qa-db-ja.com

サスペンド後の/ proc / acpi / wakeupを介したキーボード/マウスからのACPIウェイクアップ。正しいデバイスを見つける方法は?

キーボードまたはマウスを使用してシステムをウェイクアップしたいのですが。これは、/ proc/acpi/wakeupおよび単純な方法で実行できます。

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)デバイスが私のマウス/キーボードに属しているかを知るにはどうすればよいですか?lsusbで失敗しましたこれまでのところ、しかし多分私はちょうど正しいスイッチを逃しました。

4
Flow

わかりました、私は方法を見つけました、しかしそれはあまりきれいに見えません;)

私は最後から始めます-このワンライナーを実行すると真実がわかります:

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など)について、文字列を含むdevデバイスのシンボリックリンクを見つけてください。
  • 見つかったデバイスのシンボリックリンクごとに、findコマンド:
    • udevシンボリックリンクの名前を出力します<-これは最も有用な部分です
    • grepを実行して、見つかったデバイスに対応する/proc/acpi/wakeupからの行を表示します。
    • 出力をわかりやすくするために空白行を追加します。

したがって、udevによるデバイスシンボリックリンクの意味のある命名のおかげで、どのUSBデバイスがキーボードやマウスなどであるかを知ることができます。

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

これにより、マウスの入力デバイスが検索され、/ proc/acpi/wakeupでPCIIDが検索され、名前が示されます。実際、そのデバイスからのウェイクアップを有効にするために、そのコマンドの出力を/ proc/acpi/wakeupにリダイレクトするだけで済みます。

5
srwalter