일시 중지 후 /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 장치가 키보드, 마우스 등인지 알 수 있습니다.

관련 정보