Miałem ten sam problem z Ubuntu 16.04 (Xenial Xerus) i szukałem wielu rozwiązań ...
Rozwiązanie znajduje się na końcu tej odpowiedzi, jeśli nie interesuje Cię historia kontekstu. Kontekst może wyglądać jak niepotrzebna blabla (może tak jest), ale myślę, że może pomóc czytelnikom sprawdzić, czy problem rozwiązany na moim komputerze jest taki sam.
KONTEKST
Desperacko testowałem bezskutecznie w pobliżu wszystkich wskazówek, które znalazłem w sieci, po każdym ponownym uruchomieniu ponownie:
usbcore.autosuspend=-1
Parametr rozruchowy jądra „/ etc / default / grub”
- runtime-pm.conf w trybie laptopa
CONTROL_RUNTIME_AUTOSUSPEND=0
- całkowite wyłączenie narzędzi trybu laptopa z pliku „/etc/laptop-mode/laptop-mode.conf”, potwierdzając, że problem nie jest związany z tą funkcją jądra. Dla pewności sprawdziłem różne sposoby, że tryb laptop_mode już nie działa. (Patrz:
man laptop-mode.conf
i man laptop_mode
)
- Przeczytałem kilka sztuczek na temat „/etc/laptop-mode/conf.d/usb-autosuspend.conf”, ale ten plik nie istnieje w mojej wersji Ubuntu 16.04 z laptop-mode-tools v1.68
- Deinstalacja aplikacji powertop . Na forach często podejrzewa się, że powodują problemy z automatycznym zawieszaniem, a dziś wiem, że w moim przypadku nie było to prawdą, ponieważ odinstalowanie niczego nie naprawiło.
options usbcore autosuspend=1
w '/etc/modprobe.d/usb.conf' również był nieefektywny
- Skrypt „/etc/udev/rules.d/60-power.rules” udostępniony przez oficjalną Wiki Gentoo
rules
plik specyficzny dla urządzenia dla udev
„/etc/udev/rules.d/usb-power.rules” zalecany przez Serge Y. Stroobandt
Po przeczytaniu wszystkich tych technicznych informacji zrozumiałem tylko, że przyczyna była związana z moją wartością „/ sys / module / usbcore / parameters / autosuspend” zatrzymaną na dwie sekundy, bez względu na to, jaką zmianę zrobię w mojej konfiguracji. Możesz to sprawdzić za pomocą cat
polecenia:
$ cat /sys/module/usbcore/parameters/autosuspend
2
I tak, moja mysz została wyłączona dokładnie po dwóch sekundach, więc wiedziałam, że jestem na dobrej drodze. Oczywiście przetestowałem echo -1
polecenie, które widziałem tu i tam, -1
mające na celu wyłączenie automatycznego zawieszania ... ale:
sudo echo -1 > sys/module/usbcore/parameters/autosuspend
bash: /sys/module/usbcore/parameters/autosuspend: Permission denied
Nie rozumiałem, dlaczego odmówiono zgody nawet w trybie sudo. Nie próbowałem jako root, ponieważ po prostu nie sądziłem, że może to stanowić problem. Oto błąd :(
Dzięki komentarzom Alexa Dekkera i Bryce'a nauczyłem się wyłączać automatyczne zawieszanie tylko dla mojej myszy. Ale oczywiście moje pierwsze próby się nie powiodły bash: Permission denied error
, więc musiałem poczekać na zrozumienie mojego pomieszania root / sudo przedecho -1
polecenie sugerowane przez Alexa w końcu zadziała.
Znalazłem też lepszy sposób na wykonanie polecenia jako użytkownik root bez logowania jako root. Różnica między używaniem powłoki root a używaniem poleceń root jest dobrze wyjaśniona na oficjalnej stronie wiki Ubuntu RootSudo . Uwielbiam uczyć się do takich rzeczy, ale hej! Dlaczego zawsze trzeba się tego uczyć w sposób bolesny? lol
OMG, to był prawdziwy ból głowy i zajęło dużo czasu, aby Noob jak ja zrozumiał, jak zwykle mówię: „brak mózgu, brak korzyści”. Mój wyraźnie potrzebuje więcej szkoleń.
Przestańmy więc mówić o sobie i naprawmy to! Kontynuuj poniżej ...
Bardzo polecam drugie rozwiązanie dla twojego bezczynnego zewnętrznego dysku twardego, aby nie rozładowywać baterii laptopa bez powodu. Ale daję wam oba rozwiązania, ponieważ kto kocha swoją wolność, powinien też kochać siebie nawzajem :)
ROZWIĄZANIE 1
Aby wyłączyć automatyczne zawieszanie na wszystkich urządzeniach / portach USB
Otwórz terminal i wykonaj:
sudo sh -c "echo -1 > /sys/module/usbcore/parameters/autosuspend"
Jest to rzeczywiście tymczasowe rozwiązanie, które pozwala natychmiast przetestować, czy to polecenie rozwiązuje problem automatycznego zawieszania myszy lub klawiatury.
Jeśli twoje urządzenia USB działają teraz dobrze, po prostu edytuj skrypt „/etc/rc.local”, aby uruchamiał to polecenie przy każdym uruchomieniu systemu. W ten sposób naprawisz coś na stałe . Edytuj plik, na przykład za pomocą nano:
sudo nano /etc/rc.local
i umieść echo -1
polecenie w pliku „/etc/rc.local” przed exit 0
wierszem
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
(...)
# By default this script does nothing.
echo -1 > /sys/module/usbcore/parameters/autosuspend
exit 0
Zrestartuj swój komputer
(Proszę sprawdzić Ważną uwagę na końcu.)
.
ROZWIĄZANIE 2
Aby wyłączyć automatyczne zawieszanie dla określonego urządzenia / portu USB
Dostępne są opcje zasilania dla urządzenia USB /sys/bus/usb/devices/n-n/power
. To, co n-n
jest dla danego urządzenia, wymaga kilku manipulacji, aby się dowiedzieć, ale nie jest to skomplikowane. Poniższy przykład pokazuje, jak ustaliłem, że numer portu USB mojego odbiornika myszy bezprzewodowej jest 3-1
, więc dostosuj to do własnej sytuacji:
Odłącz urządzenie USB, otwórz Terminal i wykonaj sudo dmesg
polecenie
Podłącz urządzenie USB z powrotem, a następnie uruchom sudo dmesg
ponownie w Terminalu, aby sprawdzić zmiany
Oto dmesg
jak wygląda koniec moich wyników po ponownym podłączeniu myszy do gniazda:
[40208.575249] usb 3-1: new full-speed USB device number 8 using xhci_hcd
[40208.705233] usb 3-1: New USB device found, idVendor=062a, idProduct=4102
[40208.705240] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[40208.705245] usb 3-1: Product: 2.4G Wireless Mouse
[40208.705248] usb 3-1: Manufacturer: MOSART Semi.
[40208.707679] input: MOSART Semi. 2.4G Wireless Mouse as /devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1:1.0/0003:062A:4102.0007/input/input24
[40208.763946] hid-generic 0003:062A:4102.0007: input,hiddev0,hidraw0: USB HID v1.10 Mouse [MOSART Semi. 2.4G Wireless Mouse] on usb-0000:00:14.0-1/input0
Teraz widzimy, że port, do którego podłączono moje urządzenie USB, jest zidentyfikowany jako usb 3-1
.
**Note:** this trick concerns the USB port ID, not a device ID. For example, if I plug my mouse to the next USB port, it becomes identified as `usb 3-2` in the `dmesg` result. But this solution #2 remains very useful if you take the habit to always plug your mice or keyboard to the same port, and it's generally what people use to do unconsciously ;)
Wykonaj następujące polecenie w swoim terminalu, zmieniając mój numer portu 3-1
na ten, który znalazłeś we własnym dmesg
wyniku:
sudo sh -c "echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms"
Zauważ, że autosuspend_delay_ms
zastąpił przestarzałe autosuspend
od jądra w wersji 2.6.38, zgodnie z oficjalną dokumentacją Linuksa .
Jest to rzeczywiście rozwiązanie tymczasowe , ale można teraz łatwo przetestować, czy to polecenie naprawiło problem automatycznego zawieszenia myszy lub klawiatury.
Jeśli urządzenie USB działa teraz dobrze, po prostu edytuj skrypt „/etc/rc.local”, aby uruchamiał to polecenie przy każdym uruchomieniu systemu. W ten sposób naprawisz coś na stałe . Edytuj plik, na przykład za pomocą nano:
sudo nano /etc/rc.local
i umieść echo -1
polecenie w pliku „/etc/rc.local” przed exit 0
wierszem, jeszcze raz nie zapomnij zmienić numeru portu n-n
w poleceniu:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
(...)
# By default this script does nothing.
echo -1 > /sys/bus/usb/devices/3-1/power/autosuspend_delay_ms
exit 0
Zrestartuj swój komputer
.
Ważne: nie zapominaj, że będziesz musiał ponownie wykonać polecenie sudo sh -c
„tymczasowe” ręcznie, jeśli odłączysz / ponownie podłączysz urządzenie USB, gdy środowisko pulpitu jest już uruchomione, nawet jeśli podłączysz je z powrotem do tej samej wtyczki USB. Normalnie, tylko dlatego, że plik „/etc/rc.local” jest wywoływany tylko raz podczas uruchamiania systemu.
W każdym razie możliwe są obejścia. Ludzie lepiej wykwalifikowani mogą mieć bardziej sprytne metody, ale w Ubuntu skonfigurowałem aliasy specyficzne dla portów. Pozwala mi to korzystać z prostych poleceń usb1
lub usb2
wybiórczo, jeśli muszę odłączyć / ponownie podłączyć urządzenie USB tu lub tam. Ty też! Możesz także tworzyć aliasy poleceń, aby grać krótkimi słowami zamiast wpisywać pełne polecenie. Łatwo jest ustawić w mniej niż dwie minuty, a także działa z Alt+ F2:)
Mile widziane byłyby także inne pomysły, aby to ułatwić.