DVB-Treiber werden bei Emergency Exit nicht neu geladen

  • Hallo, ist mir schon seit langer Zeit ein Dorn im Auge; jetzt möchte ich da rangehen.


    Da das Restarten der Treiber der Sinn des Neustarts ist, sollte das doch eigentlich an der passenden Stelle eingepflegt sein.



    Alle Dateien in /etc/init/ gehören root, sollte also nicht daran liegen ?



    Das Script ist auch da, und funktioniert

    Code
    ls -ls `which dvb-driver`
    4 -rwxr-xr-x 1 root root 3426 Feb  7 22:13 /usr/bin/dvb-driver


    Wo ist der Haken ? Komme momentan nicht weiter....

  • Der Upstart-Job feuert soweit ich das sehe nur beim Resume aus dem Suspend oder wenn udevtrigger gelaufen ist. Wenn man mit Upstart auf einen bestimmten Exit-Code reagieren will, kann man das wie in http://upstart.ubuntu.com/cook…th-a-particular-exit-code beschrieben machen.


    Nachdem der Unterstützungzeitraum für Ubuntu 14.04 bereits abgelaufen ist, können für yaVDR 0.6.1 keine neuen Pakete mehr gebaut werden.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hi Seahawk,

    dann bin ich bei meiner Suche bestimt an der falschen Stelle gelandet.

    Welche Scripte werden denn beim Notausstieg abgearbeitet?

    Das ist doch nicht von KS hart verdrahtet, oder :)

  • Code
    cat /usr/share/yavdr/events/actions/restart-vdr
    #!/bin/bash
    
    stop vdr
    if [ ! "$(dbget vdr.backend)" = "disabled" ]; then
      sleep 4
      start vdr


    Sollte in der Abfrage nicht ein dvb-driver --unload; dvb-driber --load Abhilfe schaffen?


    Und da fehlt doch ein "fi" !!!


    Oder bin ich wieder (immer noch) falsch ???

    :wand

  • Der VDR solte sich bei einem Notausstieg mit dem Exit-Status 1 beenden und auf dieses Event kann man dann mit einem Upstart-Job reagieren. Außerdem muss man dafür sorgen, dass der VDR nicht von seiner eigenen Upstart-Unit automatisch wieder gestartet wird.

    Code: /etc/init/reload-dvb-driver.conf
    description     "Reload driver on emergency exit"
    start on stopped vdr EXIT_STATUS=1
    task
    script 
        dvb-driver --unload
        dvb-driver --load
        initctl start --no-wait vdr
    end script

    Das könnte aber potentiell zu Problemen führen, wenn beim (ent)laden der DVB-Treiber etwas schief geht.


    Und beim Upstart-Job für den VDR muss man dann noch verhindern, dass der VDR beim einem Exit-Status von 1 automatisch neu gestartet wird, also die Bedingung in der Zeile 10 entsprechend erweitern:

    Code: /etc/init/vdr.conf
    start on ( \
              runlevel [2345] \
           or stopped vdr RESULT=failed EXIT_SIGNAL=?* \
           or stopped vdr RESULT=failed EXIT_STATUS!=[012] \
           or resume \
             )

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    2 Mal editiert, zuletzt von seahawk1986 () aus folgendem Grund: Syntaxfehler behoben

  • Sollte in der Abfrage nicht ein dvb-driver --unload; dvb-driber --load Abhilfe schaffen?

    Die Action wird vom Webfrontend ausgelöst, wenn man dort auf den entsprechende Butten klickt.


    Und da fehlt doch ein "fi" !!!

    Zumindest im Git ist es seit 2011 vorhanden: https://github.com/yavdr/yavdr…vents/actions/restart-vdr

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • (Hat sich überschnitten)


    Nachtrag: fi ist da, verrutscht nur wegen fehlendem, abschließenden CR vor den Prompt.

    Einmal editiert, zuletzt von rdnzl ()

  • Also ist der Notausstieg bis heute eigentlich ein unausgebrütetes Ei gewesen?

    Da nie 100% realisiert.


    Vielen Dank für Deine Hilfe, muß mal pausieren.

  • Der VDR macht da nicht mehr als sich mit dem Exit-Code 1 zu beenden - und ein Entladen und erneutes Laden der DVB-Treiber bringt nur etwas, wenn das Problem nicht an anderer Stelle liegt (z.B. Empfangsstörungen durch Unwetter, Frequenzdrift eines alten LNB, Überhitzung usw.).

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • 1. Versuch:

    Code
    init-checkconf /etc/init/reload-dvb-driver.conf 
    ERROR: File /etc/init/reload-dvb-driver.conf: syntax invalid:
    init:reload-dvb-driver.conf:4: Unknown stanza
  • Ah, das start am Anfang von Zeile 4 muss weg.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Syntaktisch ist das so OK, aber: der Job wird nicht gestartet!


    Code
    initctl list|grep dvb
    dvb-driver start/running
    reload-dvb-driver stop/waiting

    (wer benutzt eigentlich wann /etc/init/dvb-driver.conf ? Ein Treiberrestart findet ja z.Zt. noch nicht statt, die Treiber werden doch vom BS geladen [start on (resume or stopped udevtrigger)]


    Im syslog keine dvb-Treiver-Meldungen. Hatte auch mal einen logger "Hallo" eingebaut, kommt nicht.

    Auch kein Log im /var/log/upstart.


    Code
    Manuell gestartet, während vdr lief:
    
    Jul 25 20:56:06 ubuntu logger: hallo before
    Jul 25 20:56:30 ubuntu vdr: [4734] frontend 1/0 timed out while tuning to channel 226 (n-tv (C)), tp 130
    Jul 25 20:56:31 ubuntu vdr: [4738] frontend 2/0 timed out while tuning to channel 227 (Sky Atlantic HD (C)), tp 154
    Jul 25 20:56:47 ubuntu vdr: [5548] epg data writer thread started (pid=4704, tid=5548, prio=low)
    Jul 25 20:56:49 ubuntu vdr: [5548] epg data writer thread ended (pid=4704, tid=5548)
    Jul 25 20:56:51 ubuntu vdr: [4734] frontend 1/0 timed out while tuning to channel 101 (Sky Sport Bundesliga 1 HD (C)), tp 162
    Jul 25 20:57:14 ubuntu logger: hallo after
    Jul 25 20:57:14 ubuntu kernel: [ 8026.464714] init: reload-dvb-driver main process (5294) terminated with status 1

    Dann kommt Log

    Code
    sudo cat /var/log/upstart/reload-dvb-driver.log 
    Device is in use. Giving up.
    initctl: invalid option: --no-wait
    Try `initctl --help' for more information



    Code
    initctl show-config |grep -A2 dvb
    dvb-driver
      start on (resume or stopped udevtrigger)
      stop on suspend
    --
    reload-dvb-driver
      start on stopped vdr EXIT_STATUS=1
    alsa-restore


    Habe den Eindruck, der Job muß irgendwie in upstart registriert werden, da er hier

    Code
    initctl check-config |grep reload
    reload-keytables

    nicht auftaucht. Auch ein System-Neustart brachte keine Besserung.


    :(

  • Habe ein wenig weiter getestet, und des öfteren


    initctl reload-configuration aufgerufen:

    Aber bei show-config alles OK. (Das Pasten dieser Seiten ist mir zu schwierig)


    What happened in paradise ?

  • Die fehlenden Ereignisse sollten eigentlich keine Rolle Spielen, die stecken in Upstart-Jobs aus nicht installierten Paketen, den Actions, die über das Webfrontend ausgelöst werden können oder udev-Regeln, alles Orte von initctl nicht nachsehen kann.


    Ein Fehler in der reload-dvb-driver.conf war noch in der Reihenfolge der Argumente, es muss initctl start --no-wait vdr statt initctl --no-wait start vdr heißen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Thanks für die Info.

    Hatte einfach das --no-wait rausgeschmissen bei meinen Tests. Was aber auch nicht DEN ERFOLG brachte...


    Drehe das dann noch mal, erhoffe mir aber keine Änderung, da der Job definitiv nicht automatisch gestartet wird.


    Es muß doch an der Startbedingung, oder ff liegen.

  • Fuck, ich hab's: Ich teste die ganze Zeit mit Neustart übers Menü; da ist der Exit_Code natürlich ein anderer als beim VDSB.


    Wie kann man den Treibrestart auch bei gesteuertem Neustart durchführen?

  • Hast du denn Probleme mit den DVB-Treibern? Würde mich einfach mal generell interessieren. Bei VDR4Arch haben wir garnicht erst einen Mechanismus eingebaut um DVB-Treiber neu zu laden. Ich habe das immer für ein Relikt aus dem Zeitalter der Full-Featured-Karten gehalten.

  • Wie kann man den Treibrestart auch bei gesteuertem Neustart durchführen?

    Am besten den Menüpunkt durch einen eigenen Befehl ersetzen, der den VDR stoppen lässt, dann die Treiber neu lädt und danach den VDR wieder startet. Wenn man in den Upstart-Jobs den VDR wieder starten lässt, wenn er mit dem Exit-Code 0 beendet wurde, fängt man sich beim Shutdown eine unschöne Endlosschleife ein.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Hast du denn Probleme mit den DVB-Treibern? Würde mich einfach mal generell interessieren. Bei VDR4Arch haben wir garnicht erst einen Mechanismus eingebaut um DVB-Treiber neu zu laden. Ich habe das immer für ein Relikt aus dem Zeitalter der Full-Featured-Karten gehalten.


    Mit Sat-Karten und Sommergewittern/Starkregen, ist ein Treiberrestart leider manchmal unumgänglich, da sich die Karten bei solchen Empfangslagen dann oft verabschieden.

  • Am besten den Menüpunkt durch einen eigenen Befehl ersetzen, der den VDR stoppen lässt, dann die Treiber neu lädt und danach den VDR wieder startet. Wenn man in den Upstart-Jobs den VDR wieder starten lässt, wenn er mit dem Exit-Code 0 beendet wurde, fängt man sich beim Shutdown eine unschöne Endlosschleife ein.

    Kann mich noch an Früher erinnern, als ich noch distributionslos war, da wurde das Treibern im Startscrpt erledigt. Jetzt weiß ich, warum!

    (Ansatzweise)

Jetzt mitmachen!

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