ACPI Wakeup
ACPI (Advanced Configuration and Power Interface) ist eine Spezifikation, welche eine Schnittstelle definiert, über die moderne Rechnerhardware und ein Betriebssystem gekoppelt ist. Dadurch benötigt das Betriebssystem keine Informationen über die vorhandene Hardware, um diese Hardwarefunktionen nutzen zu können. ACPI ist eine Weiterentwicklung von APM, PNPBIOS und weiteren Technologien und bietet unter anderem Funktionen zur Kontrolle des Energieverbrauchs, zur Versetzung von Rechnern in den Ruhezustand, zur Aktivierung und Deaktivierung von Geräten.
ACPI-Wakeup bedeutet also vor diesem Hintergrund, dass der Rechner über die ACPI-Kernelinterface geweckt werden kann. Dazu schreibt man die Weckzeit in /proc/acpi/alarm, z.B.
echo 2006-02-09 23:05:00 >/proc/acpi/alarm
Mit ACPI kann man ausserdem das System schlafen legen, wenn das Mainboard mitspielt. Je nach BIOS werden verschiedene Modi unterstützt, S1 (Standby), S3 (Suspend to Ram) oder S4 (Suspend to Disk). Im Gegensatz zum vollständigen Shutdown braucht das Reaktivieren des Systems viel weniger Zeit.
S1: CPU und einige andere Komponenten werden abgeschaltet. Das ist die einfachste, schnellste und schonendste Variante, die aber auch am wenigsten Strom spart.
echo -n "standby" > /sys/power/state
S3: Ausser dem Speicher wird alles abgeschaltet. Der Inhalt des Speichers bleibt so erhalten. Beim Einschalten kehrt das System zum ursprünglichen Zustand zurück. Man muss jedoch drauf achten dass vor dem Abschalten alle Dateisysteme unmounted werden (vor allem Festplatten oder Netzwerk-Dateisysteme), da sonst Datenverlust droht. Ausserdem sollte VDR beendet und die DVB Treiber entladen werden, weil die DVB Karten auch abgeschaltet werden und beim Reaktivieren neu initialisiert werden müssen.
/etc/init.d/vdr stop /etc/init.d/dvb stop echo -n "mem" > /sys/power/state /etc/init.d/dvb start /etc/init.d/vdr start
ACPI Test Script
#!/bin/bash # Startet dem Rechner nach 3 min ueber acpi neu. min=`date "+%M"` nextmin=`expr $min + 3` nextboot=`date "+%Y-%m-%d %H:"$nextmin:00` echo $nextboot > /proc/acpi/alarm echo "Aktuelle Zeit: "`date "+%Y-%m-%d %H:%M:%S"` echo "Starte Rechner neu um: "`cat /proc/acpi/alarm` echo "Fahre Rechner nun runter." busybox poweroff #/usr/bin/poweroff.pl #poweroff
Liste getesteter Mainboards
Hier eine Liste von Mainboards bei denen Wecken per ACPI funktioniert, oder auch nicht funktioniert.
Von VDR Nutzern werden erfolgreich/nicht erfolgreich eingesetzt:
Mainboard | ACPI i.o. | Hinweise/Besonderheiten |
VIA EPIA 800 | nein | Nur Wecken per set_timer funktioniert. |
VIA EPIA M10000 | ja | Wakeup per RTC muss im BIOS deaktiviert werden,
nach setzen der ACPI Weckzeit darf die RTC per hwclock nicht mehr verändert werden. |
Asus A8V Deluxe | ja | -/- |
Asus P48X | ja | -/- |
Asus P5B WIFI Deluxe AP | ja | -/- |
Asus Pundit P1-AH2 | ja | Wakeup per RTC muss im BIOS deaktiviert sein
nach setzen der ACPI Weckzeit darf die RTC per hwclock nicht mehr verändert werden. |
Gigabyte GA-6VEML | ja | mit BIOS v7 |
DFI CA63-SN | ja | Resume on Alarm muss im BIOS aktiviert sein und Datum und Zeit müssen alle auf 0 stehen. |
MSI K8N NEO-FSR V2.0 S.754 (Version 3.0) | ja | Nur Uhrzeit, kein Tag einstellbar |
ASUS M2A-VM | ja | 1.) Im BIOS: APM Configuration - Power on by RTC Alarm = "disabled"
2.) in /etc/default/rcS einfügen: HWCLOCKACCESS=no |
ASUS M2R68L (P2-M2A690G Barebone) | ja | 1.) Im BIOS: APM Configuration - Power on by RTC Alarm = "disabled"
2.) in /etc/default/rcS einfügen: HWCLOCKACCESS=no |
siehe auch: http://linvdr.org/wiki/index.php?%20pagename=LinVDR-Mainboards