Obudź się z trybu wstrzymania za pomocą bezprzewodowej klawiatury lub myszy USB (dla dowolnego systemu Linux Distro)

18

Szukałem rozwiązania przez wiele godzin, a może dłużej. Właśnie to znalazłem. Chcę się tym wszystkim podzielić. W ten sposób łatwiej będzie googlować ten problem, aby szybciej znaleźć rozwiązanie. Tak, jak mówi tytuł, poniżej znajduje się rozwiązanie.

Pavlos Theodorou
źródło

Odpowiedzi:

27

uderzył w terminal:

grep . /sys/bus/usb/devices/*/power/wakeup

Dla mnie wynik był taki, że wszystkie USB były wyłączone. Więc teraz wpisz:

1.

sudo su

mamy teraz rootowanie uprzywilejowania.

2. Mam 8 portów USB ( robisz to dla tylu portów USB, które masz ), więc:

echo enabled > /sys/bus/usb/devices/usb1/power/wakeup
echo enabled > /sys/bus/usb/devices/usb2/power/wakeup
echo enabled > /sys/bus/usb/devices/usb3/power/wakeup
echo enabled > /sys/bus/usb/devices/usb4/power/wakeup
echo enabled > /sys/bus/usb/devices/usb5/power/wakeup
echo enabled > /sys/bus/usb/devices/usb6/power/wakeup
echo enabled > /sys/bus/usb/devices/usb7/power/wakeup
echo enabled > /sys/bus/usb/devices/usb8/power/wakeup

Śmiało i przetestuj to. Teraz możesz obudzić się z dowolnej bezprzewodowej i przewodowej klawiatury i myszy USB.

Zatem powodem, dla którego musimy włączyć wszystkie z nich, jest to, że w następnym kroku napiszemy to w rc.local, aby wykonać polecenie po każdym ponownym uruchomieniu, a po ponownym uruchomieniu niektóre dystrybucje linuksowe (może wszystkie) zmienią porty USB. Nie musimy się martwić, że coś pójdzie nie tak, włączając je wszystkie, ponieważ Linux jest w stanie zawieszenia lub hibernacji, nie może używać Wi-Fi do pobierania czegokolwiek, więc nie obudzi się bez celowego przebudzenia .

Następny krok:

3)

sudo nano /etc/rc.local

i wklejamy wszystko od kroku 2. tam (oczywiście przed wyjściem 0).

Otóż ​​to. Od teraz możemy używać naszego bezprzewodowego USB i myszy, aby obudzić się z trybu wstrzymania.

Mam nadzieję, że to zadziała dla was wszystkich. Niniejszy przewodnik powstał po przetestowaniu wszystkich innych możliwych rozwiązań w Internecie.

Pavlos Theodorou
źródło
6
Jeśli chcesz dowiedzieć się, które urządzenie jest które, możesz poszukać /sys/bus/usb/devices/<device id>/productopisu tekstowego.
ntc2
Włączyłem wszystkie urządzenia w „ grep . /sys/bus/usb/devices/*/power/wakeup”, ale nadal nie działałem. Może dlatego, że klawiatura i mysz są połączone pośrednio - bezprzewodowo z kluczem sprzętowym znajdującym się na ekranie? Ekran jest podłączony przez USB do laptopa.
AlikElzin-kilaka
1
jak powiedział @ ntc2, użyj tego, aby zobaczyć opis każdego: grep . /sys/bus/usb/devices/*/productpomógł mi dowiedzieć się, na co patrzę
Ben Yitzhaki
Jeśli to nadal nie działa, upewnij się, że urządzenie (klawiatura / mysz) jest nadal zasilane, gdy komputer jest w trybie uśpienia. Jeśli w urządzeniu nie ma diody LED, możesz użyć monitora zasilania USB (można je znaleźć za około 10 USD online), aby sprawdzić zasilanie portu USB.
J Smith,
Stała część tego pytania nie działa już w wersji co najmniej ubuntu 18.04. Dodanie ( askubuntu.com/a/874701/516072 ) do tej odpowiedzi dostarczone przez pavlos-theodorou pomogło na stałe w Ubuntu 18.04
Laurens
11

Oprócz powyższego przewodnika chcę dodać te informacje, ponieważ niedawno odkryłem, że niektóre bezprzewodowe urządzenia USB po przebudzeniu ze snu wracają, aby wyłączyć. Powtarzam, robią to tylko niektóre urządzenia USB, nie wszystkie. Dlatego nie dodałem tego małego przewodnika do mojego przewodnika.

Więc zrobiłeś tak, jak nakazałem powyżej, a komputer z powodzeniem budzi się, ale później tego samego dnia nagle się nie budzi.

Rozwiązanie:

Otwórz terminal i wykonaj:

lsusb

Przy informacji identyfikatora urządzenia klawiatury 4 pierwsze cyfry to identyfikator dostawcy, a 4 kolejne cyfry to identyfikator produktu (patrz zrzut ekranu) wprowadź opis zdjęcia tutaj

Następnie wykonaj:

sudo nano /etc/udev/rules.d/10-wakeup.rules

Gdzie „wakeup” wpisz żądaną nazwę skryptu. Liczba 10 jest priorytetem w przypadku, gdy masz wiele innych reguł udev, im niższa liczba, którą „reguła” zostanie wykonana przed innymi.

Skopiuj wklej to i zamień identyfikator dostawcy i identyfikator produktu na własny identyfikator dostawcy i identyfikator produktu klawiatury bezprzewodowej.

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="062a", ATTRS{idProduct}=="4101" RUN+="/bin/sh -c 'echo enabled > /sys/bus/usb/devices/usb8/power/wakeup'"

* usb8 to dla mnie klawiatura bezprzewodowa (możesz to również zobaczyć na zrzucie ekranu (Bus 008)), zamień ją na własną.

Ctrl+, Oaby zapisać, Ctrl+, Xaby wyjść i uruchomić ponownie.

Pavlos Theodorou
źródło
4
Lepiej włączyć to do swojej pierwszej odpowiedzi.
ntc2
1
to są 2 różne rzeczy. 1. to odpowiedź na problem z pobudką. drugi jest bardziej jak „Jak stworzyć regułę, aby nie uruchamiać systemu” i jest to tylko „dodatek”, ponieważ nie wszyscy wiedzą, jak to zrobić i nie ma na to prostego amatorskiego przewodnika.
Pavlos Theodorou
2

Odpowiedź Pavlosa Theodorou jest bardzo pomocna. Chciałbym dodać, że możesz znaleźć urządzenie USB, do którego podłączona jest twoja mysz / klawiatura podczas uruchamiania, przepuszczając dmesg przez grep kilka razy, a następnie egrepuj raz, a na końcu używając ogona, aby upewnić się, że jest najnowszy wejście.

Korzystając z tej metody, nie musisz włączać budzenia na WSZYSTKICH portach USB.

Umieszczam następujące elementy w moim pliku /etc/rc.local i za każdym razem znajduje on mój odbiornik logitech, nawet jeśli został przeniesiony z jednego portu USB na inny. Wystarczy zastąpić nazwę swojej klawiatury i myszy z dmesg zamiast „Logitech K270”

KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup

Działa to przy starcie, ale wydaje się, że nie uruchamia się po przebudzeniu, więc musiałem umieścić plik skryptu w / lib / systemd / system-sleep /. Tworzenie go, ustawić go jako globalnie wykonywalny i nadać mu nazwę, która zaczyna się od podwójnego cyfrową liczbę pomiędzy 00 a 99. Mój skrypt jest następująca ponownie substite swoją klawiaturę / mysz verbage z dmesg:

#!/bin/sh

# Action script to enable wake after suspend by keyboard or mouse

if [ $1 = post ]
    then
    KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
    echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup
fi

if [ $1 = pre ]
    then
    KB="$(dmesg | grep "Logitech K270 as" | grep -o -P "usb.{0,5}" | egrep -o ".{0,3}$" | tail -1)"
    echo enabled > /sys/bus/usb/devices/${KB}/power/wakeup
fi

Z jakiegoś powodu nie potrafię wyjaśnić, że polecenie „po” uśpieniu, jeśli oświadczenie działa tylko co drugi budzenie… ale „przed” uśpieniem, jeśli oświadczenie wydaje się działać za każdym razem.

jcn1
źródło
1

Żadna z wyżej wymienionych odpowiedzi nie pomogła mi. Dlatego zamieszczam tutaj swój własny.

Włączanie / wyłączanie wybudzania z trybu wstrzymania dla urządzeń USB

Testowany w KDE neon 5.16.2, oparty na Ubuntu 18.04, ale powinien działać w dowolnej dystrybucji.


1. Pokaż listę urządzeń USB, aby zidentyfikować to, które chcesz włączyć / wyłączyć:

grep . /sys/bus/usb/devices/*/product

