Voorkom een leeglopende accu in de slaapstand bij uitgeschakelde Intel ME (Linux)

De Dasharo coreboot modellen van NovaCustom hebben een functie om de Intel Management Engine (ME) uit te schakelen. Maar het uitschakelen van de ME heeft een nadeel: de laptop kan niet langer de laagste energiestatus bereiken die gebruikt wordt voor modern standby (S0ix). Als gevolg hiervan loopt de batterij in de slaapstand ongeveer 3 keer zo snel leeg als wanneer ME is ingeschakeld. Hoewel we dit probleem niet kunnen oplossen, is er wel een workaround voor.

Achtergrond

Vroeger hadden computers een diepe slaapmodus die hibernation werd genoemd. Hoewel de diepe slaapmodus niet langer gebruikelijk is en standaard niet meer actief is in moderne Linux-besturingssystemen, kunnen we het nog steeds activeren en gebruiken. Maar de diepe slaapmodus heeft ook een nadeel: de ontwaaktijd is lang en vergelijkbaar met de ontwaaktijd van een cold boot (normaal opstarten).

Bij het gebruik van de slaapstand komt een gebruiker terug bij de computer kort nadat hij zijn bureau heeft verlaten. Denk aan een pauze of een korte wandeling. Om veiligheidsredenen is het altijd het beste om het systeem volledig af te sluiten. Voor sommige gebruikers kan dit echter onhandig zijn, en daarom geven zij misschien de voorkeur aan de slaapstand. In de meeste gevallen hervat de computer binnen 3 uur nadat de gebruiker zijn werkplek heeft verlaten.

Er is een manier om de laptop in slaapstand te zetten na een bepaalde tijd van inactiviteit, terwijl voorkomen wordt dat de batterij leegloopt. De workaround die we daarvoor in dit artikel zullen gebruiken, heet suspend-then-hibernate. Het werkt als volgt: als de slaapstand wordt geactiveerd, gaat de laptop in de normale slaapstand. Maar na een bepaalde tijd, laten we zeggen 3 uur, schakelt de laptop over van de normale slaapstand naar de diepe slaapmodus (slaapstand die gebruik maakt van de opslagschijf).

Voordelen

Er zijn een paar voordelen aan het instellen van suspend-then-hibernate terwijl ME uitgeschakeld is:

  1. De batterij zal nauwelijks leeglopen.
  2. De ontwaaktijd vanuit de slaapstand is in de meeste gevallen nog steeds erg kort, tenzij de gebruiker na 3 uur het systeem hervat.

De NV41 Serie heeft dit probleem niet

Tenzij je een dual-boot-configuratie met Windows hebt die je dwingt om modern stand-by te gebruiken, heeft de NV41 Serie geen last van het probleem van het leeglopen van de batterij in combinatie met het uitschakelen van ME. Dit komt omdat deze laptopserie S3 (suspend-to-RAM) ondersteunt, waardoor de processor volledig wordt uitgeschakeld tijdens de slaapstand.

Suspend-then-hibernate instellen

Deze guide is geschreven voor Ubuntu 24.04 met GNOME. Andere distributies en bureaubladomgevingen vereisen mogelijk andere stappen om suspend-then-hibernate in te stellen. Het zou echter ook op andere distro’s kunnen werken. Laat een reactie achter op deze blogpost om gebruikers te informeren hoe ze dit kunnen laten werken voor de distro die jij gebruikt.

Opmerking over schijfversleuteling: Tot nu toe is het niet gelukt om de diepe slaapmodus in te stellen in combinatie met een versleutelde partitie. Ik heb geprobeerd een aparte swappartitie in te stellen voor zowel een bestaande Ubuntu-installatie als een nieuwe installatie, zonder succes, zelfs na het lezen van deze opmerkingen. Als je hier een oplossing voor hebt, aarzel dan niet om deze te delen in de reacties.

Stap 1: pm-utils installeren

Dit is vrij eenvoudig te doen door een terminalvenster te openen (Ctrl + Alt + T) en de volgende regel uit te voeren, terwijl je een actieve internetverbinding hebt:

sudo apt install pm-utils -y

Stap 2: een swappartitie aanmaken

Ubuntu maakt standaard geen swappartitie aan, maar deze is nodig voor de diepe slaapmodus. De grootte van de swappartitie moet minstens zo groot zijn als de capaciteit van het werkgeheugen. Het is niet mogelijk om dit vanuit het OS zelf te doen.

Als je Ubuntu opnieuw installeert, kun je de swappartitie instellen tijdens het instellen van de schijfpartities door de partities handmatig in te stellen vanuit het installatieprogramma. Bekijk ook deze video over hoe je Ubuntu 24.04 instelt met aparte partities.

Om de swappartitie aan te maken op een installatie waarop Ubuntu al is geïnstalleerd:

  1. Start naar een Ubuntu live USB-stick op.
  2. Verklein je rootpartitie met Gparted met ten minste je totale werkgeheugencapaciteit. Om het zekere voor het onzekere te nemen, raden we aan om een gigabyte meer toe te voegen dan je totale werkgeheugencapaciteit.
  3. Maak de swappartitie met Gparted met de maximale grootte.
  4. Herstart de laptop naar je standaard Ubuntu-installatie.

Tip: je kunt free -h uitvoeren om de capaciteit van je werkgeheugen te controleren. Na stap 4 kun je hetzelfde commando gebruiken om te controleren of de totale capaciteit van de swappartitie groter is dan de totale capaciteit van het werkgeheugen.

Stap 3: De swappartitie formatteren en toewijzen

Deze stap is alleen nodig als je een nieuwe swappartitie hebt gemaakt; niet als je de swappartitie hebt ingesteld tijdens de installatie van Ubuntu.

