VDR 1.7.18 "poweroff" durch "hibernate" ersetzen

  • Hallo Forum!


    ich habe auf Basis eines Ubuntu 11.04 und VDR 1.7.18 (yaVDR PPA) meinen neuen VDR aufgesetzt.


    Zweck ACPI-Timer will ich beim Ausschalten über das OSD das System in den Modus "Suspend-to-Disk" S4 schicken. Das habe ich manuell auf der Konsole mit "pm-hibernate" erfolgreich durchtesten können.


    Aber wo zum Geier stelle ich das im VDR vom "shutdown" auf "hibernate" um. Ich habe schon überall in den Configs gesucht. Nichts hat aber richtig gegriffen.


    Danke für Eure Hilfe!

  • Starte mal bei /usr/lib/vdr/vdr-shutdown.wrapper In diesem Script wird das Shutdown Command aus ner Konfigdatei geladen oder ist fest drin.


    Jedenfalls deute ich das /etc/init/vdr so was in der yavdr-base drin ist so das das der genutzte shutdown Wrapper ist. Dieses Shutdown Command kann durch ein Shutdown Script (sollten in /usr/share/vdr/shutdown-hooks liegen) überschrieben werden, also besser das Shutdown Script (oder die Konfig des relevanten shutdown Scriptes) ändern als das vdr-shutdown.wrapper Script.


    cu

  • Auf den Shutdown-Wrapper vdr-shutdown.wrapper bin ich auch schin gestoßen. Dabei handelt es sich wohl um ein Binary. Jedenfalls zeigt vim mir nur Schrott.


    Unter /etc/vdr/shutdown-hooks/S90.custom habe ich dann mal einfach ein eigenes Script eingetragen. Um genau zu sein, eigentlich nur pm-hibernate. Das hat auch funktioniert. Nach dem aufwachen aus dem S4 schaltet sich der Rechner dann leider ganz ab. Es wird also irgendwie noch das shutdown ausgeführt.

  • Ok, ich habe jetzt folgendes in die Datei /etc/vdr/shutdown-hooks/S90.custom eingetragen:


    Code
    echo "SHUTDOWNCMD=/usr/sbin/pm-hibernate"


    Er fährt jetzt in de Ruhezustand S4 herunter, wacht aber nicht korrekt auf. TV bleibt schwarz und nach kurzer Zeit kommt die Meldung im OSD:
    "VDR wird in 5:00 Minuten ausschalten"


    Wenn ich pm-hibernate manuell auf der Konsole ausführe, wacht er wieder korrekt auf... Seltsam...


    Ach, die Module zu entladen und den VDR nach dem Ruhezustand neuzustarten, das habe ich schon eingerichtet. Deswegen klappt der Ruhezustand schon manuell:
    Module nach Ruhezustand neu laden [Ubuntu 11.04]


    Noch weitere Ideen?

  • Ok, ich habe jetzt folgendes in die Datei /etc/vdr/shutdown-hooks/S90.custom eingetragen:


    Code
    echo "SHUTDOWNCMD=/usr/sbin/pm-hibernate"


    Er fährt jetzt in de Ruhezustand S4 herunter, wacht aber nicht korrekt auf. TV bleibt schwarz und nach kurzer Zeit kommt die Meldung im OSD:
    "VDR wird in 5:00 Minuten ausschalten"


    pn-hibernate macht ja wirklich nur das, nämlich den PC schlafen legen. Wenn er dann wieder aufwacht gehts genau an der Stelle weiter, und diese Stelle ist die, in der der VDR darauf wartet das das Shutdownscript ihn beendet.


    Also vorher den VDR beenden (üblicherweise mit "invoce-rc.d vdr stop") und nach dem Aufwachen wieder starten. Scheint so als hättest du das vdr beenden einfahc vergessen, dann greift der VDR Start nach dem Aufwachen natürlich ins leere.


    Beim poweroff geht das VDR Beenden ja automatisch weil Linux hier eh für alle Init Scripte Stop aufruft.


    cu

  • Sehr seltsam... Eigentlich habe ich das nicht vergessen.


    Ich habe unter /usr/lib/pm-utils/sleep.d/ einen "Hook" 05vdr angelegt . Er enthält folgendes:


    Wenn ich den pm-hibernate manuell aufrufe scheint er zu greifen. Ruft der VDR ihn auf, klappt es nicht, bzw. das Script wird offensichtlich nicht aufgerufen.


    Fall 1:
    VDR wird auf der Konsole manuell mit pm-hibernate runtergefahren. Wenige Sekunden vor dem Ausschalten stoppt die Wiedergabe am TV. Also wurde der VDR beendet.


    Fall 2:
    VDR wird per OSD beendet. Hier läuft die TV-Wiedergabe bis zum letzten Augenblick.


    Interessanterweise klappt der Standby S3 (STR) per VDR gar nicht. Die Festplatte schaltet sich aber, der Lüfter drehen sich weiter und das Gerät geht nicht aus. Manuell klappt auch das.


    Sehr seltsam... Dann muß der VDR den Aufruf von pm-hibernate doch noch irgendwie verändern.

  • Ok, mir ist gerade noch was aufgefallen:


    Ich hatte SHUTDOWNCMD=/usr/sbin/pm-hibernate in der /etc/default/vdr eingetragen.


    Ich habe es jetzt dort auskommentiert und jetzt in der /etc/vdr/shutdown-hooks/S90.custom

    Code
    echo "SHUTDOWNCMD=/usr/sbin/pm-hibernate"


    Jetzt hab ich zwar nicht mehr das Problem mit dem "VDR wird gleich beendet", dafür reagiert er jetzt fürchterlich langsam. Umschalten dauert ewig! 6-10 Sekunden... Laut top idelt die CPU zu 90%


    Starte ich den VDR Dämonen neu, läuft es wie geschmiert!

  • Seltsam, da sollten die Logs eigentlich was sagen.


    Also, wenn du den VDR beendest sollten die Shutdownhooks aufgerufen werden, die setzen den ACPI Timer (das macht das ACPI Shutsownscript) und rufen hibernate auf (das commando setzt dein Shutdownscript und im wrapper wirds am Ende ausgeführt). hibernate (das Shutdown Commando) stoppt den VDR und legt den PC schlafen. Überprüfe mal ob auch alles so ausgeführt wird.


    Evtl. wird nicht auf das stoppen des VDR gewartet oder ähnliches? Mach mal als Shutdown Commando "invoce-rc.d vdr stop" und rufe dann manuell dein hibernate auf. Gehts dann dann ist es ein Timingproblem.


    BTW: Auch mal prüfen ob der VDR User die notwendigen Rechte hat.


    cu

  • Ok, wird gemacht!


    Muß jetzt aber erstmal weg. Aber beim Weg zum VDR, kam ich an den noch angeklemmten TFT-Monitor vorbei:


    dvb-ttpci: ARM crashed @ card 1


    Hat das vielleicht was zu sagen? Ist mir bisher noch nicht untergekommen. Glaube dass das nur nach dem Hibernating auftaucht.

  • So, ich habe mal in dem pm-utils ein paar sleeps verteilt. Das hat leider nicht geholfen. Habe dann aber mir das syslog angeschaut. Anscheinend gibt es irgendwie Probleme mit einer der Karten:



    ich vergleiche das jetzt mal mit dem Syslog, was passiert, wenn ich den Hibernate manuell ausführe.

  • Naja, ich denke es bietet sich an erstmal damit anzufangen vor dem Hibernate den VDR zu stoppen und die DVB Treiber zu entladen. Wenn du das sicher stellst sollte es vermutlich gehen.


    Aus dem Log ist der Vorgang nicht ersichtlich, es sollte im Log sowas wie "vdr: [1640] exiting, exit code 0" kommen (d.h. der VDR hat sich beendet) und dann die Entlademeldungen der DVB Treiber, erst dann sollte der hibernate Kram anfangen.


    Nu kenne ich das verwendete VDR Statscript (und das ubuntu Upstart Konzept) nicht, ich vermute das rausch da nicht wirklich eventgesteuert durch, sleep sind ja ganz schlecht für sowas. Da muss wirklich sichergestellt sein das der VDR beendet IST (und nicht nur den VDR Stop senden und proforma X Sekunden warten) bevor es weitergeht.



    poweroff ist da gutmütiger, da kann man ja sicher sein das der Kram aus dem Speicher ist wenn der Strom weg ist (und hart gekillte VDRs fallen da nicht immer negativ auf), hibernate ist da anspruchsvoller.


    cu

  • Ja, da scheint das Problem zu liegen...


    Wenn ich den Hibernate manuell durchführe, dann klappt alles wunderbar. Auch automatisch mit dem "Hook-Script". Das heißt ich muß den VDR nicht manuell beenden. Laut dem Syslog klappt das wunderbar alleine.


    Steuert der VDR das ganze, geht es in die Hose. Dann tauchen auch ausschließlich nur die Fehler mit der DVB-Karte auf (siehe Syslog-Auszug weiter oben). Außerdem finde ich keinen exit-code des VDR im Syslog. Es sieht eher so aus, als wäre er mit einem kleine Delay weitergelaufen.


    Es scheint so, als wenn der VDR das "Dienste" Script des pm-hibernate nicht ausführt. Was beim manuellen Aufruf wunderbar klappt...

  • Zum System, meint der VDR sich beenden zu müssen startet er den shutdown hook und macht ganz normal weiter (Bildschirmausgabe wird aber gestoppt), 5 Minuten später startet er den shutdown hook nochmal, und dann 5 min. später nochmal usw.


    Es ist also an den Shotdownscripts den vdr/das system zu beenden.



    Der erste Test ist also mit einem Timer weit in der Zukunft aus dem Log den shutdown hook Aufruf zu entnehmen (da steht die kompette Kommandozeile drin *) ), diese Kommandozeile führst du dann unter dem VDR user von der Shell aus auf (ist ja egal ob der vdr das aufruft oder ob du das von der shell aus tust), dann siehst du auch evtl. angezeigte Fehlermeldungen.


    cu


    *) Bei mir sieht das z.B. ohne Timer so aus

    Code
    vdr: [22654] executing '/usr/local/sbin/vdr-shutdown 0 0 0 "" 0'


    in diesem fall würde ich also "/usr/local/sbin/vdr-shutdown 0 0 0 "" 0" von der Konsole aus aufrufen um die Sache zu testen.

  • Ich würde das beenden des vdr vor das pm-suspend durch ; getrennt im shutdownkommando angeben, sonst kann es anscheinend passieren das der vdr beim schlafen legen noch läuft. Darauf reagieren die DVB treiber seeehr allergisch, weiterhin würde ich die DVB Treiber entladen vorm suspend und laden nach dem suspend , die wenigsten DVB Treiber können S3 oder S4 ab.

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!