Como eu configuro o WakeOnUSB corretamente?

13

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

Existem diferentes maneiras de abordar isso, por exemplo / proc / acpi / wakeup ... ou UDEV ... ou algo com o 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 é um recurso de Suspensão em Disco ... também não parece funcionar se eu ecoar USB1 na mesa de ativação. Apenas define um sinalizador S4.
  • posso obter as portas USB no S3?

Desejo ativar a máquina a partir de Suspender-para-Ram (S3, ACPI standard) caso uma tecla do teclado externo seja pressionada. Ele acorda apenas se uma tecla do teclado interno do laptop for pressionada ... de Suspender para memória ram. Parece que, se eu conectar um mouse USB, a porta USB nem sequer está ligada. Não tenho opção de BIOS para alterar 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, preciso explicar corretamente o porquê :( - mas acho muito difícil pesquisar esse kernel interno. Alguma dica para obter informações boas aqui? Espero que seja possível ... Estou apenas procurando por uma solução .

edit: este, acordando no USB, funciona no Windows!

Muito obrigado, Marius

wishi
fonte
1
Se, como você diz, não tem uma opção de BIOS para transmitir sinais de portas USB externas, e se dispositivos USB externos nem sequer têm energia (faz sentido para notebooks movidos a bateria) - como diabos isso funcionaria? O Ubuntu não tem mágica para fazer isso.
Takkat 29/10/10
Funciona em Windws. Então, suponho que haja uma opção para passar sinalizadores específicos para o HW. ;) Eu tenho essa mentalidade de Top Gun quando se trata de hardware e Linux: todos podem pilotar um avião de transporte e executar o Windows. Mas apenas algumas pessoas podem voar jatos de combate e executar Linux;)
Wishi
Ah, sim Top Gun: todo mundo pode travar o Windows, mas travar o Linux é um trabalho muito difícil de fazer ;-). Se o wake on LAN funcionar com o Windows, seu dispositivo USB certamente estará ligado (talvez no modo de economia de energia ou mais).
Takkat 29/10/10

Respostas:

4

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

No meu laptop, quando conecto meu teclado USB, vejo o caminho pci 0000: 00: 1d.0 na dmesgsaída:

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

A partir daí, posso encontrar o nome do dispositivo ACPI /proc/acpi/wakeupe fazer 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á ausente no sistema, não será possível fazê-lo funcionar. Pode ser necessário iniciar a depuração do DSDT para avançar ainda mais. http://acpi.sourceforge.net/dsdt/index.php

Kees Cook
fonte
1

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

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

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

Nathan Grennan
fonte
1

Use 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, seu 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 pelos 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 (também pode funcionar em versões inferiores). Encontrei a resposta nesta postagem do fórum (resposta da ederopaa )

dafyk
fonte
1
Bem-vindo ao Ask Ubuntu! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Eliah Kagan 12/08/2012