ACPI Wakeup
(Neue API von Kernel 2.6.22+ dokumentiert) |
|||
Zeile 2: | Zeile 2: | ||
'''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''' (''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 | + | '''ACPI-Wakeup''' bedeutet also vor diesem Hintergrund, dass der Rechner über die ACPI-Kernelinterface geweckt werden kann. Dazu schreibt man die Weckzeit in eine bestimmte Datei, die sich je nach Kernelversion entweder im proc- oder sysfs-Verzeichnisbaum befindet |
− | echo 2006-02-09 23:05:00 >/proc/acpi/alarm | + | ===Kernel < 2.6.22=== |
+ | Der Pfad lautet /proc/acpi/alarm. Die Weckzeit wird im Format YYYY-MM-DD HH:MM:SS erwartet. Unbedingt darauf achten, ob die HW-Uhr in UTC oder in lokaler Zeit läuft! Gegebenenfalls muss man eine oder zwei Stunden abziehen. | ||
+ | |||
+ | Beispiel: | ||
+ | |||
+ | echo 2006-02-09 23:05:00 > /proc/acpi/alarm | ||
+ | |||
+ | ===Kernel >= 2.6.22=== | ||
+ | Der Pfad lautet /sys/class/rtc/rtc0/wakealarm. Die Weckzeit wird als Anzahl der Sekunden seit dem 01.01.1970 in UTC erwartet. Es ist ratsam, die Systemuhr in UTC laufen zu lassen. | ||
+ | |||
+ | Beispiel: | ||
+ | |||
+ | date +%s -d "Fri Feb 22 21:00:00 MET 2008" > /sys/class/rtc/rtc0/wakealarm | ||
==Hinweise== | ==Hinweise== |
Version vom 22. Februar 2008, 21:27 Uhr
Inhaltsverzeichnis |
Beschreibung
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 eine bestimmte Datei, die sich je nach Kernelversion entweder im proc- oder sysfs-Verzeichnisbaum befindet
Kernel < 2.6.22
Der Pfad lautet /proc/acpi/alarm. Die Weckzeit wird im Format YYYY-MM-DD HH:MM:SS erwartet. Unbedingt darauf achten, ob die HW-Uhr in UTC oder in lokaler Zeit läuft! Gegebenenfalls muss man eine oder zwei Stunden abziehen.
Beispiel:
echo 2006-02-09 23:05:00 > /proc/acpi/alarm
Kernel >= 2.6.22
Der Pfad lautet /sys/class/rtc/rtc0/wakealarm. Die Weckzeit wird als Anzahl der Sekunden seit dem 01.01.1970 in UTC erwartet. Es ist ratsam, die Systemuhr in UTC laufen zu lassen.
Beispiel:
date +%s -d "Fri Feb 22 21:00:00 MET 2008" > /sys/class/rtc/rtc0/wakealarm
Hinweise
- Manche Mainboards sind etwas begriffsstutzig, so dass die Weckzeit zweimal in /proc/acpi/alarm geschrieben werden muss. Die gentoo-vdr-scripts machen das automatisch so
- Manche Mainboards wachen nicht auf, wenn nach dem Speichern der Aufwachzeit die Hardwareuhr verändert wird. Unter gentoo muss der Parameter CLOCK_SYSTOHC in /etc/conf.d/clock dann auf no gestellt werden. Siehe auch die Liste getesteter Mainboards.
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 # einige Mainboards sind etwas begriffsstutzig, echo $nextboot > /proc/acpi/alarm # sie kapieren erst nach zwei Aufrufen, was Sache ist 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. |
VIA PC2500 | ja | Wakeup per RTC muss im BIOS deaktiviert werden,
nach setzen der ACPI Weckzeit darf die RTC per hwclock nicht mehr verändert werden: in /etc/default/rcS einfügen: HWCLOCKACCESS=no |
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 (HDMI) | 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 |
Shuttle XPC SN68SG2 | ja | 1.) Im BIOS: APM Configuration - Power on by RTC Alarm = "disabled"
2.) in /etc/default/rcS einfügen: HWCLOCKACCESS=no |
Gigabyte GA-K8VT800 PRO | 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
ACPI Schlafmodus
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