Powodem, dla którego ludzie publikują takie pytania, jest przerażająca - wręcz „ ZŁA ” - funkcja automatycznego wstrzymywania USB .
Automatyczne zawieszenie zmniejsza moc do „bezczynnego” urządzenia USB i jeśli sterownik urządzenia nie obsługuje tej funkcji prawidłowo, kontakt z urządzeniem może być niemożliwy. Zatem włączanie / wyłączanie portu USB jest objawem problemu, a nie samym problemem.
Pokażę Ci, jak GLOBALNIE wyłączyć automatyczne zawieszanie, eliminując potrzebę ręcznego włączania i wyłączania portów USB:
Krótka odpowiedź:
Nie trzeba do edycji „ autosuspend_delay_ms ” indywidualnie: automatyczne usypianie USB może być wyłączone globalnie i uporczywie za pomocą następujących poleceń:
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/&usbcore.autosuspend=-1 /' /etc/default/grub
update-grub
systemctl reboot
Na końcu „długiej odpowiedzi” pojawia się zrzut ekranu Ubuntu 18.04, który ilustruje, w jaki sposób osiągnięto moje wyniki.
Długa odpowiedź:
Prawdą jest, że dokumentacja jądra zarządzania energią USB stwierdza, że autosuspend ma zostać wycofane, a zamiast tego „ autosuspend_delay_ms ” służy do wyłączania automatycznego zawieszania USB:
"In 2.6.38 the "autosuspend" file will be deprecated
and replaced by the "autosuspend_delay_ms" file."
JEDNAK moje testy wykazały, że ustawienie usbcore.autosuspend=-1
w / etc / default / grub, jak poniżej, może być używane jako GLOBALNY przełącznik funkcji automatycznego zawieszania USB - NIE musisz edytować poszczególnych plików " autosuspend_delay_ms ".
Ten sam dokument, do którego prowadzi powyższy link, stwierdza, że wartość „0” jest WŁĄCZONA, a wartość ujemna jest WYŁĄCZONA :
power/autosuspend_delay_ms
<snip> 0 means to autosuspend
as soon as the device becomes idle, and negative
values mean never to autosuspend. You can write a
number to the file to change the autosuspend
idle-delay time.
Na poniższym zrzucie ekranu Ubuntu 18.04 z adnotacjami, pokazującym, w jaki sposób moje wyniki zostały osiągnięte (i można je odtworzyć), proszę zauważyć, że domyślną wartością jest „0” ( włączone ) w autosuspend_delay_ms .
Następnie zauważ, że po TYLKO ustawieniu usbcore.autosuspend=-1
w Grub, te wartości są teraz ujemne ( wyłączone ) po ponownym uruchomieniu. Pozwoli mi to zaoszczędzić kłopotów z edytowaniem poszczególnych wartości i może teraz wyłączyć automatyczne zawieszanie USB za pomocą skryptu.
Mam nadzieję, że to sprawia, że wyłączenie automatycznego zawieszania USB jest trochę łatwiejsze i bardziej skryptowalne -
power/level
jest teraz przestarzały; użyjpower/control
zamiast tego . (power/wakeup
jest ok.) Ponadto akceptuje tylko „auto” i „on”, a nie „suspend”. „auto” jest wystarczająco inteligentne i jeśli zasilanie nie jest wyłączane w stanie bezczynności, jest to wina urządzenia. W każdym razie nie możesz ręcznie wyłączyć zasilania. Aby uzyskać więcej, zobacz odpowiedź poniżej autorstwa tlwhitec i dokumentację jądra: kernel.org/doc/Documentation/usb/power-management.txt