laptop nie zawiesza się ani nie hibernuje (budzi się po 2-5 sekundach bez interakcji użytkownika)

22

Wszystko zaczęło się dziać po aktualizacji do 13.10, teraz mam 14.04 i nadal mam ten sam problem.

Kiedy zamykam lub robię pokrywkę, sudo pm-suspendlaptop zawiesza się na 2-5 sekund i budzi się sam.

To samo dzieje się, jeśli spróbuję zrobić hibernację.

Mam przeczucie, że coś się budzi / wyjmuje procesor z trybu wstrzymania, ale nie wiem, co.

Czy jest jakaś pomoc w rozwiązaniu tego irytującego problemu?

Edytować:

Dzięki @Fabian, udało mi się dowiedzieć, że wygląda jak karta Ethernet jest niewłaściwie, a nawet po tym, jak ustawić kartę, aby nie obudzić się na LAN (albo robi acpitool -W 3albo echo disabled > /sys/bus/pci/devices/0000:00:19.0/power/wakeupalbo echo IGBE > /proc/acpi/wakeup, laptop zachowuje wstawania i pokazując to, gdy robięacpitool -w

Device  S-state   Status   Sysfs node
---------------------------------------
1. LID    S3    *enabled 
2. SLPB   S3    *disabled
3. IGBE   S4    *enabled   pci:0000:00:19.0
4. EXP1   S4    *disabled  pci:0000:00:1c.0
5. EXP2   S4    *disabled  pci:0000:00:1c.1
6. EXP3   S4    *disabled
7. EXP4   S4    *disabled
8. EXP5   S4    *disabled  pci:0000:00:1c.4
9. EHC1   S3    *disabled  pci:0000:00:1d.0
10. EHC2      S3    *disabled  pci:0000:00:1a.0
11. HDEF      S4    *disabled  pci:0000:00:1b.0

Masz pomysł, jak stamtąd zacząć?

Sterownik sieciowy używany przez IGBE to e1000e

feniix
źródło
3
użyj, dmesgaby zobaczyć najnowsze wiadomości z jądra, coś tam może dać ci wskazówkę co się dzieje.
roadmr
Czy wyłączyłeś funkcję Wake-On-Lan w BIOS-ie?
Mitch
Tak, to była pierwsza rzecz, której spróbowałem.
feniix

Odpowiedzi:

10

Mam płytę główną opartą na jądrze 13.13 i Intel Z77X, a dla mnie działa następujące polecenie:

sudo sh -c "echo EHC1 > /proc/acpi/wakeup;echo EHC2 > /proc/acpi/wakeup;echo XHC > /proc/acpi/wakeup"
Gość
źródło
11

Dla mnie działało:

cat /proc/acpi/wakeup

Poszukaj wszystkich elementów z włączonym statusem, które wyglądają, jakby tam nie pasowały (dla mnie wszystko oprócz LID0). Następnie wyłącz je, mówiąc na przykład:

sudo sh -c "echo XHC0 > /proc/acpi/wakeup"

Sprawdź, czy odpowiednie wpisy rzeczywiście zostały wyłączone, wyślij laptopa do zawieszenia i licz na najlepsze :)

fabiański
źródło
Bardzo dobry trop, teraz muszę się dowiedzieć, dlaczego zintegrowana karta Ethernet wciąż się budzi, mimo że ustawiłem tryb budzenia na wyłączony
feniix
1
Powodzenia :)
Fabian,
1
Czy wypróbowałeś rmmodsterownik przed zawieszeniem? (Tylko strzał w ciemność)
Rmano
Ten sam irytujący problem w Ubuntu 16.04.1. Ta odpowiedź niestety nie pomogła.
Dan Dascalescu,
+1 To jest jedyne rozwiązanie, które działało dla mnie.
Bandi Kishore,
7

Wystąpił dokładnie ten sam problem (ThinkPad T530, Ubuntu 14.04, ale także 13.10 i 13.04, po kilku wstrzymaniach komputer natychmiast wznawia działanie po zawieszeniu).

Wyłączenie IBGE z budzenia wcale nie pomogło.

Jak zasugerował Romano, próbowałem usunąć moduł e1000e, i voila zawiesić zgodnie z oczekiwaniami.

Więc:

sudo rmmod e1000e

przed zawieszeniem rozwiązuje problem.

Co ciekawe, problem pojawia się ponownie natychmiast po zainstalowaniu modułu back ( sudo modprobe e1000e) i zawieszeniu bez jego usunięcia. Musiało to być coś związanego ze sprzętem.

Aby to zautomatyzować, stworzyłem dwa proste skrypty zawieszenia / wznowienia (testowane na wyżej wspomnianym sprzęcie, Ubuntu Trusty 14.04) sudo gedit /etc/pm/sleep.d/99_e1000e_remove:

#!/bin/sh

# Remove e1000e kernel module prior to suspend
rmmod e1000e

i sudo gedit /etc/pm/power.d/99_e1000e_probe:

#!/bin/sh

# Modprobe e1000e kernel module after resume
modprobe e1000e

Skrypty powinny być wykonywalne ( sudo chmod +x /etc/pm/sleep.d/99_e1000e_remove /etc/pm/power.d/99_e1000e_probe).

Uwagi:

  • Zakładam, że skrypty są dość bezpieczne w użyciu, nawet jeśli nie rozwiązują twojego problemu.
  • Nie używam budzenia LAN, więc nie wiem jak to działa z poprawką.
sopvkore
źródło
Laptop ma ten sam problem z Windows (właśnie zainstalowałem Windows 7 dla mojej żony na komputerze, ponieważ mam nowy) i robi to dokładnie tak samo. Może to być związane ze sprzętem / oprogramowaniem układowym
feniix
1
Cześć. Używam Ubuntu 14.04 LTS z Thinkpad X201s. To rozwiązanie usuwające e1000e z małymi skryptami pomocniczymi pomogło przywrócić działanie. Dziękuję Ci bardzo !
APOS
1
Mogę potwierdzić, że to samo rozwiązanie działa na Thinkpad T540p i Ubuntu 14.04. Wydaje się, że coś poszło nie tak w e1000emodule. Zdarza się to tylko od czasu do czasu, przez większość czasu zawieszenie działa dobrze. Jeśli problem się pojawi, ja rmmod e1000emogę pomyślnie zawiesić. Jeśli jednak to zrobię modprobeponownie po wznowieniu, następne zawieszenie będzie działać nawet z obecnym modułem. e1000eWygląda na to, że „zresetowanie” modułu jest dla mnie wystarczające.
mindriot
1

To zadziałało dla mnie (wzięte z innego wątku na askubuntu):

Ubuntu 14.04 budzi się natychmiast po zawieszeniu

Możesz spróbować wyłączyć go automatycznie za pomocą skryptu Upstart przy każdym uruchomieniu:

Utwórz plik etc/init/disable-XHC.conf

Zawartość:

start on started dbus
stop on stopping dbus

script
   sudo -u root sh -c "echo 'XHC' > /proc/acpi/wakeup"
end script
Ilian
źródło
0

Rozwiązaniem systemd jest utworzenie instrukcji dla systemd-tmpfiles, aby zapisać coś do pliku po jego wywołaniu.

Utwórz plik /etc/tmpfiles.d, na przykład /etc/tmpfiles.d/disable-network-wake.confo następującej treści, w zależności od urządzenia, dla którego chcesz wyłączyć budzenie.

w /proc/acpi/wakeup - - - - XHC

Zobacz także systemd-tmpfiles (8) i tmpfiles.d (5).

Patrz: https://wiki.archlinux.org/index.php/Systemd#Temporary_files

FichteFoll
źródło