Ověřeno v praxi na systému openSUSE hardware notebooku značky Dell.
Tento postup řeší situaci, kdy se notebook po uspání se okamžitě sám probudí.
Problém
Po spuštění příkazu pro uspání systému
systemctl suspend
se notebook ihned probudí zpět do běhu.
Příčina
Nejčastěji platí, že:
- hardware nepodporuje deep sleep,
- systém používá režim Modern Standby (s2idle),
- některá zařízení mají povolené ACPI wake-up a ihned vyvolají probuzení.
Typicky se jedná o:
- USB řadiče,
- Thunderbolt / PCIe zařízení
- Bluetooth
Ověření režimu uspávání
Nejprve ověřte, jaký režim uspání je k dispozici:
cat /sys/power/mem_sleep
Pokud je výstup například:
s2idle
znamená to, že hardware nepodporuje deep sleep a je nutné pracovat s režimem s2idle.
Pozn.:
pokud ve výstup bude obsahovat deep sleep vše je v pořádku
1. Zjištění zařízení, která mohou systém probouzet
Zobrazte seznam ACPI wake-up zařízení:
cat /proc/acpi/wakeup
Zaměřte se především na položky ve sloupci Device typu:
XHC*– USB řadiče,NHI*– Thunderbolt / PCIe zařízení.
Ve sloupci Status bývá uvedeno:
enabled
což znamená, že zařízení smí probouzet systém.
2. Dočasné vypnutí wake-up oprávnění
U problematických zařízení vypněte wake-up:
sudo sh -c 'echo XHC0 > /proc/acpi/wakeup'
sudo sh -c 'echo XHC1 > /proc/acpi/wakeup'
sudo sh -c 'echo XHC3 > /proc/acpi/wakeup'
sudo sh -c 'echo XHC4 > /proc/acpi/wakeup'
sudo sh -c 'echo NHI0 > /proc/acpi/wakeup'
sudo sh -c 'echo NHI1 > /proc/acpi/wakeup'
Použijte pouze názvy zařízení, které se skutečně objeví ve výpisu
cat /proc/acpi/wakeup.
Kontrola:
cat /proc/acpi/wakeup
U daných zařízení musí být:
disabled
3. Otestování spánku
systemctl suspend
Správné chování:
-
notebook se uspí,
-
sám se již neprobudí,
-
probuzení funguje pouze:
- tlačítkem Power,
- otevřením víka.
4. Trvalé řešení (automaticky po každém startu)
Soubor /proc/acpi/wakeup se po restartu vždy vrací do výchozího stavu.
Proto je nutné nastavení aplikovat automaticky pomocí systemd služby.
Vytvoření služby / deamona
sudo nano /etc/systemd/system/disable-wakeup-devices.service
Obsah upravte podle svých zařízení:
[Unit]
Description=Disable ACPI wakeup devices
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo XHC0 > /proc/acpi/wakeup; echo XHC1 > /proc/acpi/wakeup; echo XHC3 > /proc/acpi/wakeup; echo XHC4 > /proc/acpi/wakeup; echo NHI0 > /proc/acpi/wakeup; echo NHI1 > /proc/acpi/wakeup'
[Install]
WantedBy=multi-user.target
Aktivace služby
sudo systemctl daemon-reload
sudo systemctl enable disable-wakeup-devices.service
sudo systemctl start disable-wakeup-devices.service
5. Ověření po restartu
Po restartu znovu zkontrolujte stav:
cat /proc/acpi/wakeup
U zakázaných zařízení musí zůstat:
disabled
Výsledek
- uspávání v režimu
s2idlefunguje stabilně, - notebook se již neprobouzí okamžitě po uspání,
- USB, Wi-Fi, Bluetooth i Thunderbolt fungují normálně,
- je pouze zakázáno probouzení systému těmito zařízeními.
Poznámka
- Nejde o vypnutí zařízení, ale pouze o odebrání jejich oprávnění k probuzení systému.
- Pokud hardware nepodporuje deep sleep, je tento postup v praxi nejspolehlivějším způsobem, jak zabránit samovolnému probouzení v režimu
s2idle.