Problème

Les MacBooks ont la fâcheuse tendance à se relancer d'eux-même lorsqu'on vient de les mettre en veille. J'avais pensé aux ports USB et au réseau mais même en débranchant tout, je retrouvais ma machine allumée sur mon bureau chaque matin.

Diagnostique

Il est possible d'obtenir rapidement la liste des éléments qui peuvent remettre l'ordinateur en activité avec la commande suivante.

$ cat /proc/acpi/wakeup
Device	S-state	  Status   Sysfs node
PEG0	  S3	*disabled  pci:0000:00:01.0
GFX0	  S3	*disabled  pci:0000:01:00.0
PEG1	  S3	*disabled  pci:0000:00:01.1
PEG2	  S3	*disabled  pci:0000:00:01.2
EC        S4	*disabled  platform:PNP0C09:00
GMUX	  S3	*disabled  pnp:00:03
HDEF	  S3	*disabled  pci:0000:00:1b.0
RP03	  S3	*disabled  pci:0000:00:1c.2
ARPT	  S4	*enabled   pci:0000:04:00.0
RP04	  S3	*disabled  pci:0000:00:1c.3
XHC1	  S3	*enabled   pci:0000:00:14.0
ADP1	  S4	*disabled  platform:ACPI0003:00
LID0	  S4	*enabled   platform:PNP0C0D:00

XHC1 correspond aux ports USB et LID0 à l'ouverture/fermeture de l'écran. Je n'ai encore pas trouvé à quoi correspondait ARPT mais dans le doute, je vais essayer de tous les désactiver.

Solution

Pour désactiver les éléments il suffit d'envoyer un echo correspondant au fichier proc mais ceci ne dure que le temps d'un démarrage. Vous pouvez donc ajouter un service dans systemd (par exemple dans /etc/systemd/system/acpi-wakeup.service) pour automatiser cette configuration.

[Unit]
Description=ACPI wakeup settings

[Service]
ExecStart=/bin/bash -c "echo LID0 > /proc/acpi/wakeup; echo XHC1 > /proc/acpi/wakeup; echo ARPT > /proc/acpi/wakeup"

[Install]
WantedBy=multi-user.target

N'oubliez pas de mettre à jour les services avec la commande sudo systemctl daemon-reload, de le démarrer sudo systemctl start acpi-wakeup et de l'activer au prochain démarrage sudo systemctl enable acpi-wakeup.

Sources