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 -e

if [ « $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…

TLP et refus de mise en veille – USB et WAKEUP

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *