Jak wprowadzić zmiany w / proc / acpi / wakeup na stałe?


17

Miałem problem z budzeniem się mojego Ubuntu 12.04 natychmiast po przejściu w tryb zawieszenia. Rozwiązałem problem, zmieniając ustawienia w / proc / acpi / wakeup, zgodnie z sugestią zawartą w tym pytaniu: Jak zapobiec natychmiastowemu wznowieniu działania po zawieszeniu i / lub hibernacji? .

Po zmianie ustawień system bezbłędnie przechodzi w stan zawieszenia i pozostaje zawieszony, ale po obudzeniu go ponownie ustawienia w / proc / acpi / wakeup różnią się od tych, dla których je ustawiłem.

Przed zawieszeniem:

cat /proc/acpi/wakeup
Device  S-state   Status   Sysfs node
SMB0      S4    *disabled  pci:0000:00:03.2
PBB0      S4    *disabled  pci:0000:00:09.0
HDAC      S4    *disabled  pci:0000:00:08.0
XVR0      S4    *disabled  pci:0000:00:0c.0
XVR1      S4    *disabled  
P0P5      S4    *disabled  
P0P6      S4    *disabled  pci:0000:00:15.0
GLAN      S4    *enabled   pci:0000:03:00.0
P0P7      S4    *disabled  pci:0000:00:16.0
P0P8      S4    *disabled  
P0P9      S4    *disabled  
USB0      S3    *disabled  pci:0000:00:04.0
USB2      S3    *disabled  pci:0000:00:04.1
US15      S3    *disabled  pci:0000:00:06.0
US12      S3    *disabled  pci:0000:00:06.1
PWRB      S4    *enabled   
SLPB      S4    *enabled

Mówię systemowi, aby zawiesił i działa tak, jak powinien. Ale później po przebudzeniu ustawienia są zmieniane na:

USB0      S3    *disabled  pci:0000:00:04.0
USB2      S3    *enabled   pci:0000:00:04.1
US15      S3    *disabled  pci:0000:00:06.0
US12      S3    *enabled   pci:0000:00:06.1

lub

USB0      S3    *enabled   pci:0000:00:04.0
USB2      S3    *enabled   pci:0000:00:04.1
US15      S3    *enabled   pci:0000:00:06.0
US12      S3    *enabled   pci:0000:00:06.1

Jakieś pomysły?


Dziękuję za odpowiedź. Niestety nie rozwiązało to mojego problemu.

wszystkie z

/sys/bus/usb/devices/usb1/power/wakeup
/sys/bus/usb/devices/usb2/power/wakeup
/sys/bus/usb/devices/usb3/power/wakeup
/sys/bus/usb/devices/usb4/power/wakeup

jak również

/sys/bus/usb/devices/3-1/power/wakeup

są wyłączone, a notebook nadal sam budzi się zaraz po zaśnięciu. Jedyne, na co wydaje się reagować, to ustawienia w / proc / acpi / wakeup, które ciągle się zmieniają (resetują) za każdym razem, gdy wyłączam / restartuję komputer.

Odpowiedzi:


11

Znów napotkałem ten problem na Ubuntu 12.10. Sugestie od użytkownika MTS niestety również nie działały dla mnie. Możesz jednak napisać skrypt, który automatycznie ustawi właściwości usb /proc/acpi/wakeuptuż przed każdym zawieszeniem.

Rozwiązanie polega na utworzeniu haka do zawieszania (na podstawie tego artykułu Archwiki ). Zapisz następujące jako /usr/lib/pm-utils/sleep.d/45fixusbwakeupi upewnij się, że jest wykonywalny ( chmod +x /usr/lib/pm-utils/sleep.d/45fixusbwakeup).

