Jak zapobiec natychmiastowemu obudzeniu się z trybu wstrzymania i / lub hibernacji?

35

Od kilku dni mój komputer stacjonarny z systemem Ubuntu 12.04 w tajemniczy sposób budzi się natychmiast po przejściu w tryb zawieszenia.

Od czasu instalacji mój laptop Ubuntu 12.10 również został wznowiony natychmiast po zawieszeniu i hibernacji.

Jak temu zapobiec?

Bazon
źródło

Odpowiedzi:

35

Ten problem był prawdopodobnie spowodowany dziwnymi sygnałami USB. gedit /proc/acpi/wakeuppokazał mi, że wakeup jest włączony dla USB0 i USB2.

sudo -s
echo USB0 > /proc/acpi/wakeup
echo USB2 > /proc/acpi/wakeup

przełączono je na wyłączone (zaznaczone gedit /proc/acpi/wakeupponownie lub odświeżając widok pliku) , a następnie komputer pozostaje zawieszony tak, jak powinien. :-)

Bazon
źródło
To rozwiązanie nie działało dla mnie. Włączono PS2K (wybudzanie klawiatury), ale zmiana nie miała znaczenia.
Bryce,
4
W moim przypadku nie było urządzeń USB *, wygląda na to, że były wewnętrznie połączone przez hub USB: dodanie EHC1, EHC2 i XHC do / proc / acpi / wakeup pomogło mi.
Vladimir Rutsky
2
W moim przypadku był to XHCI na USB 3
Andy
@Bazon, proszę, spójrz http://askubuntu.com/questions/852600/ubuntu-16-04-wakes-up-immediately-from-suspend-after-installing-fprint-in-lenovoi pomóż mi to
rozgryźć
U mnie wyłączenie IGBEdziałało
Kasun Siyambalapitiya
22

Ostatnio miałem ten sam objaw na Asus Zenbook Pro UX501 na Ubuntu 15.04. Dokładna poprawka Bazona nie działała, ale odmiana Vladimira Rutsky'ego działała. Konkretnie:

Jeśli uruchomiony z terminala cat /proc/acpi/wakeuppokazuje następujące linie

EHC1      S3    *enabled  pci:0000:00:xx.x
EHC2      S3    *enabled  pci:0000:00:xx.x
XHC       S3    *enabled  pci:0000:00:xx.x

(adresy pci mogą być inne)

następnie przełącz te trzy na wyłączone, wydając następujące polecenia:

sudo -s
echo EHC1 > /proc/acpi/wakeup
echo EHC2 > /proc/acpi/wakeup
echo XHC > /proc/acpi/wakeup
ilikerobots
źródło
Wykonanie powyższego nie rozwiązało mojego problemu :(
Kasun Siyambalapitiya
Dla mnie wyłączenie IGBEdziałało, powyżej trzech nie
Kasun Siyambalapitiya
@ilikerrobots To nie naprawia tego na stałe, jak to naprawić na stałe
Kasun Siyambalapitiya
GLAN szybko przełącza się z powrotem na włączony. Wiesz, dlaczego?
Alfred M.,
Aby pozostało, umieść je w odpowiednim wpisie crona @reboot. Uznałem, że użyteczne jest uruchamianie echa tylko wtedy, gdy jest ono faktycznie włączone poprzez umieszczenie testu w takim skrypcie powłoki egrep -q '^XHC1\s+S[0-9]\s+\*enabled' /proc/acpi/wakeup && echo XHC1 > /proc/acpi/wakeup(moim problematycznym urządzeniem był XHC1 - chipset USB).
David Schoen,
15

Jeśli wiesz, które urządzenie wybudza komputer, przejdź do pierwszego kroku, postępując zgodnie z instrukcją. Jeśli nie, otwórz terminal i wykonaj:

cat /var/log/syslog

I sprawdź, które urządzenie budzi Twój komputer.

Więc teraz:

  1. uderzył w terminal:

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

Aby wyświetlić listę wszystkich portów USB, które budzą nasz komputer.

sudo su

mamy teraz rootowanie uprzywilejowania.

2.Mam 8 portów USB, w tym przykładzie powiedzmy, że chcę wyłączyć usb8, więc:

echo disabled > /sys/bus/usb/devices/usb8/power/wakeup

Śmiało i przetestuj to. Teraz to konkretne urządzenie w porcie USB 8 nie obudzi komputera.

Następny krok, aby zmiana była trwała po każdym uruchomieniu:

3)

sudo nano /etc/rc.local

I wklejamy polecenie z kroku 2. Tam (oczywiście przed wyjściem 0).

to jest to!

opcjonalne Tylko jeśli po zakończeniu trybu uśpienia / budzenia urządzenie USB 8 w moim przykładzie powróci do stanu włączenia.

  1. Napisz udevregułę, aby wykonać polecenie po każdym uruchomieniu, uśpieniu, przebudzeniu.

Otwórz terminal i wykonaj:

lsusb

W informacjach o identyfikatorze urządzenia klawiatury 4 pierwsze cyfry to identyfikator dostawcy, a 4 kolejne cyfry to identyfikator produktu zrzut ekranu

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 disabled > /sys/bus/usb/devices/usb8/power/wakeup'"

* usb8 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
dzięki! to wygląda interesująco. czy mógłbyś dodać tutaj swój przewodnik (zmieniając go, aby rozwiązał konkretny problem tego pytania)
geoffrey
dzięki. nie do końca tego chciałem, ale udało mi się naprawić problem - modyfikując plik rc.local (mój problem nie dotyczy portów USB). Opublikowałem własne rozwiązanie, ale dostaniesz nagrodę (nie mogę jej przyznać przed jutrem)
geoffrey
Które można bezpiecznie wyłączyć? Czy wystąpią problemy, jeśli wyłączę wszystko? Jedyne włączone to dla mnie / sys / bus / usb / devices / 1-2 / power / wakeup: włączone
Alfred M.
syslog nawet nie wspomina o tym, co budzi komputer
Ken Sharp
5

Aby naprawić na stałe

(Kompiluję rozwiązania dostarczone przez Bazon, Ilikerobots i Pavlos Theodorou - razem rozwiązują mój konkretny problem)

Aby trwale rozwiązać problem, niezależnie od tego, czy jest to port USB, który budzi system, czy coś innego:

  1. Dowiedz się, co może obudzić twój system:

gedit / proc / acpi / wakeup

Możesz dostać te lub podobne linie:

EHC1 S3 * włączony pci: 0000: 00: xx.x

EHC2 S3 * włączony pci: 0000: 00: xx.x

XHC S3 * włączony pci: 0000: 00: xx.x

Następnie otwórz:

sudo gedit /etc/rc.local

i dodaj te linie (lub podobne, w zależności od powyższych wyników) wcześniej exit 0

echo EHC1> / proc / acpi / wakeup

echo EHC2> / proc / acpi / wakeup

echo XHC> / proc / acpi / wakeup

Geoffrey
źródło
och, nie myślałem o tym. oczywiście może to być inny port niż USB. Cieszę się, że to rozwiązałeś.
Pavlos Theodorou