Como configuro o WakeOnUSB corretamente?

13

Como eu configuro o Wake-On-USB corretamente em um Ubuntu 10.04 ou 10.10 (2.6.36 e superior, se necessário)? (O Wake-on-USB ocorre quando o computador está inativo e, por exemplo, um evento de teclado USB ativa a máquina!) O notebook é um Acer Aspire Timeline X 1830T . Eu não sei de que maneira o Kernel Linux suporta os controladores.

Existem diferentes maneiras de abordar isso, por exemplo / proc / acpi / wakeup ... ou UDEV ... ou algo com HAL?

/proc/acpi/wakeup mostra todos os dispositivos no S4, mas eu preciso do S3.

Device S-state Status Sysfs node
P0P2 S4 *disabled
PEGP S4 *disabled
P0P1 S0 *disabled pci:0000:00:1e.0
EHC1 S4 *disabled pci:0000:00:1d.0
USB1 S4 *enabled
USB2 S4 *disabled
USB3 S4 *disabled
USB4 S4 *disabled
EHC2 S4 *disabled pci:0000:00:1a.0
USB5 S4 *disabled
USB6 S4 *disabled
USB7 S4 *disabled
HDEF S0 *disabled pci:0000:00:1b.0
RP01 S5 *disabled pci:0000:00:1c.0
PXSX S5 *disabled pci:0000:01:00.0
RP02 S0 *disabled pci:0000:00:1c.1
PXSX S5 *disabled pci:0000:02:00.0
RP03 S0 *disabled
PXSX S5 *disabled
RP04 S0 *disabled
PXSX S5 *disabled
RP05 S0 *disabled
PXSX S5 *disabled
RP07 S0 *disabled
PXSX S5 *disabled
RP08 S0 *disabled
PXSX S5 *disabled
GLAN S0 *disabled
PEG3 S4 *disabled
PEG5 S4 *disabled
PEG6 S4 *disabled
SLPB S3 *enabled
    O
  • S4, que é o afaik de suspensão para disco ... também não parece funcionar se eu fizer o eco de USB1 na tabela de ativação. Apenas define uma bandeira S4.
  • posso obter as portas USB no S3?

Eu quero que a máquina seja ativada de Suspend-To-Ram (S3, ACPI standard ) caso uma tecla no meu teclado externo seja pressionada. Acorda apenas se uma tecla do teclado interno do Laptop for pressionada ... de Suspender para Ram. Parece que se eu conecto um mouse USB, a porta USB não está energizada. Eu não tenho nenhuma opção de BIOS para mudar isso.

Mais informações específicas sobre o dispositivo:

usb-devices
T: Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 13 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=04d9 ProdID=1603 Rev=03.10
S: Manufacturer=
S: Product=USB Keyboard
C: #Ifs= 2 Cfg#= 1 Atr=a0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=usbhid
I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid

root@underwater-laptop:/# lsusb
[...]
Bus 001 Device 013: ID 04d9:1603 Holtek Semiconductor, Inc.
Bus 001 Device 004: ID 0bda:0138 Realtek Semiconductor Corp.
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[...]

Se isso não funcionar, eu tenho que explicar corretamente porque :( - mas eu acho que é muito difícil pesquisar este kernel interno. Alguma dica para boas informações aqui? Eu espero que seja possível ... Eu só estou procurando para qualquer solução.

edite: isso, ao ativar o USB, funciona no Windows!

Muito obrigado Marius

    
por wishi 26.10.2010 / 11:44

3 respostas

4

Parece que algo pode estar errado com a tabela ACPI do sistema, já que nenhum dos dispositivos USB * está vinculado a um barramento PCI.

No meu laptop, quando eu conecto meu teclado USB, posso ver o caminho pci 0000: 00: 1d.0 em dmesg output:

input: ... as /devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2.3/6-2.3:1.0/input/input14

De lá, posso encontrar o nome do dispositivo da ACPI em /proc/acpi/wakeup e fazer o eco para ativá-lo:

USB0  S3 enabled  pci:000:00:1d.0

Eu diria que, como o mapeamento do barramento PCI para o dispositivo ACPI está faltando para o seu sistema, não será possível fazê-lo funcionar. Você pode precisar começar a depurar o DSDT para ir mais longe. link

    
por Kees Cook 31.10.2010 / 19:44
1

Eu encontrei no Ubuntu Lucid 10.04.3 com 2.6.32-37 que usar /proc/acpi/wakeup é inútil. Parece que /sys é a única coisa que importa.

Meu script usb-wakeup vinculado abaixo percorre a árvore /sys ao contrário para ativar apenas dispositivos usbhid, também conhecidos como teclado e mouse. Também permite seus hubs e controladores pais. Isso é o que eu levei para que funcionasse. A regra do udev aciona o script na inicialização e quando qualquer dispositivo usbhid é conectado.

O script udev requer que o script esteja em /usr/local/sbin e certifique-se de tornar o script executável, chmod 755 /usr/local/sbin/usb-wakeup .

  • /etc/udev/rules.d/56-wakeupusb.rules
  • /usr/local/sbin/usb-wakeup
por Nathan Grennan 31.12.2011 / 21:47
1

Use o lsusb para obter o ID do produto e do fornecedor do seu dispositivo usb:

Bus 004 Device 002: ID 0458:002e KYE Systems Corp. (Mouse Systems)

No meu caso, o mouse com o ID 0458: 002e, você cria uma nova regra do udev:

sudo nano /etc/udev/rules.d/90-keyboardwakeup.rules

Insira este código e substitua idVendor e idProduct por ids corretos de lsusb

SUBSYSTEM=="usb", ATTRS{idVendor}=="0458", ATTRS{idProduct}=="002e" RUN+="/bin/sh -c 'echo enabled > /sys$env{DEVPATH}/../power/wakeup'"

Reinicie e teste. Testado em 11.04 e 12.04 (pode funcionar em versões inferiores também). Eu encontrei a resposta neste fórum postar (resposta de ederopaa )

    
por dafyk 12.08.2012 / 10:13