Tutorial AutoSuspend/Standby TVHeadend unter OMV 3.X ohne AutoShutdown PLUGIN

  • Damit TVHeadend nach einem Standby wieder funktioniert, müssen Module entladen und nach dem Wecken wieder geladen werden.
    In einigen Tutorials ist auch immer die Rede vom "autoshutdown plugin" in OMV 3.x, dass aber leider bei fast allen nicht funktioniert in Verbindung mit dem
    Script von "CvH" das ich hier vorstelle. Nach langen 3 Wochen habe ich nun endlich die Lösung für mich gefunden, die euch nun jetzt teilen und vorstellen möchte.


    Im 1. Teil erkläre ich euch wir ihr die Treiber sauber entlädt und wieder ladet von euren TVKarten oder TV-USB Sticks. Dies ist Vorrausetzung damit TVHeadend
    nach einem "hibernate/suspend" wieder funktioniert.


    Im 2. Teil zeige ich euch ein Script, das eure NAS ohne Probleme in den "hibernate/suspend" fährt und per WOL wieder aufweckt. Dazu kann dieses Script
    auch mit programmierten Aufnahmen umgehen. Heißt, es fährt hoch bei Aufnahme und wieder runter wenn sie beendet ist.
    Dieses Script ersetzt so mit 2 (Autoshutdown plugin und eins für Aufnahmen)


    Teil 1


    Entladen und beladen der Treiber mit Hilfe eines Scripts vor dem Suspend in
    " /etc/systemd/system/dvb-sleep.service"


    Mein Beispiel-Script sieht wie folgt aus:
    ________________________________________________________________________________________________________________________

    Spoiler anzeigen


    Description=Restart tvheadend and dvb
    Before=sleep.target
    StopWhenUnneeded=yes
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/bin/systemctl stop tvheadend.service ; /sbin/modprobe -r cx23885 m88ds3103 si2168 altera_ci si2157 cx2341x
    ExecStop=/sbin/modprobe cx23885 m88ds3103 si2168 altera_ci si2157 cx2341x ; /bin/systemctl start tvheadend.service
    [Install]
    WantedBy=sleep.target


    __________________________________________________________________________________________________________________________


    Kurze Erklärung zum Script was es macht:


    Mit  /bin/systemctl stop tvheadend  stoppen wir TVHeadend, damit danach ohne Probleme das Modul entladet werden kann.


    Danach wird mit " modprobe -r cx23885 m88ds3103 si2168 altera_ci si2157 cx2341x " das entladen.

    Für die TV Karte Hauppauge Quad Tuner die ich benutze sind es folgende Module:

    cx23885 m88ds3103 si2168 altera_ci si2157 cx2341x


    __________________________________________________________________________________________________________________________


    Die richtigen Module für eure TVKarte/TV-USB Stick finden!!


    Welche Module bei euch geladen sind und welche entladet werden sollen müsst ihr selbst herausfinden.
    Das mach ihr so:


    Logt euch mit dem Programm "putty" per ssh auf eure NAS ein.
    Mit  #lsmod   werden alle eure geladenen Module angezeigt.


    Welches Modul für eure TVKarte/USB Stick zuständig ist, könnt ihr bei Google nachschauen.
    In meinem Fall war es eine Hauppauge Quad DVB-C Karte. Eingabe in Google: "Hauppauge Quad DVB-C Linux Modul/e" und mit ein bisschen lesen habe ich sie dann gefunden, die mit dem Ergebnis von  #lsmod  übereinstimmten.


    Hierbei müsst ihr einfach probieren, probieren und nochmals probieren. Bei manchen reicht ein und bei anderen mehrere Module zu entladen.
    Vor allem bei mehreren Modulen ist auch die Reihenfolge wichtig. Also einfach ausprobieren.


    Wichtig bei diesen Schritten ist, dass ihr so vorgeht im Terminal über putty:

     #systemctl stop tvheadend  (TVHeadend wird gestoppt)
     #modprobe -r "Modul Modul Modul" (Modul(e) wird entladen)
     #systemctl start tvheadend  (TVHeadend wird gestartet)


    Prüft dann im TVHeadend WebGUI nach jedem entladen ob alles noch geht (TV abspielen bzw. Adapter noch aktiv).
    Wenn ja, war es entweder das falsche Modul oder bei mehreren die falsche Reihenfolge.
    Dann stoppt ihr wieder tvheadend und ladet nochmals die Module wie folgt, so dass alles wieder auf Anfang gestellt wird.


     #modprobe -a "Modul Modul Modul"  (Modul(e) wird geladen)
     #systemctl start tvheadend   (TVHeadend wird gestartet)


    Diesen Prozess müsst ihr ggf. mehrmals machen bis ihr eure richtigen Module gefunden habt.
    ________________________________________________________________________________________________________________________________


    Wenn ihr soweit alle Module habt erstellen wir das Script über das Terminal wie folgt:


     #sudo nano /etc/systemd/system/dvb-sleep.service  (Editor geht auf und gebt dort euer Script ein)


    Beispiel-Script:


    Spoiler anzeigen


    Description=Restart tvheadend and dvb
    Before=sleep.target
    StopWhenUnneeded=yes
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/bin/systemctl stop tvheadend.service ; /sbin/modprobe -r cx23885
    ExecStop=/sbin/modprobe cx23885 ; /bin/systemctl start tvheadend.service
    [Install]
    WantedBy=sleep.target


    Bitte Beispiel-Script mit euren Modulen anpassen.


    Danach mit STRG-Shift-O speichern und ENTER. Danach Editor mit STRG-Shift-X schließen


    Dann Script ausführbar auf den Server machen mit:


     #sudo systemctl enable dvb-sleep.service 


    Ende Teil 1

  • Teil 2


    Das Autoshutdown-Script mit Aufwachfunktion für TVHeadend ab Debian 8 mit systemd


    Ich verwende dazu dieses Script, das frei zur Verfügung steht und von "git-developer" geschrieben wurde.


    Download:
    https://github.com/git-developer/…hive/master.zip


    1. Ladet euch das Script herunter und entpackt das Zip File


    2. Bearbeiten des Files "autosuspend" im Ordner "etc" mit einem Editor eurer Wahl.

    Hier verändert ihr z.B. ob die NAS in 'suspend', 'hibernate', 'hybrid-sleep', 'poweroff' fährt oder welche IP Adressen angepingt werden sollen damit sie nicht einfach runterfährt usw.......


    Im File selber wird dies nochmals genau auf Englisch beschrieben. Wer kein Englisch kann, Google hilft :)


    WICHTIG!!!


    Für Aufnahmen bei TVHeadend ist euer Benutzername und Passwort einzutragen im autosuspend file. Damit ist dann möglich das, dass Script bei programmierten Sendungen hochfährt, aufnimmt und wieder runterfährt nach Abschluss der Aufnahme.


    3. Die Files in den Ordnern "etc" und "usr/local/sbin" kopiert ihr dann exakt in die gleichen Ordner von OMV über ssh mit z.B. filezilla


    4. Damit das Script auch funktioniert braucht ihr noch die Tools "curl, XMLStarlet, jq, bc"
    Diese installiert ihr mit folgendem Befehl im Terminal


     $ sudo apt-get install util-linux net-tools curl xmlstarlet jq bc 


    5. Damit das Script auch immer wieder prüft ob es runterfahren soll oder nicht müsst ihr noch einen "CronJob" einfügen. Das macht ihr mit diesem Befehl:

     echo "*/15 * * * * root /usr/local/sbin/autosuspend.sh" | sudo tee -a /etc/crontab 

    Die "15" steht für Minuten. Beim ersten Start braucht es aber gesamt 30 Minuten. Beim ersten mal prüft es nach 15 Minuten und fährt dann 15 Minuten später herunter.
    Die Anzahl der Minuten könnt ihr hier frei wählen!!!!!


    Wer dies nochmals auf Englisch nachlesen möchte, hier die Beschreibung:


    https://github.com/git-developer/autosuspend


    Danke an CvH für deine Einführungen in TVH und Linux, Git-developer und allen anderen die ich evtl. vergessen haben :)


    P.S. Wenn jemand Verbesserungsvorschläge hat oder es euch gefällt, hinterlasst ein Kommentar/Like.
    Vielleicht schafft das Tutorial es in die HowTos von KodiNerds?? :)

  • hi,

    danke für das Tutorial. Ich habe allerdings auch direkt ne Frage, oder 2 :
    Wie werden denn wichtige clients eingetragen:


    Code
    # Names or IP for computers that shall prevent the suspend
    # We ping these computers in the list to check whether they are active.
    CLIENTS=''

    einfach mit Komma getrennt ?

    Und muss man noch was machen, nachdem man alles an den richtigen Ort kopiert hat, damit das auch alles startet ?

    Und wie oft wird eigentlich geprüft ob herunter gefahren werden kann ?

    Mein System:

    Spoiler anzeigen


    Server

    Wohnzimmer

    im Haus verteilt


    Cooler Master Elite 110
    ASRock J3455-ITX
    16GB DDR3L-1333
    3x WD green 3TB
    1x 60GB BOOT-SSD
    OMV 7.x
    TVHeadend 4.3.xx

    Phillips PUS8546
    Kodi 21 Beta (maven)

    diverse
    Raspberry Pi
    LibreElec 9.x


    Einmal editiert, zuletzt von Grabber66 (9. November 2017 um 11:07)

  • Hey Grabber,

    also die IP Adressen oder auch Namen fügst du einfach so ein ohne Komma aber mit Leerzeichen:

    CLIENTS=''192.182.192.182 182.198.191.181. usw...."


    Und muss man noch was machen, nachdem man alles an den richtigen Ort kopiert hat, damit das auch alles startet ?

    Und wie oft wird eigentlich geprüft ob herunter gefahren werden kann ?


    Danke für den Hinweis. Habe im 2. Teil den Punkt 5 vergessen wo ihr noch nen CronJob einfügen müsst.
    Den setzt du nach dem du alles an die Orte kopiert hast.

    Die Minuten im Cronjob kann man frei wählen.

  • Hey,

    und danke für die Anleitung :) ich bin auf OMV + TVHeadend umgestiegen (hatte vorher Ubuntu + VDR) hab die Schritte abgearbeitet, aber bei mir klappt das nicht ...
    --> also er geht schlafen (suspend) und wacht auch wieder auf, allerding wenn er aufwacht findet er meist meine dvb (dvbsky S952) da hilft dann meistens ein Service tvheadend restart und dann geht alles --> ich bekomm auch immer nach dem aufwachen die Meldung:

    [errorbox]
    -:2.1: Start tag expected, '<' not found


    ^
    -:2.1: Start tag expected, '<' not found


    ^
    /usr/local/sbin/autosuspend.tvheadend-functions: Zeile 54: [: : Ganzzahliger Ausdruck erwartet.
    -:2.1: Start tag expected, '<' not found
    [/errorbox]


    in spalte 54 steht

    Code: autosuspend.tvheadend-functions
    subscription_count=$(echo $tvheadend_status | xmlstarlet sel -t -v "currentload/subscriptions") 
    if [ "$subscription_count" -gt 0 ] ; then 
    if [ "${TVHEADEND_CONSIDER_EPGGRABBING:-yes}" = 'yes' ] ; then 
    logit "Tvheadend has $subscription_count subscriptions, auto suspend terminated" 
     return 1 
    else


    hat jemand eine Idee woran das liegt?

  • => Nachtrag :)

    ich hab nochmal nachgeschaut der TVheadend startet nicht und das Modul muss ich noch laden ein

    modprobe cx23885
    und ein
    service tvheadend start

    reicht das er läuft....

    das liegt doch an der dvb-sleep.service wie wenn diese beim start nicht ausgeführt würde...

  • Hallo AET-Kodi,

    Probiere mal diese Module zu entladen und beladen wieder. Diese sind für "DVBSKY". Das cx23855 lass mal weg. Das war das Modul für meine Karte und nur ein Beispiel!!!

    1. smipcie
    2. m88rs6000t
    3. m88ds3103
    4. dvb_core

    Müsstest das dann so in dein script einbauen:

    ExecStart=/bin/systemctl stop tvheadend.service ; /sbin/modprobe -r smipcie m88rs6000t m88ds3103 dvb_core
    ExecStop=/sbin/modprobe smipcie m88rs6000t m88ds3103 dvb_core ; /bin/systemctl start tvheadend.service

  • Wenn es manuell geht, dann führst du das script als "ADMIN" aus.
    Dann würde ich mal noch deine Rechte überprüfen für das script.

    Ich hab auch ewig damals gebraucht, bis es flüssig lief.
    Es kann an vielen Dingen liegen.

    Lese am besten nochmals alle Schritte durch und überprüfe alles.

    Und noch ein Tipp, bei google wie auch hier findest du nützliche Tipps. Nicht aufgeben und immer wieder probieren.

    Bei mir hat es damals 2 -3 Wochen gedauert bis alles mal lief.

    Deshalb auch das TUTORIAL hier um es für alle bereitzustellen, aber auch zu zeigen was für Arbeit dahinter steckt.

  • Also wollte mal kurz berichten :) und evtl. auch mal eure Meinung wissen,
    bei mir klappt das mit dem Script *hipiii*

    => aber ich musste ein zweites "System .Service" anlegen --> dvb-awake.Service

    Code: dvb-awake.Service
    Description=Restart tvheadend and dvb
    After=sleep.target
     StopWhenUnneeded=yes
     [Service]
     Type=oneshot
     RemainAfterExit=yes
     ExecSop=/bin/systemctl stop tvheadend.service ; /sbin/modprobe -r cx23885
     ExecStart=/sbin/modprobe cx23885 ; /bin/systemctl start tvheadend.service
     [Install]
     WantedBy=sleep.target


    => und schon geht es ....
    aber mein Problem ist warum .... ?? => keine Ahnung, kann mir das einer erklären, den wirklich sauber ist das nicht...


  • Ja zwei scripte und es funktioniert :)


    Bash: dvb-awake.service
    1.Description=Restart tvheadend and dvb
    2.After=sleep.target
    3. StopWhenUnneeded=yes
    4. [Service]
    5. Type=oneshot
    6. RemainAfterExit=yes
    7. ExecStop=/bin/systemctl stop tvheadend.service ; /sbin/modprobe -r cx23885
    8. ExecStart=/sbin/modprobe cx23885 ; /bin/systemctl start tvheadend.service
    9. [Install]
    10. WantedBy=sleep.target

    und

    Bash: dvb-sleep.service
    Description=Restart tvheadend and dvb
     Before=sleep.target
     StopWhenUnneeded=yes
     [Service]
     Type=oneshot
     RemainAfterExit=yes
     ExecStart=/bin/systemctl stop tvheadend.service ; /sbin/modprobe -r cx23885
     ExecStop=/sbin/modprobe cx23885 ; /bin/systemctl start tvheadend.service
     [Install]
     WantedBy=sleep.target


    => so klappt das, dachte schon liegt evtl. dran das mein System von einer SSD startet und irgendwas zu schnell ist...

  • @hackbird

    Danke für deinen Beitrag hier. Auch ich hatte das Problem, dass das Script von @CvH in Verbindung mit OMV v4 und dem Autoshutdown-Plugin nicht funktionierte. Egal was ich auch machte, nach einem Ruhezustand wurde die Sat-Karte nicht erkannt (die Module wurden nicht geladen).

    Heute bin ich per Zufall auf diesen Beitrag gestoßen und habe ich festgestellt, dass diese Änderungen nicht im autoshutdown.service (/lib/systemd/system/autoshutdown.service) eingetragen sind. Ich habe die entsprechenden Änderungen gemacht, das Service-Script von @CvH eingetragen und siehe da, nach dem "Suspend" war die Karte wieder da.
    Anscheinend wurden die Commits von dort nicht in das ASP eingepflegt, wodurch all die Probleme entstanden sind.
    Im Service-Script habe ich auch noch von sleep.target auf suspend.target umgestellt, da ich unter OMV den "Suspend-Mode" (Unterbrechung) verwende.

    HTPC: 2x Apple TV 4K, 64GB, iOS (immer aktuell), MrMC-App (immer aktuell), gesteuert über Harmony 650 oder Apple Remote

    OMV-Server-HW: Fujitsu D3417-B2 (Intel-LAN), Intel Xeon E3-1245 v6 Kaby Lake (4x3.70GHz), 16GB-Ram ECC, 1x512GB SSD Samsung 850 Pro (30GB system, 4GB swap, rest - Daten), 1x 10TB WD Red Pro, 1x 3TB WD Red (basic setup) - Digibit R1 Sat-IP-Server mit SatIP-Axe-Firmware

    OMV-Server-SW: Debian 9 mit backports-Kernel, OMV v4, AutoShutdown-Plugin, Virtualbox (mit DSM 6.2.x), Docker: PlexMediaServer, TVH-Server v4.2.x (stable) und weitere

  • @Huberer


    Heute bin ich per Zufall auf diesen Beitrag gestoßen und habe ich festgestellt, dass diese Änderungen nicht im autoshutdown.service (/lib/systemd/system/autoshutdown.service) eingetragen sind. Ich habe die entsprechenden Änderungen gemacht, das Service-Script von @CvH eingetragen und siehe da, nach dem "Suspend" war die Karte wieder da.


    Ich habe ja immernoch omv3. Was genau hast du denn da eingetragen? Komm da gerade nicht mit? :D

  • Genau diese Änderungen die du im Link auf Github siehst. Mit dem "alten" Autoshutdown-Plugin (ASP) wurden die unter /etc/systemd/system erstellten Scripte nicht ausgeführt. Deswegen hatten ja viele Probleme mit TVHeadend unter OMV iVm. ASP nach dem Aufwachen.
    Mittlerweile hat sich das ganze erübrigt, da das ASP-Plugin aktualisiert wurde und alle Änderungen auf Github dort eingepflegt worden sind. Somit dürfte alles wieder einwandfrei funktionieren. Ich habe auf Github auch deine Frage (zu der es keine Antwort gab) gesehen, wo du genau das von mir beschriebene Problem geschildert hast. Und genau mit dem Update hat sich das ganze jetzt erübrigt.

    HTPC: 2x Apple TV 4K, 64GB, iOS (immer aktuell), MrMC-App (immer aktuell), gesteuert über Harmony 650 oder Apple Remote

    OMV-Server-HW: Fujitsu D3417-B2 (Intel-LAN), Intel Xeon E3-1245 v6 Kaby Lake (4x3.70GHz), 16GB-Ram ECC, 1x512GB SSD Samsung 850 Pro (30GB system, 4GB swap, rest - Daten), 1x 10TB WD Red Pro, 1x 3TB WD Red (basic setup) - Digibit R1 Sat-IP-Server mit SatIP-Axe-Firmware

    OMV-Server-SW: Debian 9 mit backports-Kernel, OMV v4, AutoShutdown-Plugin, Virtualbox (mit DSM 6.2.x), Docker: PlexMediaServer, TVH-Server v4.2.x (stable) und weitere

  • Ja tue das. Nachdem ich mein System mittels ASP nur schlafen lege, also "Suspend"-Modus verwende, habe ich beim dvbsky-restart Script die beiden Einträge mit "sleep.target" durch "suspend.target" ersetzt. Dadurch läuft es einwandfrei.

    HTPC: 2x Apple TV 4K, 64GB, iOS (immer aktuell), MrMC-App (immer aktuell), gesteuert über Harmony 650 oder Apple Remote

    OMV-Server-HW: Fujitsu D3417-B2 (Intel-LAN), Intel Xeon E3-1245 v6 Kaby Lake (4x3.70GHz), 16GB-Ram ECC, 1x512GB SSD Samsung 850 Pro (30GB system, 4GB swap, rest - Daten), 1x 10TB WD Red Pro, 1x 3TB WD Red (basic setup) - Digibit R1 Sat-IP-Server mit SatIP-Axe-Firmware

    OMV-Server-SW: Debian 9 mit backports-Kernel, OMV v4, AutoShutdown-Plugin, Virtualbox (mit DSM 6.2.x), Docker: PlexMediaServer, TVH-Server v4.2.x (stable) und weitere

Jetzt mitmachen!

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