© 2005 Hubertus Sandmann


Version: 0.3.0
Stand: 22.10.2005

nach untenEinleitung
nach untenVoraussetzungen
nach untenInstallation
nach untenBesonderheiten
nach untenAusblick

Einleitung

nach oben 

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

nach oben 

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

nach oben 

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

nach oben 

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

nach oben 

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



© 2005 Hubertus Sandmann