Jak poprawnie skonfigurować WakeOnUSB?

13

Jak poprawnie skonfigurować funkcję Wake-On-USB w systemie Ubuntu 10.04 lub 10.10 (2.6.36 i nowszym, jeśli to konieczne)? (Wake-on-USB ma miejsce, gdy komputer śpi, a na przykład klawiatura USB budzi urządzenie!) Notebook to Acer Aspire Timeline X 1830T . Nie wiem, w jaki sposób jądro Linuksa obsługuje kontrolery.

Istnieją różne sposoby podejścia do tego, na przykład / proc / acpi / wakeup ... lub UDEV ... lub coś z HAL?

/proc/acpi/wakeup pokazuje wszystkie urządzenia w S4, ale potrzebuję 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, który jest zawieszony na dysku afaik ... nie wydaje się również działać, jeśli echo USB1 do tabeli budzenia. Po prostu ustawia flagę S4.
  • czy mogę uzyskać porty USB w S3?

Chcę, aby urządzenie wybudzało się z trybu Suspend-To-Ram (S3, ACPI standard) na wypadek naciśnięcia klawisza na mojej zewnętrznej klawiaturze . Budzi się tylko wtedy, gdy zostanie naciśnięty klawisz na wewnętrznej klawiaturze laptopa ... z Suspend To Ram. Wygląda na to, że jeśli podłączę mysz USB, port USB nie będzie nawet zasilany. Nie mam opcji BIOS, aby to zmienić.

Dalsze szczegółowe informacje dotyczące urządzenia:

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

Jeśli to nie działa, muszę poprawnie wyjaśnić, dlaczego :( - ale myślę, że bardzo trudno jest zbadać wewnętrzne jądro. Wszelkie wskazówki na temat dobrych informacji tutaj? Mam nadzieję, że jest to możliwe ... Po prostu szukam dowolnego rozwiązania .

edycja: to, budzenie się na USB, działa w systemie Windows!

Wielkie dzięki, Marius

wishi
źródło
1
Jeśli, jak mówisz, nie masz opcji BIOS do przepuszczania sygnałów z zewnętrznych portów USB, a jeśli zewnętrzne urządzenia USB nawet nie mają zasilania (ma to sens w przypadku notebooków zasilanych bateryjnie) - jak, do diabła, to w takim razie powinno to działać? Ubuntu nie ma do tego magii.
Takkat
Działa na Windws. Zakładam więc, że istnieje możliwość przekazania określonych flag do HW. ;) Mam mentalność Top Gun, jeśli chodzi o sprzęt i Linuksa: każdy może latać samolotem transportowym i uruchamiać Windows. Ale tylko kilka osób może latać odrzutowcami i obsługiwać Linuksa;)
wishi
O tak, Top Gun: każdy może zawiesić system Windows, ale awaria Linuksa to naprawdę ciężka praca ;-). Jeśli funkcja Wake on LAN działa w systemie Windows, urządzenie USB z pewnością jest zasilane (być może w trybie oszczędzania energii lub mniej więcej).
Takkat

Odpowiedzi:

4

Wygląda na to, że coś może być nie tak z tabelą ACPI systemu, ponieważ żadne z urządzeń USB * nie jest podłączone do szyny PCI.

Po podłączeniu klawiatury USB na laptopie widzę ścieżkę PCI 0000: 00: 1d.0 na dmesgwyjściu:

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

Stamtąd mogę znaleźć nazwę urządzenia ACPI /proc/acpi/wakeupi wysłać ją w celu włączenia:

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

Zakładam, że ponieważ brakuje mapowania magistrali pci na urządzenie ACPI dla twojego systemu, nie będzie możliwe uruchomienie go. Może być konieczne rozpoczęcie debugowania DSDT, aby uzyskać znacznie więcej. http://acpi.sourceforge.net/dsdt/index.php

Kees Cook
źródło
1

Znalazłem na Ubuntu Lucid 10.04.3 z 2.6.32-37, że używanie /proc/acpi/wakeupjest bezwartościowe. Wydaje się, że /systo jedyna rzecz, która ma znaczenie.

Mój usb-wakeupskrypt, do którego link znajduje się poniżej, prowadzi /sysdrzewo w odwrotnej kolejności, aby włączyć tylko urządzenia USB, czyli klawiaturę i mysz. Umożliwia także ich nadrzędne koncentratory i kontrolery. Właśnie to zajęło mi uruchomienie go. Reguła udev powoduje uruchomienie skryptu podczas rozruchu i po podłączeniu dowolnego urządzenia USB.

Skrypt udev wymaga skryptu być /usr/local/sbin, i upewnij się, aby wykonywalnego skryptu chmod 755 /usr/local/sbin/usb-wakeup.

Nathan Grennan
źródło
1

Użyj lsusb, aby uzyskać identyfikator produktu i dostawcy urządzenia USB:

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

W moim przypadku jego mysz o identyfikatorze 0458: 002e tworzy nową regułę udev:

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

Wstaw ten kod i zastąp idVendor i idProduct poprawnymi identyfikatorami z lsusb

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

Uruchom ponownie i przetestuj. Testowany w 11.04 i 12.04 (może działać również w niższych wersjach). Znalazłem odpowiedź w tym poście na forum (odpowiedź ederopaa )

dafyk
źródło
1
Witamy w Ask Ubuntu! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Eliah Kagan,