Squeeze-VDR Teil 9 - Suspend To RAM

Manchmal macht es Sinn, den VDR nicht komplett auszuschalten sondern ihn nur schlafen zu legen. So zum Beispiel, wenn ein externer IR-Einschalter nur im Suspend-Modus mit Strom versorgt wird oder wenn der VDR ganz einfach noch ein bisschen schneller starten soll. Den VDR in den Suspend-To-RAM-Zustand zu versetzen ist zwar recht einfach, damit er aber auch wieder betriebsbereit aufwacht sind noch ein paar zusätzliche Handgriffe nötig.

power Vorweg vielleicht ein wenig Hintergrundwissen: Man unterscheidet beim Rechner grundsätzlich zwischen 6 verschiedenen Zuständen, die mit S0 - S5 benannt sind. S0 ist dabei der Zustand mit dem größten und S5 mit dem geringsten Stromverbrauch. D.h. im Klartext S0=Computer an, S5=Computer aus. S1-S4 sind Zustände in denen nur Teile des Systems runtergefahren sind, während andere Teile noch arbeiten. Uns soll speziell der Zustand S3 = "Suspend To RAM" interessieren. Hier werden die meisten Systemkomponenten deaktiviert, nur der RAM wird weiterhin mit Strom versorgt. Da das System nicht neu gebootet werden muss (Alle Treiber und Programme sind ja noch im RAM geladen) dauert ein Aufwachen meist nur wenige Sekunden.

Gerade beim Aufwachen aus dem S3-Zustand machen oft aber Treiber und Hardware einen Strich durch die Rechnung. Speziell die DVB-Treiber haben i.d.R. dieses Problem. Aber auch Lirc oder die Nvidia-Treiber stellen sich da schonmal gerne quer. Um das zu umgehen, müssen vor dem Wechsel in den S3-Modus die entsprechenden Treibermodule und Programme entladen werden und nach dem Aufwachen wieder gestartet.

Zunächst musst du dem VDR aber beibringen, sich nicht Auszuschalten sondern in den Suspend-To-RAM-Modus zu wechseln. Dazu trägst du in /etc/default/vdr folgende Zeile ein:

SHUTDOWNCMD="sudo /usr/sbin/pm-suspend"

Ausserdem musst du visudo starten und folgendes eintragen:

vdr ALL=(ALL) NOPASSWD: /usr/sbin/pm-suspend

Mit einem Neustart des VDR via service vdr restart ist dein VDR nun bereit beim Betätigen der Power-Taste "einzuschlafen".

Damit auch das Aufwachen klappt sorgen für das oben erwähnte Entladen/Laden der Treiber und Programme zwei kleine Skripte, die du wie folgt installierst:

sudo sh -c "wget -P /usr/local/sbin http://www.e-tobi.net/blog/files/module-helper && chmod a+x /usr/local/sbin/module-helper"
sudo sh -c "wget -P /etc/pm/sleep.d http://www.e-tobi.net/blog/files/10_vdr-dvb && chmod a+x /etc/pm/sleep.d/10_vdr-dvb"

module-helper ist ein kleines Python-Skript, welches eine Liste von Treiber-Modulen und davon abhängigen Modulen erstellt, diese deaktiviert und später wieder erneut lädt.

10_vdr-dvb sorgt dafür, das beim Wechsel in den S3-Modus bestimmte Programme beendet und Module mit module-helper entladen werden und diese beim Aufwachen wieder gestartet werden. Standardmäßig sind in /etc/pm/sleep.d/10_vdr-dvb folgende Programme und Module definiert:

SERVICES="vdr lirc"
MODULES="dvb_core lirc_dev"

D.h. beim Wechsel in den S3-Zustand werden VDR und LIRC beendet und die DVB-und LIRC-Treiber werden entladen (beim Aufwachen geschieht entsprechend das Gegenteil).

Auf meinem System ist das alles was benötigt wird, damit Suspend-To-RAM mit dem VDR funktioniert. Bei dir muss das nicht zwangsweise auch so reibungslos funktionieren. Hast du nach dem Aufwachen z.B. kein Bild (kannst dich aber z.B. noch via SSH einloggen) so könnte es sein, dass auch die NVIDIA-Treiber entladen werden müssen. Dazu musst du dann /etc/pm/sleep.d/10_vdr-dvb wie folgt ändern:

