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.