To nie są porty USB, a kontrolery. Mój laptop ma 3 porty USB, a w
/proc/acpi/wakeup jest tylko
EHC1 i
EHC2, które odpowiadają dwóm osobnym szynom USB. Pierwsza szyna USB (EHC1) w tym przypadku jest odpowiedzialna za obsługę zewnętrznych portów USB (tych do których się podłącza różne urządzenia). Druga szyna obsługuje urządzenia wbudowane w laptop, w tym przypadku webcam (być może coś jeszcze). Jak sobie rzucisz okiem na
lsusb, to zobaczysz coś takiego:
Kod:
# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
No i są dwie szyny. Przełączając to samo urządzenie po każdym z portów laptopa, zmieniają się jedynie numery portów na szynie pierwszej (wyżej ma numer 02), co wygląda tak:
Kod:
# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
|__ Port 3: Dev 50, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/3p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
Port 3 przy urządzeniu oznacza, że to urządzenie (mysza tutaj) została wpięta w trzeci port USB na konkretnej szynie. Jakby wpiąć to urządzenie w drugi port USB, to by był
Port 2, wciąż na tej samej szynie.
Jeśli teraz wyłączę na kontrolerze EHC1 możliwość wybudzania maszyny, to żadne urządzenie podłączone do portów USB tego laptopa nie będzie w stanie już go wybudzić, bez znaczenia czy to będzie klawiatura, mysza czy cokolwiek innego. Dlatego tego typu rozwiązanie upośledzające kontroler bym odradzał. xD
O wiele lepszym wyjściem jest napisanie reguły dla udev'a, która skonfiguruje odpowiednio parametry urządzenia bez ruszania samego kontrolera. Dla przykładu:
Kod:
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
ATTRS{idVendor}=="09da", ATTRS{idProduct}=="000a", \
RUN+="/bin/sh -c 'echo disabled > /sys$env{DEVPATH}/power/wakeup'"
Ta reguła mówi tyle, że jeśli zostanie podłączone urządzenie usb do kompa i będzie to urządzenie o numerach podanych wyżej, to ma zostać uruchomione polecenie, w którym zostanie przesłane
disabled do pliku
power/wakeup w ścieżce tego konkretnego urządzenia. Trzeba sobie tylko numery uzupełnić z wyjścia
lsusb i tyle. xD
Dodano po pewnym czasie:
Jak coś to napisałem
kawałek arta na ten temat. xD