web-dev-qa-db-fra.com

Comment configurer WakeOnUSB correctement?

Comment configurer Wake-On-USB correctement sur un Ubuntu 10.04 ou 10.10 (2.6.36 et supérieur si nécessaire)? (Wake-on-USB se produit lorsque l'ordinateur est en veille et qu'un événement de clavier USB réveille par exemple la machine!) Le portable est un Acer Aspire Timeline X 1830T. Je ne sais pas de quelle manière le noyau Linux prend en charge les contrôleurs.

Il existe différentes manières d’aborder ceci, par exemple/proc/acpi/wakeup ... ou UDEV ... ou quelque chose avec HAL?

/proc/acpi/wakeup affiche tous les périphériques de S4, mais j'ai besoin de 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
  • S4, qui est suspendu comme il se doit ... ne semble pas fonctionner non plus si je répercute l'USB1 sur la table de réveil. Il suffit de placer un drapeau S4.
  • puis-je obtenir les ports USB dans S3?

Je veux que la machine se réveille à partir de Suspend-To-Ram (S3, ACPI standard) au cas où une touche touche de mon clavier externe est enfoncée. Il ne se réveille que si une touche du clavier interne de l'ordinateur portable est enfoncée ... depuis Suspend To Ram. Il semble que si je connecte une souris USB, le port USB n'est même pas alimenté. Je n'ai aucune option de BIOS pour changer ceci.

Autres informations spécifiques concernant l'appareil:

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
[...]

Si cela ne fonctionne pas, je dois expliquer correctement pourquoi :( - - mais je pense qu'il est très difficile de rechercher ce noyau interne. Toute astuce pour une bonne information ici? J'espère que c'est possible ... Je cherche juste une solution .

edit: this, se réveiller sur USB, fonctionne sous Windows!

Merci beaucoup, Marius

13
wishi

Il semble que la table ACPI du système présente un problème car aucun des périphériques USB * n'est lié à un bus PCI.

Sur mon ordinateur portable, lorsque je branche mon clavier USB, je peux voir le chemin d'accès PCI 0000: 00: 1d.0 dans la sortie dmesg :

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

À partir de là, je peux trouver le nom du périphérique ACPI dans /proc/acpi/wakeup et l'écrire pour l'activer:

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

Je suppose que, étant donné que le mappage du bus PCI sur le périphérique ACPI est manquant pour votre système, il ne sera pas possible de le faire fonctionner. Vous devrez peut-être commencer à déboguer le DSDT pour aller beaucoup plus loin. http://acpi.sourceforge.net/dsdt/index.php

4
Kees Cook

J'ai trouvé sur Ubuntu Lucid 10.04.3 avec 2.6.32-37 que l'utilisation de _/proc/acpi/wakeup_ ne vaut rien. Il semble que _/sys_ soit la seule chose qui compte.

Mon script _usb-wakeup_ lié ci-dessous fait défiler l'arborescence _/sys_ pour activer uniquement les périphériques usbhid, autrement dit le clavier et la souris. Il active également leurs concentrateurs et contrôleurs parents. C'est ce qu'il m'a fallu pour que cela fonctionne. La règle udev déclenche le script au démarrage et lorsqu'un périphérique usbhid est branché.

Le script udev requiert que le script soit au format _/usr/local/sbin_ et veille à rendre le script exécutable, _chmod 755 /usr/local/sbin/usb-wakeup_.

1
Nathan Grennan

Utilisez lsusb pour obtenir les identifiants de produit et de fournisseur de votre périphérique usb:

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

Dans mon cas, sa souris avec l'ID 0458: 002e, vous créez alors une nouvelle règle udev:

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

Insérez ce code et remplacez idVendor et idProduct par les identifiants corrects de lsusb

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

Redémarrez et testez. Testé les 11.04 et 12.04 (peut également fonctionner sur les versions inférieures). J'ai trouvé la réponse dans ce forum post (réponse de ederopaa )

1
dafyk