powinieneś uzyskać coś takiego:

/ sys / bus / usb / devices / 3-3 / product: Cord Optical Mouse
/sys/bus/usb/devices/3-4.3/product:802.11n Adapter sieci WLAN
/sys/bus/usb/devices/3-4.4/product:USB Odbiornik
/sys/bus/usb/devices/3-4/product:USB2.0 Hub
/sys/bus/usb/devices/4-4/product:USB3.0 Hub
/ sys / bus / usb / devices / usb1 / product: EHCI Host Controller
/ sys / bus / usb / devices / usb2 / product: EHCI Host Controller
/ sys / bus / usb / devices / usb3 / product: xHCI Host Controller
/ sys / bus / usb / devices / usb4 / product: xHCI Host Controller


2. Sprawdź status budzenia wszystkich urządzeń USB:

grep / sys / bus / usb / devices / * / power / wakeup

wynik powinien być mniej więcej taki:

/ sys / bus / usb / devices / 1-1 / power / wakeup: wyłączone
/ sys / bus / usb / devices / 2-1 / power / wakeup: wyłączone
/ sys / bus / usb / devices / 3-11 / power / wakeup: wyłączone
/ sys / bus / usb / devices / 3-3 / power / wakeup: włączone
/sys/bus/usb/devices/3-4.4/power/wakeup:disabled
/ sys / bus / usb / devices / 3-4 / power / wakeup: wyłączone
/ sys / bus / usb / devices / 4-4 / power / wakeup: wyłączone
/ sys / bus / usb / devices / usb1 / power / wakeup: wyłączone
/ sys / bus / usb / devices / usb2 / power / wakeup: wyłączone
/ sys / bus / usb / devices / usb3 / power / wakeup: wyłączone
/ sys / bus / usb / devices / usb4 / power / wakeup: wyłączone

