Einleitung
Ausserordentlich nützlich wäre es, wenn der VDR-Rechner nicht nur automatisch
oder per Tastendruck herunterfährt, sondern auch passend zu einer anstehenden
Aufnahme selbstständig aufwacht. Bei funktionierender ACPI-Implementation auf
dem verwendeten Rechner kann man hierfür acpi-wakeup
von Alfred Zastrow verwenden.
Voraussetzungen
ACPI (Advanced Configuration and Power Interface) ist schon seit
geraumer Zeit der legitime Nachfolger des betagten APM (Advanced Power
Management) in Sachen Energieverwaltung auf einem PC. Allerdings ist es in
der Praxis speziell im Zusammenhang mit Linux noch ein wenig vom Glück abhängig,
inwieweit die Funktionen ordnungsgemäß arbeiten. Grundsätzlich gilt, je
aktueller der verwendete Linux-Kernel und das Motherboard incl. BIOS-Version,
desto aussichtsreicher ist das hier geplante Unterfangen. Es soll an dieser
Stelle nicht verschwiegen werden, dass derzeit nur die Uhrzeit und nicht der Tag
bzw. das Datum ausgewertet wird. Das bedeutet, dass der Rechner täglich zur
eingestellten Zeit aufwacht, auch wenn die nächste Aufnahme beispielsweise erst
am folgenden Tag anstünde.
Als Vorbereitung sollten alle Einstellungen im BIOS zu ACPI sorgfältig
gesetzt werden. Dazu gehört auch das Deaktivieren einer evtl. vorhandenen
APM-Funktion zum Zeit gesteuerten Aufwachen des Rechners per eingestellter
BIOS-Uhr (RTC) etwa unter einer Bezeichung wie "RTC Alarm Resume" o. ä., damit
sich die verschiedenen Features nicht gegenseitig ins Gehege kommen. Zum Testen
schreibt man einfach die Werte für ein paar Minuten in der Zukunft in das
entsprechende Register des Rechners und liest diese anschließend wieder aus.
echo "2005-10-22 23:59:59" >/proc/acpi/alarm
cat /proc/acpi/alarm
Bei Erfolg kann man den Rechner jetzt herunterfahren und hoffen, dass der
PC zum eingestellten Zeitpunkt tatsächlich aus dem Schlaf erwacht.
poweroff
Hat das geklappt, kann man sich frohen Mutes an die Installation von
acpi-wakeup machen. Andernfalls muss aber immer noch nicht alles verloren
sein. Dazu später mehr...
Installation
Die Installation des kleinen Programmpaketes gestaltet sich nach dem
Entpacken ganz einfach.
tar xfj acpi-wakeup-0.1.tar.bz2
cd acpi-wakeup-0.1
gcc -o unix2iso8601 unix2iso8601.c
cp unix2iso8601 /usr/bin
cp vdrpoweroff.sh /usr/local/bin
Dabei wird ein Tool installiert, das die Umrechnung des von VDR
verwendeten Zeitformats in das Format der Systemzeit übernimmt. Ebenso wird das
bisher genutzte Skript zum Herunterfahren des Rechners durch das mitgelieferte
ersetzt. In dieser Datei /usr/local/bin/vdrpoweroff.sh kommentiert man
die Zeile mit der ungeeignet gewählten PATH-Variablen aus.
#!/bin/sh
## export PATH=/bin
newtime=$(($1 - 120 )) # 2 minutes earlier
hwclock --systohc --utc
echo `unix2iso8601 -u $newtime` >/proc/acpi/alarm
exec poweroff
Die Aufwachzeit wird hierbei auf 2 Minuten vor der nächsten programmierten
Aufnahme gesetzt. Es ist weiterhin zu beachten, dass die Einstellungen
voraussetzen, dass die BIOS-Uhr (RTC) auf GMT bzw. UTC eingestellt ist und nicht
auf "localtime". Dies hat nebenbei den Vorteil, dass die
Sommer-/Winterzeit-Umstellung dann automatisch erfolgt.
Besonderheiten
Wenn es Probleme mit dem automatischen Aufwachen des Rechners gibt, kann es
daran liegen das einige Motherboard etwas schwer von Begriff sind. In diesen
Fällen behilft man sich, indem man die Zeile zum Setzen der Aufwachzeit einfach
doppelt in die Datei /usr/local/bin/vdrpoweroff.sh hineinschreibt.
#!/bin/sh
## export PATH=/bin
newtime=$(($1 - 120 )) # 2 minutes earlier
hwclock --systohc --utc
echo `unix2iso8601 -u $newtime` >/proc/acpi/alarm
echo `unix2iso8601 -u $newtime` >/proc/acpi/alarm
exec poweroff
Häufig vergisst ein Rechner auch die vorgegebene Aufwachzeit wieder, wenn
nach deren Setzen die HW-Clock (RTC) beim Herunterfahren des Rechners noch
einmal an die Systemzeit angeglichen wird. Als Abhilfe kommentiert man dazu bei
einer SuSE-Distribution einfach die entsprechenden Zeilen aus der Datei
/etc/init.d/boot.clock aus.
stop)
if [ "$HOSTTYPE" != "s390" -a "$HOSTTYPE" != "s390x" ] ; then
## echo -n "Set Hardware Clock to the current System Time"
# write back to hardware clock and calculate adjtime
## /sbin/hwclock --systohc $HWCLOCK
rc_status -v -r
fi
;;
Ausblick
Speziell auf älteren Rechnern ohne ACPI-Unterstützung im BIOS kann man zum
gleichen Zweck auch das Tool nvram-wakeup von http://sourceforge.net/projects/nvram-wakeup/ einsetzen.
Etliche Motherboards werden bereits automatisch erkannt, andere müssen erst
"angelernt" werden. Eine Anleitung dazu findet sich hier: http://www.hubertus-sandmann.homepage.t-online.de/vdr_wakeup.htm