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
    1. ls -ls `which dvb-driver`
    2. 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
    1. cat /usr/share/yavdr/events/actions/restart-vdr
    2. #!/bin/bash
    3. stop vdr
    4. if [ ! "$(dbget vdr.backend)" = "disabled" ]; then
    5. sleep 4
    6. 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
    1. description "Reload driver on emergency exit"
    2. start on stopped vdr EXIT_STATUS=1
    3. task
    4. script
    5. dvb-driver --unload
    6. dvb-driver --load
    7. initctl start --no-wait vdr
    8. 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
    1. start on ( \
    2. runlevel [2345] \
    3. or stopped vdr RESULT=failed EXIT_SIGNAL=?* \
    4. or stopped vdr RESULT=failed EXIT_STATUS!=[012] \
    5. or resume \
    6. )

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    The post was edited 2 times, last by seahawk1986: 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.


  • 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
    1. init-checkconf /etc/init/reload-dvb-driver.conf
    2. ERROR: File /etc/init/reload-dvb-driver.conf: syntax invalid:
    3. 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
    1. initctl list|grep dvb
    2. dvb-driver start/running
    3. 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
    1. Manuell gestartet, während vdr lief:
    2. Jul 25 20:56:06 ubuntu logger: hallo before
    3. Jul 25 20:56:30 ubuntu vdr: [4734] frontend 1/0 timed out while tuning to channel 226 (n-tv (C)), tp 130
    4. Jul 25 20:56:31 ubuntu vdr: [4738] frontend 2/0 timed out while tuning to channel 227 (Sky Atlantic HD (C)), tp 154
    5. Jul 25 20:56:47 ubuntu vdr: [5548] epg data writer thread started (pid=4704, tid=5548, prio=low)
    6. Jul 25 20:56:49 ubuntu vdr: [5548] epg data writer thread ended (pid=4704, tid=5548)
    7. 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
    8. Jul 25 20:57:14 ubuntu logger: hallo after
    9. Jul 25 20:57:14 ubuntu kernel: [ 8026.464714] init: reload-dvb-driver main process (5294) terminated with status 1

    Dann kommt Log

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



    Code
    1. initctl show-config |grep -A2 dvb
    2. dvb-driver
    3. start on (resume or stopped udevtrigger)
    4. stop on suspend
    5. --
    6. reload-dvb-driver
    7. start on stopped vdr EXIT_STATUS=1
    8. alsa-restore


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

    Code
    1. initctl check-config |grep reload
    2. 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)