Ayant fait l’acquisition d’un nouveau portable, j’ai voulu optimiser la gestion de la batterie, j’ai donc installé TLP sur mon portable.
Depuis j’ai rencontré des difficultés lors de la mise en veille, c’est à dire qu’il se mettait en veille durant 1 seconde puis se rallumé sans beaucoup d’information.
J’ai désactivé le WOL pensant que cela pouvait réveiller le PC à cause d’une trame IP non voulue, mais ce n’était pas le cas.
J’ai donc temporairement désactivé TLP et comme par magie, plus de problème… Mais, je n’ai pas envie de le supprimer… Donc voici un contournement pour laisser faire notre ami à notre place !
Voici un script à placer dans :
/lib/systemd/system-sleep/
Et le fichier
#!/bin/sh
set -eif [ « $2 » = « suspend » ] || [ « $2 » = « hybrid-sleep » ]; then
case « $1 » in
pre) service tlp stop
;;
post) service tlp start ;;
esac
fi
Et voilà, il s’arrêtera à la demande de la suspension en veille et se lancera de nouveau une fois la veille arrêtée !
Il arrive à tout le monde de s’emporter et de penser qu’il a trouvé la solution à son problème de manière trop rapide… Je suis tombé dans le piège..
Il semblait que stopper tlp a la mise en veille réglé mon problème, mais ce n’est pas le cas…
J’ai donc approfondi ma première pensée qui était : il se met en veille mais quelque chose le réveil… Et là je suis tomber sur quelqu’un qui parlait d’USB et de wakeup…
Alors voici la nouvelle tentative qui semble fonctionner pour ce problème
Vérifiez les périphéries qui réveillent votre PC
cat /proc/acpi/wakeup
J’ai moi ça donne ça :
maze ~ # cat /proc/acpi/wakeup
Device S-state Status Sysfs node
RP09 S4 *disabled pci:0000:00:1d.0
PXSX S4 *disabled
RP10 S4 *disabled
PXSX S4 *disabled
RP01 S4 *disabled pci:0000:00:1c.0
PEGP S4 *disabled pci:0000:01:00.0
PEGA S4 *disabled
RP07 S4 *disabled pci:0000:00:1c.6
PXSX S4 *disabled pci:0000:02:00.0
GLAN S4 *disabled
XHC S3 *enabled pci:0000:00:14.0
XDCI S4 *disabled
HDAS S4 *disabled pci:0000:00:1f.3
Pour ma part, puisque je veux uniquement que le portable se réveille à ma demande il me reste juste à désactiver XHC (Vous devez répéter l’opération pour chaque périphérie que vous souhaitez désactiver)
echo XHC > /proc/acpi/wakeup
Ce qui nous donne :
maze ~ # cat /proc/acpi/wakeup
Device S-state Status Sysfs node
RP09 S4 *disabled pci:0000:00:1d.0
PXSX S4 *disabled
RP10 S4 *disabled
PXSX S4 *disabled
RP01 S4 *disabled pci:0000:00:1c.0
PEGP S4 *disabled pci:0000:01:00.0
PEGA S4 *disabled
RP07 S4 *disabled pci:0000:00:1c.6
PXSX S4 *disabled pci:0000:02:00.0
GLAN S4 *disabled
XHC S3 *disabled pci:0000:00:14.0
XDCI S4 *disabled
HDAS S4 *disabled pci:0000:00:1f.3
Et voilà, plus aucun périphérie ne viendra réveiller le PC sans qu’on le veuille !
Reste à rendre cela automatique… On va pour cela créer un fichier qui affectera automatiquement le echo XHC > /proc/acpi/wakeup
Pour cela on édite le fichier /etc/systemd/system/disable-wakeup.service (j’utilise vim, mais vous pouvez utiliser l’éditeur de votre choix)
vim /etc/systemd/system/disable-wakeup.service
Puis on lui ajoute
[Unit]
Description=Disable XHC wakeup[Service]
ExecStart=/bin/bash -c « echo XHC > /proc/acpi/wakeup »[Install]
WantedBy=multi-user.target
Et on enregistre le tout
Il ne reste plus qu’à exécuter le script automatiquement
systemctl enable disable-wakeup
Et voilà !
Bon, je vais vous faire un petit script pour faciliter tout cela…