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

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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

    Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von hackbird ()

  • 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:
    github.com/git-developer/autosuspend/archive/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:


    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?? :-)

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von hackbird ()

  • hi,

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


    Quellcode

    1. # Names or IP for computers that shall prevent the suspend
    2. # We ping these computers in the list to check whether they are active.
    3. 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 Q1900-ITX
    4GB DDR3L-1333
    3x WD green 3TB
    1x 60GB BOOT-SSD
    OMV 3.x; TVHeadend 4.2.xx
    Silverstone ML02MX
    Asrock J3455-ITX
    30GB Kingston SSDNow
    4GB DDR3-1600 DIMM
    LibreElec 8.2
    diverse
    Raspberry Pi2
    LibreElec 8.2


    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Grabber66 ()

  • 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...."


    Grabber66 schrieb:

    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:


    -: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




    in spalte 54 steht

    Quellcode: autosuspend.tvheadend-functions

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

    hat jemand eine Idee woran das liegt?
  • 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

    Quellcode: 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. ExecSop=/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 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 :)



    Shell-Script: dvb-awake.service

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


    und

    Shell-Script: dvb-sleep.service

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



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

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von AET_Kodi ()

  • @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: Nvidia Shield TV 2015, 16GB, mit Full-Android und gerootet, Kodi 17.6 und Titan Skin, PlexKodiConnect, Steuerung Logitech Harmony 650

    SERVER: MoBo Fujitus D3417-B2, Intel Xeon E3-1245v6 (Kaby Lake), 16GB-Ram ECC, 1x500GB SSD Samsung 850 Pro (sda1 - 30GB system, 8GB Swap, sda5 sonstige Daten), 4x3TB WD Red's Snapraid + mergerfs, OMV 4.1.x mit Backport-Kernel, 2x DVBSky S952 v3, AutoShutdown-Plugin, Docker: TVHeadend (v4.3.x) + PlexMediaServer (Plex Pass) + JDownloader; Virtualbox: Xpenology DSM 6.1 (immer aktuell - sofern Bootloader es zulässt)
  • @Huberer


    Huberer schrieb:

    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: Nvidia Shield TV 2015, 16GB, mit Full-Android und gerootet, Kodi 17.6 und Titan Skin, PlexKodiConnect, Steuerung Logitech Harmony 650

    SERVER: MoBo Fujitus D3417-B2, Intel Xeon E3-1245v6 (Kaby Lake), 16GB-Ram ECC, 1x500GB SSD Samsung 850 Pro (sda1 - 30GB system, 8GB Swap, sda5 sonstige Daten), 4x3TB WD Red's Snapraid + mergerfs, OMV 4.1.x mit Backport-Kernel, 2x DVBSky S952 v3, AutoShutdown-Plugin, Docker: TVHeadend (v4.3.x) + PlexMediaServer (Plex Pass) + JDownloader; Virtualbox: Xpenology DSM 6.1 (immer aktuell - sofern Bootloader es zulässt)
  • 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: Nvidia Shield TV 2015, 16GB, mit Full-Android und gerootet, Kodi 17.6 und Titan Skin, PlexKodiConnect, Steuerung Logitech Harmony 650

    SERVER: MoBo Fujitus D3417-B2, Intel Xeon E3-1245v6 (Kaby Lake), 16GB-Ram ECC, 1x500GB SSD Samsung 850 Pro (sda1 - 30GB system, 8GB Swap, sda5 sonstige Daten), 4x3TB WD Red's Snapraid + mergerfs, OMV 4.1.x mit Backport-Kernel, 2x DVBSky S952 v3, AutoShutdown-Plugin, Docker: TVHeadend (v4.3.x) + PlexMediaServer (Plex Pass) + JDownloader; Virtualbox: Xpenology DSM 6.1 (immer aktuell - sofern Bootloader es zulässt)