SERVICES="vdr lirc plain-xserver"
MODULES="dvb_core lirc_dev nvidia"

So werden auch der X-Server und die NVIDIA-Treiber berücksichtigt. Wenn das auch nicht funktioniert, bleibt dir nur die gute alte Trial-and-Error-Method und du musst versuchen herauszufinden, ob noch andere Programme oder Treiber-Module berücksichtigt werden müssen. Wenn du die SERVICES-Einträge änderst, achte darauf, dass du sie in der richtigen Reihenfolge einträgst. Wie oben zu sehen muss z.B. der X-Server nach dem VDR beendet werden, da VDR diesen benötigt, solange er noch läuft.

Abschließend sei noch zu sagen, dass das Ausschalten via Suspend-To-Ram nicht unbedingt immer 100%-ig zuverlässig ist. Möchte man wirklich auf Nummer sicher gehen, dass der VDR sich beim Einschalten nicht festfrisst, sollte man ihn lieber normal ausschalten und booten. Probier es am besten selber aus. Man könnte dem VDR auch beibringen, beim Ausschalten zu fragen, ob man einschlafen oder ganz ausschalten möchte. Wenn da Interesse besteht, kann ich das nochmal gesondert erläutern.

Mit Suspend-To-Ram dauert das Ausschalten bei mir übrigens ca. 3 Sekunden und vom Einschalten bis Bild und Ton da sind 15 Sekunden. Im Vergleich dazu sind es beim normalen Aus-/Einschalten 7 und 45 Sekunden (Inklusive 5 Sekunden Grub-Boot-Menü und fast 30 Sekunden die das BIOS braucht um erstmal das Boot-Menü zu laden. Der Rest ist dank SSD sehr schnell.).

Published on 06/11/2010 at 17:00 by , tags

  • bei Hemingway 13/12/2010 at 08:41

    klappte out of the the box mit einem p5b-de und e8400. Danke


  • bei olaf 28/11/2010 at 20:16

    Hallo Tobi,

    hmm... da steht schon einges was ich aber nicht immer deuten kann. Zum einen ein Error wegen Lirc. habe, da ich noch keine habe, keine Fernbedienung dran. Ich bediene im Momment über das Live Plugin

    Zum Anderen gibts Erros wegen fehlender Module ERROR: Module lircdev does not exist in /proc/modules ERROR: Module budget does not exist in /proc/modules ERROR: Module budget does not exist in /proc/modules ERROR: Module budgetcore does not exist in /proc/modules ERROR: Module budget does not exist in /proc/modules ERROR: Module dvb_core does not exist


  • bei e-tobi 28/11/2010 at 12:01

    Schau mal nach /var/log/pm-*.log ob du da einen Hinweis findest was schief läuft.


  • bei olaf 27/11/2010 at 21:30

    hmm... bei mir lässt sich der Rechner dann nicht mehr runter fahren. Es hat nach der Konfiguration 1 mal geklappt. Danach beeendet sich zwar der VDR allerdings nicht der Rechner. Nach wenigen augenblocken ist der VDR ohne mein zutun wieder da


  • bei Michael 10/11/2010 at 13:28

    Hallo !pm-suspend macht gar nichts. Beim schauen im Bios ist mir aufgefallen, das dort steht USB Wakeup from S4 -S5 enabled.Kann es sein das S3 von meinem Bios gar nicht unterstützt wird ? Habe den Befehl mal an meinen Lap getestet (lenny) .Da geht es gut.Gruß Michael


  • bei e-tobi 09/11/2010 at 18:03

    Da musst du wohl in's BIOS schauen.


  • bei Karabik 09/11/2010 at 17:58

    Erster!:) Geht auf Anhieb mit Atric-Einschalter nur das die Power-Leuchte am Gerät ständig blinkt.Ich vermute das es der Stand-By Zustand ist? Gibt es das noch ein anderes shutdownscript oder muß ich an den Bios-Einstellungen schrauben?


comment Squeeze-VDR Teil 9 - Suspend To RAM

Powered by Publify | Photo Startup stock photos