41
Allgemein [ General ] / MLD6.5 auf RPi5: Suspend->suspend.soft oder vdr-plugin-suspendoutput->shutdown.s
« Last post by gustavgans on July 18, 2026, 18:10:11 »Hallo zusammen,
Der längliche Text unten läuft auf folgende zwei Fragen hinaus:
a) Bei mir versagt das suspendoutput Plugin - was könnte mein Fehler sein?
b) Eigentlich hätte ich lieber das suspend Plugin, das es in der MLD5 gab - lässt sich das machen?
Ich bin mit meiner MLD Standalone auf dem RPi5 "fast" fertig: WLAN läuft, USB-SSD läuft als /data, Fernbedienung geht über GPIO, Sundtek Dual-SatHD läuft, VDR läuft inklusive Live-TV und Aufnahmen. Auf der ToDo-Liste steht nun noch "Suspend".
Der RPi5 ist für mich ja bloß eine Art SetTopBox mit Aufnahmegerät. Die darf gerne nur dann in Betrieb sein wenn sie muss, also wenn ich Live-TV schaue oder eine Aufnahme zu machen ist. Anders als richtige Computer kann der Raspi kein Suspend(toX) und also auch kein WakeOnRTC, was die normale Methode der MLD wäre, um so ein intelligentes Suspend zu realisieren. Ich habe bisher drei Methoden gesehen, um dem RPi sowas beizubringen:
a) Vollständiges Herunterfahren und WakeOnTimer mittels einer externen Hardware, die vor dem Shutdown eingestellt wird und dann per Schaltkontakt den RPi-Reset auslöst.
b) WakeOnTimerOrRemote(OrLAN) mittels MLD Paket "suspend", das im Modus "suspend.soft" nur den VDR (inklusive DVB-Receivern) beendet und von der MLD per RTC/Cronjob oder per Fernbedienung etc. nach Bedarf/Wunsch wieder gestartet wird.
c) VDR-Plugin "suspendoutput", das die "PowerOff"-Funktion (FB-Taste POWER2 bzw. Timeouts des VDR) auf das Abschalten der TV-Ausgabe reduziert.
Variante a) liefert den größten Energiespareffekt, erfordert aber eine komplexe Einrichtung und eben auch zusätzliche Hardware - soweit ich mitbekommen habe gibt es eine Raspi-Pico Lösung. Damit Aufwecken per Fernbedienung geht braucht der Pico einen eigenen FB-Receiver. Das ist mir, ehrlich gesagt, zu viel Aufwand.
Variante b) hat es wohl bis MLD5.1 noch gegeben, das Paket "suspend" gibt es aber für die MLD6(.5) nicht mehr. Schade, denn sowas wäre mein Favorit gewesen, zumal es komfortabel per WebIF eingerichtet werden konnte.
Variante c) liefert den geringsten Energiespareffekt, das Paket "vdr-plugin-suspendoutput" ist verfügbar, man muss es aber im Terminal mittels Eingriffen in die Systemdateien erziehen, wenn es auf die POWER2 Taste hören soll. Ich möchte deshalb dieses (oder ein ähnliches - siehe b) Plugin nicht mittels seiner Aufrufparameter (MLD/Einstellungen/TV/PluginAufrufArgumente) automatisch agieren lassen (z.B. 't 120' [min]), sondern es in die Abläufe integrieren, die VDR/MLD ohnehin macht. VDR hat ja bereits Timeout-Funktionen und reagiert auch auf die POWER2-Taste.
Soweit ich verstehen konnte wird der VDR bei Timeouts sowie beim Betätigen der PowerOnOff-Taste z.B. auf der Fernbedienung das Skript ausführen, welches in der /etc/vdr/conf.d/00_vdr.conf unter "--shutdown=..." angegeben ist, standardmäßig also /usr/share/vdr/shutdown.sh. Dieses Shellskript prüft, ob der Shutdown denn "genehm" ist und bereitet normalerweise den WakeOnRTC vor. Teil der Prüfung auf Erlaubnis zum Shutdown ist die Ausführung aller Shellskripte im Unterordner (/usr/share/vdr/)shutdown.d/, in alphanumerischer Reihenfolge. Sobald eines davon nicht "errorlevel 0" zurückgibt bricht der Vorgang ab. Man kann also den Shutdown beliebig manipulieren und abbrechen, indem man hier ein weiteres Skript erstellt, welches beliebige Aktionen ausführt und am Ende ein errorlevel > 0 zurückgibt.
Ich habe hier also folgendes Skript "99_suspoutp.sh" hinzugefügt:
Der Name beginnt mit "99_", damit es als Letztes aufgerufen wird, also nur dann wenn es keine anderen Gründe gibt, den (reduzierten) Shutdown NICHT zuzulassen. Einmal chmod +x 99_suspoutp.sh nicht vergessen - fertig.
Ich las für die Verwendung von vdr-plugin-suspendoutput auch andere Varianten:
-> Ändern der /etc/vdr/remote.conf, um den LIRC.Power zu deaktivieren (Auskommentieren "# " der Zeile "LIRC.Power KEY_POWER2"), die PowerOnOff-Taste in der remote.conf stattdessen auf eine Usertaste umleiten (Zeile anpassen "LIRC.User9 KEY_POWER2") und Ändern der /etc/vdr/keymacros.conf um die PowerOnOff-Taste der FB nun als User-Taste den Pluginaufruf machen zu lassen (neue Zeile "User9 @suspendoutput"). Zum Wiedereinschalten muss man dann wohl eine andere Taste der FB verwenden.
-> Per irexec mit svdrpsend das suspendoutput steuern, die genauen Details habe ich noch nicht verstanden, man müsste wohl in /etc eine Datei "lircrc.conf" anlegen und darin einen Eintrag machen, dessen Syntax ich erst nachlesen müsste.
-> Nicht mit svdrpsend arbiten, sondern z.B. etwas wie "vdr-dbus-send /Remote remote.CallPlugin string:'suspendoutput -M -T -l'" machen, wobei ich hier gar nicht glaube dass das in der MLD gehen kann, denn erstens wird das Plugin ja ohnehin beim VDR Start mit aufgerufen, und zweitens müsste man dem Plugin ja trotzdem noch sagen, dass es auch "suspenden" soll, was über die Aufrufparameter, abgesehen vom Timeout, ja gar nicht möglich ist.
Dies alles erscheint mir im Vergleich zu der Variante mit einem zusätzlichen Shutdown-Skript als zu komplex. Das Pimpen des Shutdown-Mechanismus passiert an nur einer einzigen Stelle und hat ja zusätzlich den Vorteil, dass z.B. Aufwachen wegen EPG-Scans u.ä. von alleine nach dem zugehörigen VDR-Timeout wieder "suspendiert", ohne dass ich die FB benutzen muss. In meinem speziellen Fall mit ZWEI DVB-Empfängern (Sundtek SatHD Dual) würde ich allerdings nicht erwarten, dass die LiveTV-Ausgabe für EPG-Scans aufwacht, weil ja der "andere" Receiver dafür frei ist.
Wie dem auch sei, "meine" Variante, das suspendutput einzusetzen funktioniert leider nicht. Die gesamte "Mechanik" funktioniert durchaus, aber in dem Moment wo suspendoutput seinen Job macht stirbt ein anderer Prozess, was zum Neustart des VDR und somit zum Wieder-Erscheinen der Live-TV Ausgabe führt. Jetzt kommen zwei Listings: Zuerst eine Ausgabe von svdrpsend, die zeigen soll, dass alle Komponenten "bereit" sind und die Steuerung erstmal funktioniert. Danach (nächster Post...) ein relativ endloses SystemLog. Zu Letzterem ein paar Anmerkungen:
a) von unten nach oben lesen, bitte.
b) nur die untersten 17 Zeilen protokollieren den suspend-Vorgang.
c) danach (11 Zeilen) stirbt der softhddevice Dekoder, vermutlich weil ihm sein Ausgabekanal abhanden kam?
d) somit endet auch der VDR, die MLD merkt das und startet ihn neu. Dieser Neustart ist der gesamte Rest des Logs.
Sieht so aus als funktioniere das suspendoutput Plugin nicht in der aktuellen MLD-Umgebung. Jemand eine Idee?
Nun sollte ich zunächst mal des suspendoutput Plugin zum Funktionieren bekommen, das wäre ein Anfang. Mein eigentlicher Wunsch ist aber, mehr als nur suspendoutput zu haben. Das frühere "suspend" Paket der MLD wäre schon schick. Ich stelle mir vor, dass nicht nur das Live-Bild, sondern auch der VDR inklusiv DVB-Tuner abgeschaltet wird. Dass der VDR nun keine EPG-Scans machen kann ist halt so, beim "echten" Suspend ist das ja nicht anders. Dann muss freilich "jemand anderes" bei Timer-Events und beim Wiedereinschalten auf der Fernbedienung den VDR neustarten - den Rest macht der dann ja wieder selber. Den VDR im shutdown Script zu beenden sollte einfach sein (PID ermitteln und Prozess killen), also müsste man der MLD nur noch beibringen, den VDR erst bei Timer-Events bzw. FB-Taste wieder zu starten. Zugegeben: Das ist eine RPi(5)-spezifische Idee, für diese und ähnliche Plattformen aber jedenfalls allgemein brauchbar. Wenn es funktioniert.
Schon wieder...: Jemand eine Idee?
Der längliche Text unten läuft auf folgende zwei Fragen hinaus:
a) Bei mir versagt das suspendoutput Plugin - was könnte mein Fehler sein?
b) Eigentlich hätte ich lieber das suspend Plugin, das es in der MLD5 gab - lässt sich das machen?
Ich bin mit meiner MLD Standalone auf dem RPi5 "fast" fertig: WLAN läuft, USB-SSD läuft als /data, Fernbedienung geht über GPIO, Sundtek Dual-SatHD läuft, VDR läuft inklusive Live-TV und Aufnahmen. Auf der ToDo-Liste steht nun noch "Suspend".
Der RPi5 ist für mich ja bloß eine Art SetTopBox mit Aufnahmegerät. Die darf gerne nur dann in Betrieb sein wenn sie muss, also wenn ich Live-TV schaue oder eine Aufnahme zu machen ist. Anders als richtige Computer kann der Raspi kein Suspend(toX) und also auch kein WakeOnRTC, was die normale Methode der MLD wäre, um so ein intelligentes Suspend zu realisieren. Ich habe bisher drei Methoden gesehen, um dem RPi sowas beizubringen:
a) Vollständiges Herunterfahren und WakeOnTimer mittels einer externen Hardware, die vor dem Shutdown eingestellt wird und dann per Schaltkontakt den RPi-Reset auslöst.
b) WakeOnTimerOrRemote(OrLAN) mittels MLD Paket "suspend", das im Modus "suspend.soft" nur den VDR (inklusive DVB-Receivern) beendet und von der MLD per RTC/Cronjob oder per Fernbedienung etc. nach Bedarf/Wunsch wieder gestartet wird.
c) VDR-Plugin "suspendoutput", das die "PowerOff"-Funktion (FB-Taste POWER2 bzw. Timeouts des VDR) auf das Abschalten der TV-Ausgabe reduziert.
Variante a) liefert den größten Energiespareffekt, erfordert aber eine komplexe Einrichtung und eben auch zusätzliche Hardware - soweit ich mitbekommen habe gibt es eine Raspi-Pico Lösung. Damit Aufwecken per Fernbedienung geht braucht der Pico einen eigenen FB-Receiver. Das ist mir, ehrlich gesagt, zu viel Aufwand.
Variante b) hat es wohl bis MLD5.1 noch gegeben, das Paket "suspend" gibt es aber für die MLD6(.5) nicht mehr. Schade, denn sowas wäre mein Favorit gewesen, zumal es komfortabel per WebIF eingerichtet werden konnte.
Variante c) liefert den geringsten Energiespareffekt, das Paket "vdr-plugin-suspendoutput" ist verfügbar, man muss es aber im Terminal mittels Eingriffen in die Systemdateien erziehen, wenn es auf die POWER2 Taste hören soll. Ich möchte deshalb dieses (oder ein ähnliches - siehe b) Plugin nicht mittels seiner Aufrufparameter (MLD/Einstellungen/TV/PluginAufrufArgumente) automatisch agieren lassen (z.B. 't 120' [min]), sondern es in die Abläufe integrieren, die VDR/MLD ohnehin macht. VDR hat ja bereits Timeout-Funktionen und reagiert auch auf die POWER2-Taste.
Soweit ich verstehen konnte wird der VDR bei Timeouts sowie beim Betätigen der PowerOnOff-Taste z.B. auf der Fernbedienung das Skript ausführen, welches in der /etc/vdr/conf.d/00_vdr.conf unter "--shutdown=..." angegeben ist, standardmäßig also /usr/share/vdr/shutdown.sh. Dieses Shellskript prüft, ob der Shutdown denn "genehm" ist und bereitet normalerweise den WakeOnRTC vor. Teil der Prüfung auf Erlaubnis zum Shutdown ist die Ausführung aller Shellskripte im Unterordner (/usr/share/vdr/)shutdown.d/, in alphanumerischer Reihenfolge. Sobald eines davon nicht "errorlevel 0" zurückgibt bricht der Vorgang ab. Man kann also den Shutdown beliebig manipulieren und abbrechen, indem man hier ein weiteres Skript erstellt, welches beliebige Aktionen ausführt und am Ende ein errorlevel > 0 zurückgibt.
Ich habe hier also folgendes Skript "99_suspoutp.sh" hinzugefügt:
Code: [Select]
#!/bin/sh
# After all other preparations were done WITHOUT aborting the shutdown,
# we now replace the actual shutdown with something else..., thereafter
# an exit 1 makes the master shutdown script cancel i.e. the shutdown
# process WILL abort.
svdrpsend localhost 6419 'plug suspendoutput SUSPEND'
echo " did a suspendoutput - do not shutdown."
exit 1Der Name beginnt mit "99_", damit es als Letztes aufgerufen wird, also nur dann wenn es keine anderen Gründe gibt, den (reduzierten) Shutdown NICHT zuzulassen. Einmal chmod +x 99_suspoutp.sh nicht vergessen - fertig.
Ich las für die Verwendung von vdr-plugin-suspendoutput auch andere Varianten:
-> Ändern der /etc/vdr/remote.conf, um den LIRC.Power zu deaktivieren (Auskommentieren "# " der Zeile "LIRC.Power KEY_POWER2"), die PowerOnOff-Taste in der remote.conf stattdessen auf eine Usertaste umleiten (Zeile anpassen "LIRC.User9 KEY_POWER2") und Ändern der /etc/vdr/keymacros.conf um die PowerOnOff-Taste der FB nun als User-Taste den Pluginaufruf machen zu lassen (neue Zeile "User9 @suspendoutput"). Zum Wiedereinschalten muss man dann wohl eine andere Taste der FB verwenden.
-> Per irexec mit svdrpsend das suspendoutput steuern, die genauen Details habe ich noch nicht verstanden, man müsste wohl in /etc eine Datei "lircrc.conf" anlegen und darin einen Eintrag machen, dessen Syntax ich erst nachlesen müsste.
-> Nicht mit svdrpsend arbiten, sondern z.B. etwas wie "vdr-dbus-send /Remote remote.CallPlugin string:'suspendoutput -M -T -l'" machen, wobei ich hier gar nicht glaube dass das in der MLD gehen kann, denn erstens wird das Plugin ja ohnehin beim VDR Start mit aufgerufen, und zweitens müsste man dem Plugin ja trotzdem noch sagen, dass es auch "suspenden" soll, was über die Aufrufparameter, abgesehen vom Timeout, ja gar nicht möglich ist.
Dies alles erscheint mir im Vergleich zu der Variante mit einem zusätzlichen Shutdown-Skript als zu komplex. Das Pimpen des Shutdown-Mechanismus passiert an nur einer einzigen Stelle und hat ja zusätzlich den Vorteil, dass z.B. Aufwachen wegen EPG-Scans u.ä. von alleine nach dem zugehörigen VDR-Timeout wieder "suspendiert", ohne dass ich die FB benutzen muss. In meinem speziellen Fall mit ZWEI DVB-Empfängern (Sundtek SatHD Dual) würde ich allerdings nicht erwarten, dass die LiveTV-Ausgabe für EPG-Scans aufwacht, weil ja der "andere" Receiver dafür frei ist.
Wie dem auch sei, "meine" Variante, das suspendutput einzusetzen funktioniert leider nicht. Die gesamte "Mechanik" funktioniert durchaus, aber in dem Moment wo suspendoutput seinen Job macht stirbt ein anderer Prozess, was zum Neustart des VDR und somit zum Wieder-Erscheinen der Live-TV Ausgabe führt. Jetzt kommen zwei Listings: Zuerst eine Ausgabe von svdrpsend, die zeigen soll, dass alle Komponenten "bereit" sind und die Steuerung erstmal funktioniert. Danach (nächster Post...) ein relativ endloses SystemLog. Zu Letzterem ein paar Anmerkungen:
a) von unten nach oben lesen, bitte.
b) nur die untersten 17 Zeilen protokollieren den suspend-Vorgang.
c) danach (11 Zeilen) stirbt der softhddevice Dekoder, vermutlich weil ihm sein Ausgabekanal abhanden kam?
d) somit endet auch der VDR, die MLD merkt das und startet ihn neu. Dieser Neustart ist der gesamte Rest des Logs.
Sieht so aus als funktioniere das suspendoutput Plugin nicht in der aktuellen MLD-Umgebung. Jemand eine Idee?
Code: [Select]
root@MLD:~# svdrpsend localhost 6419 'help'
220 MLD SVDRP VideoDiskRecorder 2.8.2; Thu Jul 16 22:09:33 2026; UTF-8
214-This is VDR version 2.8.2
214-Topics:
214- AUDI CHAN CLRE CONN DELC
214- DELR DELT EDIT GRAB HELP
214- HITK LSTC LSTD LSTE LSTR
214- LSTT MESG MODC MODT MOVC
214- MOVR NEWC NEWT NEXT PING
214- PLAY PLUG POLL PRIM PUTE
214- REMO SCAN STAT UPDT UPDR
214- VOLU QUIT
214-Plugin softhddevice-drm-gles v1.6.7 - HD Device mit software und GPU Unterstützung
214- PLAY DETA ATTA STAT PION
214- PIOF PITO PIPU PIPD PIPC
214- PIPS PIIP
214-Plugin suspendoutput v2.1.0 - Suspend output
214- SUSPEND RESUME STATUS
214-To report bugs in the implementation send email to
214- vdr-bugs@tvdr.de
214 End of HELP info
221 MLD closing connection
root@MLD:~#Nun sollte ich zunächst mal des suspendoutput Plugin zum Funktionieren bekommen, das wäre ein Anfang. Mein eigentlicher Wunsch ist aber, mehr als nur suspendoutput zu haben. Das frühere "suspend" Paket der MLD wäre schon schick. Ich stelle mir vor, dass nicht nur das Live-Bild, sondern auch der VDR inklusiv DVB-Tuner abgeschaltet wird. Dass der VDR nun keine EPG-Scans machen kann ist halt so, beim "echten" Suspend ist das ja nicht anders. Dann muss freilich "jemand anderes" bei Timer-Events und beim Wiedereinschalten auf der Fernbedienung den VDR neustarten - den Rest macht der dann ja wieder selber. Den VDR im shutdown Script zu beenden sollte einfach sein (PID ermitteln und Prozess killen), also müsste man der MLD nur noch beibringen, den VDR erst bei Timer-Events bzw. FB-Taste wieder zu starten. Zugegeben: Das ist eine RPi(5)-spezifische Idee, für diese und ähnliche Plattformen aber jedenfalls allgemein brauchbar. Wenn es funktioniert.
Schon wieder...: Jemand eine Idee?

Recent Posts