Jak mogę wyłączyć automatyczne zawieszanie USB dla konkretnego urządzenia?

18

Jest to związane z zagadnieniem omawianym w myszy bezprzewodowej, która tymczasowo zawiesza się (zasypia) przy zasilaniu z baterii .

Podsumowanie: mysz zawiesza się podczas pracy na baterii, ponieważ po pewnym czasie jest automatycznie zawieszana i potrzebuje więcej czasu na przebudzenie.

Wyłączenie automatycznego zawieszania USB dla odbiornika myszy w PowerTOP jest rozwiązaniem tymczasowym, ale nie przetrwa ponownego uruchomienia.

Jak mogę na stałe wyłączyć automatyczne zawieszanie USB tylko dla jednego określonego urządzenia?

Preferowane jest rozwiązanie, które nie wymaga instalowania dodatkowych pakietów (w końcu chcę coś wyłączyć ), ale nie jest wymagane. Usunięcie PowerTOP (które wydaje się być rozwiązaniem dla niektórych) nie jest tym, czego chcę - lubię PowerTOP ...

A instalowanie w laptop-mode-toolscelu całkowitego wyłączenia automatycznego zawieszania USB też nie jest tym, czego chcę, więc nowe pytanie.

Ponadto: czy wpłynie to na baterię mojego notebooka? Odbiornik unifikujący Logitech dla myszy pozostaje cały czas podłączony, więc jeśli to uniemożliwi automatyczne zawieszanie się wszystkich urządzeń, które prawdopodobnie byłyby złe.

black_puppydog
źródło

Odpowiedzi:

25

Ubuntu 16.04 (Xenial Xerus)

sudo apt install tlp
sudo lsusb

Znajdź identyfikator wejściowy urządzenia USB - powinien on wyglądać 1234:5678.

Edytuj plik sudo vi /etc/default/tlpi dodaj identyfikator wejściowy urządzenia, USB_BLACKLISTdodając następujący wiersz z identyfikatorem wejściowym urządzenia w następujący sposób:

USB_BLACKLIST="1234:5678"

Ubuntu 14.04 (Trusty Tahr)

Jak wspomniano tutaj na hecticgeek.com , sztuczka składa się z dwóch części:

Używanie lsusbdo sprawdzania identyfikatorów urządzeń USB, dla których chcesz wyłączyć automatyczne zawieszanie.

A następnie dodanie ich do AUTOSUSPEND_USBID_BLACKLISTw /etc/laptop-mode/conf.d/runtime-pm.conf( usb-autosuspend.confaż Ubuntu 14.04) plik konfiguracyjny (szczegóły są dobrze udokumentowane tam również).

dlukes
źródło
Właściwie moja mysz zgubiła się / została skradziona wkrótce potem, więc nie mogę tego przetestować. Ale sądząc z .confpliku, właśnie tego chciałem :)
black_puppydog
Wygląda na to, że AUTOSUSPEND_RUNTIME_DEVID_BLACKLISTjuż jest (Ubuntu 17.04)
częściowo
2
tlpZamiast tego zainstalowano laptopy Dell Ubuntu z Ubuntu 16.04 LTS laptop-mode-tools, więc jeśli chcesz umieścić na czarnej liście urządzenia USB w trybie automatycznego zawieszenia na tych laptopach, ustaw USB_BLACKLISTustawienia w pliku /etc/default/tlp- zmiany zostaną wprowadzone natychmiast
Stuart Caie
Identyfikatory HID są już na czarnej liście od tlp: / etc / default / tlp # Uwaga: urządzenia wejściowe (usbhid) są automatycznie wykluczane (patrz poniżej) # USB_BLACKLIST = "045e: 07a5"
Tom
Dokumentacja TLP wspomina, że ​​jest to zarządzanie energią dla laptopów (a dokładniej ThinkPad). Czy to działa na komputerach stacjonarnych?
Konrad Rudolph
7