#!/bin/bash
case $1 in
    hibernate)
            echo "Going to suspend to disk!"
            ;;
    suspend)
            echo "Fixing acpi settings."
            for usb in `cat /proc/acpi/wakeup | grep USB | cut -f1`;
            do
                    state=`cat /proc/acpi/wakeup | grep $usb | cut -f3 | cut -d' ' -f1 | tr -d '*'`
                    echo "device = $usb, state = $state"
                    if [ "$state" == "enabled" ]
                    then
                            echo $usb > /proc/acpi/wakeup
                    fi
            done
            echo "Suspending to RAM."
            ;;
    thaw)
            echo "Suspend to disk is now over!"
            ;;
    resume)
            echo "We are now resuming."
            ;;
    *)
            echo "Somebody is callin me totally wrong."
            ;;
esac

Zmienia to status każdego urządzenia USB, które jest obecnie włączone lub wyłączone. Jeśli chcesz zmienić tylko określone urządzenia USB, zmień pętlę for w skrypcie. Na przykład, aby zmienić tylko USB1 i USB3

for usb in `cat /proc/acpi/wakeup | grep USB | cut -f1`;

do

for usb in 'USB1' 'USB3';

Mam nadzieję, że pomoże to komuś, kto ma ten sam problem. To podejście rozwiązało problem dla mnie.


1
Dzięki! Zmodyfikowałem ten skrypt, aby wyłączyć budzenie z urządzeń USB na moim laptopie Sony Vaio: gist.github.com/rutsky/1ed8e9779f0b2941c5a6
Vladimir Rutsky

Zmodyfikowałem twój skrypt, aby wyłączyć budzenie na LID open (naprawdę głupia i irytująca funkcja z mojego punktu widzenia). Dziękuję Ci!
gumkins

Ten bardzo przydatny hak działa w Ubuntu i Kubuntu, ale nie w Xubuntu 15.04. Zastanawiam się, dlaczego ... :(
Reloader

1
Oto zmodyfikowany skrypt Vladimira Rutsky'ego dla systemowego haka uśpienia zamiast pm-utils: gist.github.com/kepi/9dea7aee8a59f3e7c10a
Kepi

1
Gdyby można to było zaktualizować dla Ubuntu 16.04, byłoby świetnie. Użyłem tutaj rozwiązania: askubuntu.com/a/620555/463546 (starsze rozwiązanie), ale w sumie jest to trochę kłopotliwe.
Aleksandr Dubinsky

9

Być może http://forum.xbmc.org/showthread.php?tid=121158 pomoże?

Oto co mówi:

Dla tych, którzy aktualizują się do jądra 3.2 (którym powinien być każdy z powodu ostatniego exploita roota), zauważysz, że twoje wybudzanie USB jest prawdopodobnie zepsute. Zmienili domyślną zasadę aktywacji ( http://www.spinics.net/lists/linux-usb/msg53661.html ), więc musisz wprowadzić kilka zmian:

  • nie musisz już włączać funkcji budzenia /proc/acpi/wakeup, jest ona domyślnie włączona
  • musisz włączyć wybudzanie dla koncentratora USB oprócz urządzenia w /sys/bus/usb/devices/*/power/wakeup

Więc to:

echo USB1 > /proc/acpi/wakeup
echo enabled > /sys/bus/usb/devices/3-1/power/wakeup

Staje się:

echo enabled > /sys/bus/usb/devices/usb3/power/wakeup
echo enabled > /sys/bus/usb/devices/3-1/power/wakeup

Mam nadzieję, że dzięki temu inni nie będą mogli rozwiązać tego samego problemu.


2

W systemie Ubuntu 15+ należy użyć systemdzamiast rc.local. Możesz google „Tworzenie usługi systemowej” i postępować zgodnie z instrukcjami, ale pamiętaj, że przekierowanie danych wyjściowych /proc/acpi/wakeupjest trudne. Aby działał poprawnie, musisz zrobić coś takiego:

/bin/sh -c '/bin/echo XHC > /proc/acpi/wakeup'

Przykładowe dane wyjściowe dla pliku usługi (np. /etc/systemd/system/suspendfix.service):

[Unit]
Description=fix to prevent system from waking immediately after suspend

[Service]
ExecStart=/bin/sh -c '/bin/echo XHC > /proc/acpi/wakeup'
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Lub tutaj w tym istocie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.