W moim przypadku budzenie jest włączone tylko dla urządzenia USB 3-3, które zgodnie z poprzednią listą to „Cord Optical Mouse”.

Chcę włączyć wybudzanie z trybu zawieszenia tylko dla klawiatury bezprzewodowej i wyłączyć ją na resztę. Odbiornik USB z klawiaturą jest podłączony do koncentratora i odpowiada 3-4.4 z poprzedniej listy („Odbiornik USB”).


3. Utwórz skrypt, który działa:

Aby mieć uprawnienia roota:

sudo su

Następnie tworzymy plik dla skryptu (plik można nazwać „usbwakeup” lub dowolny opisowy opis):

nano /etc/init.d/usbwakeup 

Treść pliku. Po prostu dostosuj go do swoich potrzeb, zmieniając sekcję „AKCJE SKRYPCJI” (Lubię dodawać komentarze do skryptów, aby wiedzieć, co faktycznie robią, jeśli pewnego dnia je ponownie otworzę):

#! / bin / bash
#
#######################
# INFORMACJE OGÓLNE #
#######################
#
# - Ten skrypt włącza / wyłącza wybudzanie z zawieszenia # dla urządzeń USB.
#
# - Skrypt wymaga uprawnień do wykonywania.
#
# - Aby skrypt mógł zostać wykonany podczas uruchamiania systemu, musi istnieć
# symboliczny link do niego w /etc/rc3.d/ z priorytetem S01
# (na przykład: /etc/rc3.d/S01usbwakeup)
#
###########################
# POWIĄZANE PRZYDATNE POLECENIA #
###########################
#
# - Zidentyfikuj urządzenia USB:
# grep. / sys / bus / usb / devices / * / product
#
# - Sprawdź status „Obudź zawieszenie” urządzeń USB:
# grep. / sys / bus / usb / devices / * / power / wakeup
#
#
##################
# DZIAŁANIA SKRYPCJI #
##################
#
# Wyłącza budzenie z trybu zawieszenia dla myszy optycznej
echo wyłączone> / sys / bus / usb / devices / 3-3 / power / wakeup
#
# Umożliwia wybudzanie z trybu wstrzymania dla klawiatury bezprzewodowej
że podłączyłem do koncentratora USB 3.0 na porcie USB nr.4
echo włączone> /sys/bus/usb/devices/3-4.4/power/wakeup


4. Daj mu uprawnienia do wykonywania:

chmod +x /etc/init.d/usbwakeup


5. Utwórz dowiązanie symboliczne w /etc/rc3.d/, aby zaczęło się podczas uruchamiania:

sudo ln -s /etc/init.d/usbwakeup /etc/rc3.d/S01usbwakeup


Po ponownym uruchomieniu systemu wszystko powinno działać zgodnie ze skryptem. Zmiany będą trwałe, ponieważ będą wykonywane przy każdym uruchomieniu systemu.

Źródła, z którymi się skonsultowano (oprócz tego postu):

https://ubuntuforums.org/showthread.php?t=2388336

https://www.thomasmonaco.com/prevent-usb-devices-waking-ubuntu-sleep/

/unix/83748/the-rc0-d-rc1-d-directories-in-etc

Juan Gómez Carrillo
źródło
Właśnie znalazłem interesujący post, w którym wyjaśniono, jak utworzyć prosty interfejs GUI do tego samego celu. Nie testowałem tego, ale być może może pomóc komuś, kto próbuje to zrobić graficznie i przy pomocy jednego kliknięcia, aby włączyć / wyłączyć: bernaerts-nicolas.fr/linux/74-ubuntu/220-ubuntu-resume-usb- ukrył
Juan Gómez Carrillo