NVRAM WakeUp

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Autor

Sergei Haller (bistr-o-math)

Einleitung

NVRAM-Wakeup ist ein Programm, das dafür sorgt, dass ein Rechner zu einem bestimmten Zeitpunkt selbständig aus dem ausgeschalteten Zustand startet.
Dazu verwendet NVRAM-Wakeup die Fähigkeiten des BIOS, den Rechner mittels Echtzeituhr-Alarm (RTC RealTimeClock) automatisch zu starten. Diese Fähigkeit wird von den meisten Mainboards mit ATX-Formfaktor und auch einigen AT/BAT-Mainboards mit ATX-Buchse unterstützt. NVRAM-Wakeup hängt nicht vom VDR ab sondern ist ein eigenständiges Programm, kann aber sehr gut zum automatischen Starten des VDR-Rechners rechtzeitig zur nächsten Aufnahme benutzt werden. Im Normalfall wird es im Shutdown-Skript aufgerufen, welches den Zeitpunkt des nächsten Timers übergeben bekommt. NVRAM-Wakeup zieht von dieser Zeit dann noch einmal fünf Minuten ab (damit der Rechner zum Zeitpunkt der Aufnahme bereits fertig gebootet hat und rund läuft) und schreibt den Aufwachzeitpunkt in den NVRAM.

Fünf Minuten nach erfolgter Aufnahme lässt VDR den Rechner automatisch herunterfahren, sofern keine Benutzeraktivität auftrat und kein weiterer Timer innerhalb der nächsten MinEventTimeout Minuten ("Mindest Event Pause") liegt. Während dieser fünf Minuten wird der Hinweis "Taste drücken um Shutdown abzubrechen" eingeblendet, um einem evtl. doch anwesenden oder hinzu kommenden Benutzer eine Abbruchmöglichkeit zu geben.

Der jeweils neueste Quelltext (und damit der aktuelle Stand was die Unterstützung von Mainboards angeht) kann von der Projektseite bezogen werden.

Liste funktionierender Mainboards

Man unterscheidet hier zwischen Mainboards, die einen Reboot benötigen und solchen, die keinen Reboot benötigen: Bei ersteren kann die neue Aufwach-Zeit im BIOS nur aktiviert werden, wenn sie nach dem Eintragen der Zeit nochmals bis zum Laden des Kernels gebootet werden. Letztere können nach dem Setzen der Zeit einfach per APM oder ACPI abgeschaltet werden.

Bei manchen Mainboards (z.B. EPIA M10000) muss im Bios "Instant Off" unter Power Management gewählt sein!

Eine Liste aller explizit von NVRAM-Wakeup unterstützter Mainboards findet sich [1] auf der Projektseite]: Von VDR Nutzern werden erfolgreich/nicht erfolgreich eingesetzt:

Mainboard Reboot Besonderheiten
Abit KV7 ja Reboot nur ON_STAT notwendig
Abit AV8 ja -
ASRock K7VT4A+ ja -
ASRock K7VM2 ja -
Asus A7V600-X nein ist jetzt im neuesten CVS enthalten (ist gleich wie A7V600)
Asus A7v8x-x nein -
Asus A7V8X nein ab Bios 1013 mit --iwname asus_a7v8x
Asus P2B-F ja -
Asus P4P800-VM nein -
Asus P4PE nein -
Asus P4S533-MX nein -
ASUS P4S8L ja Bios Vers. 1005, wird von neuester NVRAM-Version automatisch erkannt.
Asus P5A nein Kernel muss für 128 Bytes in NVRAM-Treiber gepatched sein. (oder seit Version 0.95 die --directisa Option benutzen)
Asus TUSL2 nein Reboot unnötig. Ab c't VDRDevel 1.3.36 (=4.5) funktioniert alles mit Standardeinstellungen (Tipps [[C%27t-VDR_-_Leitfaden_f%FCr_Einsteiger#NVram-Wakeup|hier]])
Asus TUSL2-C ja -
DFI K6BV3+ nein BAT-Format mit ATX-Anschluss
Elitegroup L7VMM2 nein benötigt die Option --directisa
Epox 8KTA3+ Pro ja Reboot beim Statuswechsel (Enabled / Disabled) notwendig
Gigabyte GA-5AX ja -
Gigabyte GA-6WMMC7 ja -
Gigabyte GA-7IX ja Zuverlässiger Slot-A-Dino, Reboot ON_ANY_CHANGE
Gigabyte GA-K8NS-Ultra 939 ja Reboot immer notwendig, auch ohne Zeitänderung
MS 6156 nein MS-6156 (VT693). Funktioniert über directisa ohne Neustart
MSI 6340 ja Guess-Helper erkennt Board zuverlässig- Option "--directisa" ist anzugeben
MSI 694T Pro nein -
MSI 6398E ja -
MSI 6368 ja -
MSI KT6V (MS-7021) ja Guess-Helper erkennt das Board. Es geht sowohl mit als auch ohne "--directisa". Braucht leider nen Reboot, damit der Timer funktioniert.
Tekram P5M4-M Rev. 1.x ja Reboot nur ON_STAT notwendig.
VIA EPIA VE5000 - NVRAM-WakeUp erkennt das Board nicht und kann die RTC-Parameter nicht ermitteln. Daher sollte set_timer verwendet/versucht werden (s. u.).
VIA EPIA ML5000A ja -
VIA EPIA ME6000 ja -
VIA [[C%27t-VDR_-_NVRAM_Wakeup_f%FCr_VIA_EPIA_M10000 | EPIA M10000]]B ja im Bios "Instant Off" unter Power Management wählen! Braucht "Reboot On_Any_Change", --directisa ist unnötig!
VIA EPIA SP13000 ja -

