ACPI de ativação do teclado / mouse via / proc / acpi / wakeup após a suspensão. Como encontrar o dispositivo correto?

4

Gostaria de ativar meu sistema via teclado ou mouse. Isso pode ser feito via / proc / acpi / wakeup e um simples

echo DEVNAME > /proc/acpi/wakeup

meu arquivo de ativação é assim

       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

Minha pergunta é: Como posso descobrir qual dispositivo (USB) pertence ao meu mouse / teclado? Eu falhei com lsusb até agora, mas talvez eu tenha perdido os interruptores certos.

    
por Flow 29.07.2011 / 20:09

2 respostas

2

Ok, descobri um jeito, embora não pareça muito claro;)

Eu vou começar do final - rodar este one-liner vai lhe dizer a verdade:

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

Nice, não é? E aqui está como funciona:

  • O começo deve ser óbvio: grep "USB.*" /proc/acpi/wakeup extrai da lista apenas dispositivos USB que possuem um nó sysfs conhecido.
  • cut -d ':' -f 2- deixa apenas o final (números) depois de 'pci:' em cada linha.
  • Em seguida, para cada finalização ( aaa=0000:00:1d.2 e assim por diante), tente encontrar um link simbólico do dispositivo udev que contenha a sequência.
  • Para cada link simbólico encontrado, o comando find:
    • imprime o nome do link simbólico do udev, < - esta é a parte mais útil
    • executa o grep para exibir a linha de /proc/acpi/wakeup que corresponde ao dispositivo encontrado,
    • acrescenta uma linha em branco para clareza de saída.

Assim, graças à significativa nomenclatura dos links simbólicos do dispositivo pelo udev, você pode dizer qual dispositivo USB é o teclado, o mouse etc.

    
por 30.07.2011 / 00:05
4
grep 'ls /dev/input/by-path/*-mouse |\
    head -1 |\
    cut -d- -f 3' /proc/acpi/wakeup |\
    gawk '{print $1}'

Isso encontra o dispositivo de entrada do mouse e, em seguida, procura a ID do PCI em / proc / acpi / wakeup para fornecer o nome. Na verdade, você poderia apenas redirecionar a saída desse comando de volta para / proc / acpi / wakeup para habilitar os wakeups desse dispositivo.

    
por 21.07.2012 / 17:21