Nu je weer bent opgestart naar je normale installatie, formatteer je de swappartitie door een terminal te openen (Ctrl + Alt + T) en het volgende uit te voeren:

sudo mkswap /dev/nvme0n1pX

Maar vervang /dev/nvme0n1pX met jouw swappartitie. Je kunt het Schijven-programma gebruiken om je swappartitie te identificeren.

De volgende stap is het mounten van de swappartitie. Je kunt dit doen door uit te voeren:

sudo swapon -U UUID

Maar vervang UUID door de werkelijke UUID van je swappartitie. Je kunt de UUID van je swappartitie eveneens controleren met het programma Schijven.

Het laatste wat we moeten doen is de swappartitie permanent mounten door deze te binden in /etc/fstab. Voer in een terminalvenster uit:

sudo nano /etc/fstab

Voeg nu onderaan deze regel toe:

UUID=xxx    none    swap    sw      0   0

Vervang xxx hier door de werkelijke UUID van je swappartitie.

Zorg er ook voor dat er geen andere swappartitie of swapbestand is gedefinieerd in het fstab-configuratiebestand. Standaard is het bestand /swap.img actief, dus zorg ervoor dat je die regel helemaal hebt verwijderd. Je kunt trouwens een hele regel verwijderen met Ctrl + K.

Sla het bestand op met de sneltoets Ctrl + X, gevolgd door Y en dan Enter.

Stap 4: De swappartitie toewijzen aan GRUB

Voer hiervoor het volgende uit:

sudo nano /etc/default/grub

Zoek nu de regel GRUB_CMDLINE_LINUX_DEFAULT=. Voeg tussen de dubbele aanhalingstekens toe: resume=UUID=xxx, waarbij xxx vervangen moet worden door de UUID van je swappartitie.

In mijn geval zag de regel er als volgt uit:

[ ... ]
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash resume=UUID=48c20957-8193-4eb5-a157-f190f9c13d46"
[ ... ]

Sla het bestand op met de sneltoets Ctrl + X, gevolgd door Y, gevolgd door Enter.

Sla de wijzigingen op met het commando:

sudo update-grub

En start de computer opnieuw op.

Stap 5: De diepe slaapmodus testen

Om de diepe slaapmodus te activeren, moet het volgende commando worden uitgevoerd:

systemctl hibernate

Je kunt dat commando gebruiken om te controleren of de diepe slaapmodus goed werkt.

Stap 6: Een optie toevoegen om de diepe slaapmodus direct te activeren (optioneel)

Er zijn twee manieren om de diepe slaapmodus te activeren vanuit de grafische gebruikersinterface:

  1. Door de GNOME extensie Hibernate Status Button te gebruiken.
  2. Door een aangepaste sneltoets te maken kun je de diepe slaapmodus gemakkelijk uitvoeren. Je kunt dit doen door te navigeren naar Instellingen –> Toetsenbord –> Toetsenbordsnelkoppelingen –> Aangepaste snelkoppelingen –> Snelkoppeling toevoegen. Als naam stel je diepe slaapmodus in. Als commando stel je systemctl hibernate in. Klik dan op Snelkoppeling instellen… en trigger de gewenste sneltoets om je laptop in diepe slaapmodus te zetten.

Stap 7: De slaapconfiguratie van systemd aanpassen

Het doel is om:

  1. Ervoor te zorgen dat de diepe slaapmodus is toegestaan door systemd.
  2. Een vertraging voor de diepe slaapmodus in te stellen.
  3. Ervoor te zorgen dat het suspend-then-hibernate-beleid wordt geactiveerd.

Open hiervoor een terminalvenster en voer uit:

sudo nano /etc/systemd/sleep.conf

Verwijder in dit bestand het hekje voor de volgende regels en stel de waarden in:

AllowSuspend=yes
AllowHibernate=yes
AllowSuspendThenHibernate=yes
HibernateDelaySec=180min

Sla het bestand op met de sneltoets Ctrl + X, gevolgd door Y en dan Enter.

Overschrijf nu de standaard slaapstand met suspend-then-hibernate door uit te voeren:

sudo ln -s /usr/lib/systemd/system/systemd-suspend-then-hibernate.service /etc/systemd/system/systemd-suspend.service

Start de laptop opnieuw op om te controleren of de wijzigingen actief zijn.

Stap 8: test het suspend-then-hibernate-beleid

Open verschillende toepassingen en zet de laptop in z’n slaapstand zoals gewoonlijk. Wacht een minuut en ontwaak de laptop. De slaapstand zou normaal moeten zijn.

Activeer nu opnieuw de slaapstand. Stel een alarm in dat over 3 uur afgaat, zodat je kunt zien wat er gebeurt zodra de laptop langer dan dat in de slaapstand staat. In feite zou de laptop zijn status moeten opslaan en afsluiten. Om te controleren of dat doel is bereikt, zet je de laptop gewoon weer aan. De laptop zou de toepassingen moeten herstellen zoals ze waren voordat de slaapstand werd geactiveerd.

Wessel klein Snakenborg (oprichter van NovaCustom)

LinkedIn

Over de auteur: Wessel Klein Snakenborg is al sinds zijn kindertijd gepassioneerd door technologie. In 2015 lanceerde hij NovaCustom, een bedrijf dat laptops op maat maakt met het oog op privacy en veiligheid. Met een focus op gebruiksvriendelijkheid blijft NovaCustom de laptopervaring herdefiniëren, geleid door Wessel's toewijding aan innovatie en samenwerking.

Reacties graag alleen in het Engels.

Je winkelwagen delen