Ordinateur, allume-toi !

La première chose est de s’assurer que votre carte mère prend en charge l’ACPI et les fonctionnalités associées. Vous trouverez ses informations dans la configuration de votre BIOS, en général dans un menu du type “Power Management Setup”, “ACPI” ou “Advanced Settings” et pourrez activer les paramètres nécessaires (“Wake From Alarm”, “Wake from RTC” ou une option du genre) ; vous pouvez néanmoins obtenir des informations directement sous GNU/Linux Debian :

# grep -i rtc /var/log/syslog


Vous devriez alors obtenir des informations de ce type :

RTC can wake from S4
rtc core: registered rtc_cmos as rtc0
alarms up to one month...


Dans ce cas de figure, cela signifie que votre système est capable de s’éveiller depuis l’état S4 (je vous invite à jeter un coup d’œil à la page Wikipedia sur l’ACPI quant aux “global states”) et qu’une alarme pour le réveil peut être définie.
Reste maintenant à définir une date ainsi qu’une heure pour le réveil de votre système, au format epoch. Tout d’abord, nous allons réinitialiser l’alarme :

# echo 0 > /sys/class/rtc/rtc0/wakealarm


Nous allons ensuite, à titre d’exemple, définir une alarme dans les 10 minutes à venir :

# date +%s -d '+ 10 minutes' > /sys/class/rtc/rtc0/wakealarm


Nous pouvons vérifier que cette alarme a bien été prise en compte :

# cat /proc/driver/rtc


Les champs à vérifier sont les suivants (à noter que les valeurs indiquées sont à l’échelle UTC) :

rtc_time : heure courante de votre système
rtc_date : date courante de votre système
alrm_time : heure de votre alarme
alrm_date : date de votre alarme


Afin de vérifier que cela fonctionne, il ne reste plus qu’à éteindre votre système :

# shutdown -h now


Si tout se passe bien, votre ordinateur devrait s’allumer à l’heure précédemment indiquée (soit l’heure à laquelle vous avez défini votre alarme plus 10 minutes).

Vous pouvez, à partir de là, décliner cet exemple afin de :

  • Spécifier une valeur absolue pour la date ainsi que l’heure de votre alarme :
# date --date "Fri, Apr 01 12:00:00 CEST 2014" +%s > /sys/class/rtc/rtc0/wakealarm
  • Spécifier une valeur relative pour la date ainsi que l’heure de votre alarme :
# date +%s -d '+ 10080 minutes' > /sys/class/rtc/rtc0/wakealarm
  • Créer un script que vous planifierez via cron afin de redéfinir périodiquement votre alarme.

Leave a Reply