Miałem podobny problem z komputerami na Avocent KVM , w których narzędzia w trybie laptopa nie zostały zainstalowane (i tak czy inaczej nie chciałem tego rozwiązać). W moim przypadku automatyczne zawieszanie KVM spowodowało, że klawiatura i mysz zachowywały się chaotycznie (po kilku sekundach bezczynności zawieszałyby i tracą dane wejściowe na chwilę, dopóki ich nie kliknie i potrząśnie).

Kiedy uruchomiłem PowerTOP i wyłączyłem automatyczne zawieszanie USB dla Avocent, PowerTOP powiedział mi, że polecenie wyłączenia go z wiersza poleceń to:

echo 'on' > '/sys/bus/usb/devices/3-10/power/control'

Bit „3-10” będzie różny w różnych systemach. Nie jestem pewien, jak to ustalić poza uruchomieniem PowerTOP, ale prawdopodobnie jest jakiś sposób.

Zamiast tego użyłem reguły udev, aby dopasować identyfikator produktu mojego urządzenia:

trent + 14.04: /etc/udev/rules.d$ cat 10-usb-avocent-kvm-pm.rules

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0624", ATTR{idProduct}=="0013", ATTR{product}=="SC Secure KVM", TEST=="power/control", ATTR{power/control}:="on"

Aby uzyskać prawidłowe informacje o udev, uruchomiłem:

udevadm info -a --path /sys/bus/usb/devices/N-N
Bryce
źródło
6

W /etc/laptop-mode/conf.d/usb-autosuspend.confznajdziesz:

# Enable USB autosuspend feature?
# Set to 0 to disable
CONTROL_USB_AUTOSUSPEND="auto"

Powinieneś to zmienić na CONTROL_USB_AUTOSUSPEND="0".

Spowoduje to automatycznie, że każde urządzenie USB będzie miało wartość „on” w /sys/bus/usb/devices/"DEVICE ID"/power/control. Spowoduje to, że wartość plików automatycznego zawieszenia będzie nieaktywna:

$ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend
2
$ cat /sys/bus/usb/devices/"DEVICE ID"/power/autosuspend_delay_ms
2000
Mahmoud Mubarak
źródło
5

Dostępne są opcje zasilania dla urządzenia USB /sys/bus/usb/devices/n-n/power. Niestety, czym jest nn dla danego urządzenia, trzeba się trochę zastanowić, więc myślę, że okaże się to przeszkodą, jeśli chodzi o posiadanie skryptu, który automatycznie

echo -1 > /sys/bus/usb/devices/3-2/power/autosuspend

aby wyłączyć automatyczne zawieszanie na tym urządzeniu. Magiczna nn faktycznie pojawia się na wyjściu

udevadm info --export-db

więc myślę, że udev będzie tu twoim przyjacielem; jakiś skrypt udev wpisany w parametrze identyfikującym mysz, a następnie uruchamia skrypt, który echo -1 do odpowiedniego pliku.

Alex Dekker
źródło
4
Czy to przetrwa restart? echo w / sys wydaje się nietrwałe, prawda?
black_puppydog
2
Umieść polecenie w swoim /etc/rc.local przed wierszem „exit 0”
Bryce,
4

Stworzyłem własną regułę udev :

ACTION=="add", ATTR{idVendor}=="0cf3", ATTR{idProduct}=="3004", RUN="/bin/sh -c 'echo 0 >/sys/\$devpath/authorized'"
trey
źródło
2

W Ubuntu 16.04 LTS (Xenial Xerus) znalazłem rozwiązanie w /etc/laptop-mode/conf.d/runtime-pm.conf:

# Auto-Suspend timeout in seconds
# Number of seconds after which the USB devices should suspend
AUTOSUSPEND_TIMEOUT=1800

To było pierwotnie 2dla mnie ustawione . 30 minut jest znacznie bardziej rozsądne.

Po zmianie wykonaj:

sudo service laptop-mode restart

Nadal nie jestem pewien, jak to całkowicie wyłączyć, ale teraz jest to dla mnie w porządku.

Berto
źródło