[0.4pre alpha] DVB-frontend tauschen via upstart-script?

  • Liebes yavdr-Team,


    ich versuche hier gerade, halbwegs selbständig ein upstart-script zu entwerfen, das nach Bereitstehen der DVB-frontends, aber vor dem Start des VDR die DVB-Frontends durchtauscht - also


    Code
    script
    mv /dev/dvb/adapter0/frontend0 /dev/dvb/adapter0/frontend0.disabled
    mv /dev/dvb/adataper0/frontend1 /dev/dvb/adapter0/frontend0
    mv /dev/dvb/adapter1/frontend0 /dev/dvb/adapter1/frontend0.disabled
     mv /dev/dvb/adataper1/frontend1 /dev/dvb/adapter1/frontend0
    end script


    Momentan habe ich das - mehr schlecht als recht - als pre-start script in vdr.conf stehen.
    Das bringt mir aber den meisterhaft austarierten Startprozess durcheinander (hat zB. zur Folge, dass plötzlich USB-Geräte einschließlich des Imon nur ganz verzögert laden).


    Außerdem scheint mir das der gesamten yavdr-Systematik zu widersprechen, die doch darauf setzt, dass dynamite dem VDR ein fertig geladenes DVB-Frontend unterschiebt.


    Kann ich dem VDR irgendwie verbieten, das DVB-Frontend anzusteuern (damit es nicht auf DVB-C lockt), um dann während des Starts die Frontends durchzutauschen und dann dynamite ranzulassen?


    Am elegantesten wäre natürlich, die Auswahl komplett dynamite zu überlassen und dem plugin zu erklären: Lass von dem DVB-C die Finger und richte gleich das DVB-T ein. Da gibt es ja die hier beschriebene udev-Regel, aber wie biege ich die von "ignoriere Adapter" auf "ignoriere Frontend" um?


    Hat jemand Erfahrungen mit der Problematik? Kann angesichts der Verbreitung der DuoFlex-Karte ja so selten nicht sein.


    (Master-Workaround: DVB-C bestellen. Aber ich will das zum Laufen kriegen!)


    Herzlichen Dank für alle Hilfe.


    Und übrigens: Liebe Leute, nachdem ich mich jetzt langsam in das upstart-System des yavdr einlese, merke ich einmal mehr, was für ein Hammerprojekt Ihr hier losgetreten habt und pflegt. Respekt, Respekt. Ich vermisse immer noch einen Donate-Button auf der Homepage.


    L.B.Q.R.

    yaVDR 0.4pre alpha - (VDR 1.7.18, Kernel 2.6.38-11-generic)
    ASRock A330ION 4GB DDR2 - OCZ Agility SSD als / - WD Green Caviar 1TB & 2 TB xfs - Terratec Cinergy 2400i (instabil mit handgebautem Treiber, ausgebaut) - DD DuoFlex CT mit T (läuft noch nicht) - Antec Remote Fusion mit Soundgraph Imon 15c2:0038 - Harmony One (läuft ootb als Soundgraph Imon programmiert)

    Einmal editiert, zuletzt von Lebochequirit ()

  • Moin!


    Umbenennen ist mit dynamite nicht nötig. Wenn du die "frontend0"s der Adapter 0 und 1 nicht benutzen willst, dann müsste folgende udev-Regel helfen:

    Code
    ACTION=="add", SUBSYSTEM=="dvb", ENV{DVB_DEVICE_TYPE}=="frontend", KERNEL=="dvb[01].frontend0", ENV{dynamite_attach}="no"


    (in der PN hab ich das glaub ich umgedreht verstanden...)


    Voraussetzung hierfür ist, dass es keine anderen DVB-Adapter gibt, die die Nummerierung der DD-Adapter durcheinander bringt.


    Lars.

  • Moin!


    Noch eine Nachfrage: Gibt es zum frontend1 eigentlich auch ein demux1, dvr1 usw.? Wenn nein, dann musst du das Modul so konfigurieren, dass für jedes Frontend ein Adapter angelegt wird. vdr geht momentan davon aus, dass, wenn es frontend1 benutzen soll, dann auch ein passendes demux1 usw. mit gleicher Frontend-Nr. vorhanden ist.


    Und dann muss die udev-Regel natürlich angepasst werden und die entsprechenden Adapter "ausgeblendet" werden:

    Code
    ACTION=="add", SUBSYSTEM=="dvb", ENV{DVB_DEVICE_TYPE}=="frontend", KERNEL=="dvb[02].frontend0", ENV{dynamite_attach}="no"


    Denn dann würde es /dev/dvb/adapter[0123]/frontend0 geben, wovon du Adapter 0 und 2 für DVB-C nicht benutzen möchtest.


    Lars.

  • Moin Lars,

    Zitat

    Gibt es zum frontend1 eigentlich auch ein demux1, dvr1 usw.?

    *kotz, das habe ich auch gerade gesehen. Leider gibt es keine demux1 etc.:


    Deshalb funktioniert UFOs Workaround mit dem Umkopieren der frontends, während das bloße Abwählen des frontend0 via udev nicht funktioniert - dann lädt dynamite ein frontend1 ohne demux1 und dvr1.


    Wie ich dem Treiber sage, dass er für jedes Frontend einen eigenen Adapter anlegt, habe ich noch nicht richtig raus.
    Die Option one_adapter=0 verhindert bei mir nur, dass alle vier Frontends in einen Adapter gepackt werden, kann aber keine vier Adapter für vier Frontends anlegen.


    Einen Ansatz habe ich hier gefunden:

    Code
    SUBSYSTEM=="dvb", ATTRS{device}=="0x0374", PROGRAM="/bin/sh -c ' K=%k; K=$${K#dvb}; A=$(echo -n $K | tail -c -1); A=$(echo 100+$A | bc); N=$${K#*.}; N=$(echo -n $N | head -c -1); printf dvb/adapter%%s/%%s0 $A $N; exit 0'", SYMLINK+="%c"


    Eine UDEV-Regel, mit der für jedes Frontend ein Adapter angelegt werden soll. Ich werde das ausprobieren.
    Evtl. kann man die so modifizieren, dass sie gleich nach den gewünschten Frontends filtert - oder man übergibt deren output an eine weitere udev-Regel, die dann dynamite auswertet.


    Ansonsten habe ich hier einen X-Post-Thread angelegt, weil die Problematik wohl nicht nur yaVDR-spezifisch ist.
    Ich denke, wir können die Diskussion dorthin verlegen.


    L.B.Q.R.

    yaVDR 0.4pre alpha - (VDR 1.7.18, Kernel 2.6.38-11-generic)
    ASRock A330ION 4GB DDR2 - OCZ Agility SSD als / - WD Green Caviar 1TB & 2 TB xfs - Terratec Cinergy 2400i (instabil mit handgebautem Treiber, ausgebaut) - DD DuoFlex CT mit T (läuft noch nicht) - Antec Remote Fusion mit Soundgraph Imon 15c2:0038 - Harmony One (läuft ootb als Soundgraph Imon programmiert)

  • Schaumal meine udev Regel im anderen Thread, mit nem halbwegs aktuellen Kernel gehts einfacher (Das unübersichtliche PROGRAMM brauchts nicht mehr).


    Im Prinzip brauchts nur ein "wenn frontent0 dann NAME:=frontend.disabled" und als zweites "wenn frontend1 dann NAME:=frontend0" (Der Doppelpunkt vor dem = ist der Trick, lässt man den weg wird einem das später wieder von anderen udev Regeln überschrieben). Dann ist das frontend0 umbenamt und frontend1 heisst frontend0. Das soll doch im Ergebnis rauskommen, oder?


    cu

  • Auch nicht schlecht.


    Meine Lösung macht dagegen dem Begriff "Workaround" alle Ehre :)

    yaVDR 0.4pre alpha - (VDR 1.7.18, Kernel 2.6.38-11-generic)
    ASRock A330ION 4GB DDR2 - OCZ Agility SSD als / - WD Green Caviar 1TB & 2 TB xfs - Terratec Cinergy 2400i (instabil mit handgebautem Treiber, ausgebaut) - DD DuoFlex CT mit T (läuft noch nicht) - Antec Remote Fusion mit Soundgraph Imon 15c2:0038 - Harmony One (läuft ootb als Soundgraph Imon programmiert)

  • ...das muss ich mir nochmal in Ruhe anschauen.


    Für den Kernel sind das wohl nur zwei Geräte.



    Wie verteile ich die jetzt auf zwei Adapter?

    yaVDR 0.4pre alpha - (VDR 1.7.18, Kernel 2.6.38-11-generic)
    ASRock A330ION 4GB DDR2 - OCZ Agility SSD als / - WD Green Caviar 1TB & 2 TB xfs - Terratec Cinergy 2400i (instabil mit handgebautem Treiber, ausgebaut) - DD DuoFlex CT mit T (läuft noch nicht) - Antec Remote Fusion mit Soundgraph Imon 15c2:0038 - Harmony One (läuft ootb als Soundgraph Imon programmiert)

Jetzt mitmachen!

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