====== Acpi Wakeup ======
Der VDR kann zu angegebenen Timern aufwachen. Dies wird durch die [[vdr:scripte:vdrpoweroff|Vdrpoweroff]] gesteuert.
Daher ist es wichtig die Angaben, wie der VDR herunterfahren soll, in dieser Datei richtig angzugeben.
===== Hardwareuhr =====
Das BIOS hat eine RTC (RealTimeClock), diese wird über die Batterie auf dem Mainboard auch dann mit Strom versorgt wenn
der VDR ausgeschaltet ist.
So kann man die Uhrzeit der RTC abrufen
hwclock --debug
Die Ausgabe sieht ungefähr so aus:
hwclock von util-linux-ng 2.17.2
Benutze /dev interface to clock.
Letzte Abweichungskorrektur vorgenommen bei 1333552484 Sekunden nach 1969
Letzte Kalibrierung vorgenommen bei 1333552484 Sekunden nach 1969
Hardwareuhr geht nach UTC Zeit
Die Hardwareuhr läuft vermutlich in UTC.
Warte auf Uhrtick…
… erhielt Uhrtick
Zeit gelesen aus Hardwareuhr: 2012/04/04 15:19:34
Zeit der Hardwareuhr: 2012/04/04 15:19:34 = 1333552774 Sekunden seit 1969
Mi 04 Apr 2012 17:19:34 CEST -0.110406 Sekunden
Man sieht dass sich die aktuelle Uhrzeit des VDR's in der **Mitteleuropäischen Sommerzeit** befindet (letzte Zeile "CEST").
Die BIOS Uhrzeit der RTC hat hier eine Abweichung von 2 Stunden. Das bedeutet dass sich die Uhrzeit der RTC im **UTC**
(Universal Time Coordinated) befindet. Im Winter hat die RTC ein Abweichung von 1 Stunde. Die Ausgabe der letzten Zeile
hat dann die **Mitteleuropäische Zeit** ("CET").
Man muss die Systemzeit des Linux auf die lokale Zeit stellen, damit die Aufwachzeiten der Timer korrekt ausgewertet werden.
Dies tut man in der Datei ''/etc/default/rcS''.
Hier setzt man den Parameter **"UTC"** auf **"yes"**. Danach muss ein Reboot erfolgen.
Beispiel:
# /etc/default/rcS
#
# Default settings for the scripts in /etc/rcS.d/
#
# For information about these variables see the rcS(5) manual page.
#
# This file belongs to the "initscripts" package.
TMPTIME=0
SULOGIN=no
DELAYLOGIN=no
UTC=yes <---Muss auf yes stehen
VERBOSE=no
FSCKFIX=no
===== Timertest =====
Um einen Aufwachtest einfach auszuprobieren, setzt man die Aufwachzeit für das BIOS manuell.
Diese kann allerdings bereits gesetzt sein und würde ein erneutes setzen nicht erlauben.
Daher resettet man die Aufwachzeit und setzt diese dann neu.
Wichtig ist, dass die Aufwachzeit in Sekunden seit dem **01.01.1970** angegeben wird.
Hier die Befehle dazu:
echo 0 > /sys/class/rtc/rtc0/wakealarm
date +%s -d "Wed Apr 04 17:45:00 MEST 2012" > /sys/class/rtc/rtc0/wakealarm
Hier habe ich einfach eine Uhrzeit mit 5 Minuten in der Zukunft gesetzt.
Ob nun die Aufwachzeit angenommen und eingestellt ist, prüft man mit diesem Befehl:
cat /proc/driver/rtc
Die Ausgabe sieht in etwa so aus:
rtc_time : 15:42:22
rtc_date : 2012-04-04
alrm_time : 15:45:20
alrm_date : 2012-04-04
alarm_IRQ : no
alrm_pending : no
24hr : yes
periodic_IRQ : no
update_IRQ : no
HPET_emulated : no
BCD : yes
DST_enable : no
periodic_freq : 1024
batt_status : okay
Hier werden alle relevanten Angaben (RTC Uhrzeit, Aufwachzeit mit jew. Datum) ausgegeben.
Ab jetzt kann der VDR mit diesem Befehl heruntergefahren werden.
shutdown -h now
Er sollte dann in ca. 5 Minuten aufwachen.
Wenn der VDR in dieser Zeit aufwacht dann ist alles für ein korrektes Aufwachen, seitens des Mainboards/BIOS, gesetzt.
Falls sich nichts tut, dann das autom. Uhrzeitstellen des Systems verhindern.
vi /etc/init/hwclock-save.conf
Hier die **exec-Zeile** auskommentieren.
Zusätzlich kann es sein dass man im BIOS den Parameter "HPET" ausschalten muss (falls vorhanden).
Zusätzlich übergibt man dem Kernel auch die Anweisung "HPET" nicht zu benutzen.
vi /etc/default/grub
Hier diese Zeile:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
erweitern in
GRUB_CMDLINE_LINUX_DEFAULT="hpet=disable quiet splash"
**WICHTIG:** Funktioniert erst nach einem Reboot.
===== Berechtigungen =====
Der VDR läuft aber nicht als Benutzer "root" sondern als "vdruser".
Dieser Benutzer hat aber nicht die Rechte die Befehle die oben und in der [[vdr:scripte:vdrpoweroff|Vdrpoweroff]] stehen,
auszuführen. Daher setzen wir noch folgende Angaben in der ''/etc/sudoers''
visudo
Inhalt einfach unten einfügen:
vdruser ALL=(ALL) NOPASSWD: /usr/local/bin/vdrpoweroff.sh,/sbin/shutdown,/sbin/reboot,/sbin/poweroff,/usr/sbin/ntpdate,/sys/power/state,/sbin/hwclock,/bin/chmod,/sys/class/rtc/rtc0/wakealarm,/proc/driver/rtc,/bin/sh,/usr/sbin/pm-suspend,/usr/sbin/ethtool,/usr/bin/killall,/usr/bin/pkill
Nun kann die [[vdr:scripte:vdrpoweroff|Vdrpoweroff]] erstellt werden.
===== Sonstige erfahrungen =====
Dies sind gesammelte Werke und können sich mittlerweile erübrigt oder geändert haben.
Getestet mit ubuntu 10.04.1 und standard Kernel
Tests aus [[http://www.vdr-wiki.de/wiki/index.php/ACPI_Wakeup]]
Gigabyte GA-MA78GM-S2H (rev.1.1) BIOS F5 ACPI-i.o.=ja systohc-bug-free=? ->getest mit 2.6.27.7 rtc_cmos
und hpet=disable
Gigabyte GA-MA78GM-S2H (rev.1.0) BIOS F11 ACPI-i.o.=ja systohc-bug-free=ja ->HPET Support Disabled und
Power-On by Alarm Disabled im
BIOS, Ubuntu 10.04.1
Standard-Kernel, funktioniert
mit 1x schreiben nach
wakealarm.
Folgende Befehle auch mit dem vdruser testen und ggf. in ///etc/sudoers// ergenzen
Zugriff auf RTC wakealram prüfen.
sudo find /sys/class/rtc/rtc0/wakealarm
Bios Uhrzeit auf UTC Zeit stellen.
sudo hwclock --systohc --utc
Manuellen Test durchführen.
Wakealarm löschen.
sudo bash -c "echo 0 > /sys/class/rtc/rtc0/wakealarm"
Wakealarm setzen auf 5 Min. später.
sudo bash -c "echo `date '+%s' -d '+ 5 minutes'` > /sys/class/rtc/rtc0/wakealarm"
Gesetzten Timer prüfen.
sudo cat /proc/driver/rtc
Wert alrm_time zeigt die UTC Uhrzeit an wann der VDR aufwachen wird
Ausgabe:
rtc_time : 18:04:21
rtc_date : 2010-10-24
alrm_time : 18:09:08
alrm_date : 2010-10-24
alarm_IRQ : yes
alrm_pending : no
24hr : yes
periodic_IRQ : no
update_IRQ : no
HPET_emulated : no
DST_enable : no
periodic_freq : 1024
batt_status : okay
VDR herunterfahren und warten.
shutdown -h now