Für Boards, die nur Wake on Time (keinen Datumseintrag) unterstützen (z.B. ASUS A7N8X-Deluxe) gibt es eine Lösung: Wake on time

Wenn NVRAM nicht mit dem verwendeten Mainboard funktioniert, bleibt noch die Möglichkeit der Wakeup-Hardwarelösung.

Installation

Allgemein

make devices 
make
make install
man nvram-wakeup
nvram-wakeup -D
  • wenn man Glück hatte, war's das schon
  • wenn das Board nicht unterstützt wird. Halb-automatisch anlernen:
    1. guess-helper ausführen und der Anleitung folgen
    2. Mit der fast fertigen nvram-wakeup.conf die Anleitung aus README.reboot durchgehen um zu testen ob das Motherboard einen Reboot braucht.

Dieses dann in nvram-wakeup.conf eintragen.

  • wenn die generierte nvram-wakeup.conf nicht funktioniert, auf VDR-Portal.de im NVRAM-Forum posten.

Distributionsspezifisch

Mit set_timer für problematische Boards

Falls nvram_wakeup das Mainboard nicht kennt und auch guess_helper.sh zur Parameter-Ermittung nicht weiter hilft gibt es noch ein Script, das im Paket NVRAM-Wakeup enthalten ist und welches immer zum Ziel führen sollte. Das Script heißt set_timer.

  • Installation ist im Script selbst beschrieben siehe hier

Checkscript Beispiele

Im Head der vdrshutdown finden sich bereits ein paar Beispiele, dort ist folgende Variable anzupassen. (Bsp.)

CHECKSCRIPT=/usr/local/bin/checkscript.sh

Testen, ob die WakeUp-Daten (Tag, Zeit, WakeUp An/Aus) korrekt im BIOS gesetzt werden mit folgender Kommandozeileneingabe:

 nvram-wakeup -s $((`date +%s` + 11 * 60))

Wenn nach dem Herunterfahren im BIOS Eintrag dann die Zeit des Eintragens +11 Minuten eingetragen ist, dann kann man den VDR ausmachen und warten, ob das System dann angeht.

Wenn dies geht, dann liegt der Fehler bei der Einbindung ins VDR.

Wenn er nicht angeht, liegt es evtl. am nicht erfolgten Reboot, den manche Boards, wieoben beschrieben erfordern. Man kann auch mal testen, ob das Board wenigstens angeht, wenn man von Hand im BIOS ein WakeUp-Event einträgt, ob er dann zur eingestellten Zeit angeht.

WakeUp nach einfachem Herunterfahren

Schaltet man den Computer nicht über die Fernbedienung oder aus dem VDR-Menü aus, wird mit obiger Variante nicht in den NVRAM geschrieben, da VDR dann das Shutdown-Skript nicht ausführt. Deswegen sollte man in diesem Fall den folgenden Befehl vor einem kill des VDR ausführen (in der Regel in /etc/init.d/vdr):

nvram-wakeup -s $(svdrpsend.pl -d localhost NEXT abs|grep -i 250 |cut -c7-16)

CVS

 cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nvram-wakeup login 
 cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nvram-wakeup co nvram-wakeup

Links