Squeeze-VDR Teil 9 - Suspend To RAM

Posted by Tobi Sat, 06 Nov 2010 16:00:00 GMT

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.).

Posted in  | 7 comments | no trackbacks

Comments

  1. Karabik said 3 days later:

    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?

  2. e-tobi said 3 days later:

    Da musst du wohl in's BIOS schauen.

  3. Michael said 4 days later:

    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

  4. olaf said 21 days later:

    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

  5. e-tobi said 22 days later:

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

  6. olaf said 22 days later:

    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 lirc_dev 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 budget_core does not exist in /proc/modules ERROR: Module budget does not exist in /proc/modules ERROR: Module dvb_core does not exist

  7. Hemingway said about 1 month later:

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

Trackbacks

Comments are disabled

 

Categories

Tags

.NET debian dkb mono Notebook squeeze squeezevdr survey vdr visa