[ANNOUNCE] VDR developer version 1.7.23

  • Na im Treiber wird das niemand lösen.


    Wie UFO schon sagte: der Treiber und die hardware können ja beides. Und Treiber Optionen sind nur ein *anderer* Hack.

  • Moin!


    Es gibt auch Nutzer, die keinen Bedarf an Device-Hotplug haben, aber dennoch so eine DVB-Karte betreiben wollen.


    Das ist ja auch nur ein Beispiel. Ich selbst habe auch eine Cine-C/T, die ich nur als DVB-C betreiben möchte (unabhängig von dynamite).
    Ich wollte damit nur ausdrücken, dass ich mich schon eine Weile mit dem Thema beschäftige.


    Lars.

  • Neben Device Hotplug kann dynamite auch udev, IMHO etwas was direkt in den VDR gehören würde. Wenn VDR sogar schon sysfs verwendet, dann ist das nach meinem Verständnis bereits ein Teil von udev - warum nicht gleich "richtig" ?


    Bezgl der Deliverysystems (auch wenn ich nicht betroffen bin):
    Möglichkeit 1: Im Kernel: Begrenzung über Moduloptionen
    Möglichkeit 2: Aus dem Userspace, dann muss der Treiber/die DVB API einen Befehl bereitstellen der die Deliverysystems aus dem Userspace setzen/begrenzen kann. Dann kann man das aus der Applikation oder über udev/einen udev-Helper handhaben.


    Für mich klingt 2.) besser. Was richtig schlecht wäre, dem VDR sagen zu müssen was wo geht (und jeder anderen Anwendung)

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • Moin!


    Mit "das Übel bei der Wurzel packen" meinte ich natürlich, es im Treiber zu lösen, nicht in den Applikationen rumzufrickeln ;)


    Naja, da treffen jetzt zwei Philosophien aufeinander. :)


    Der Treiber meldet die Fähigkeiten der Hardware.
    Der User möchte aber nur einen Teil davon (mit einer Applikation) nutzen.


    Wo sollen wir das konfigurieren?
    Es ist möglich, den Treiber zu manipulieren, damit er nur beschränkte Fähigkeiten meldet. Aber was passiert, wenn man mehrere Karten des gleichen Treibers hat, die unterschiedlich genutzt werden sollen?
    Es ist möglich, die Anwendung zu manipulieren, damit sie nur das nutzt, was der Nutzer will. Problem ist hierbei evtl. eine Zuordnung zu den Device-Nummern, weil die sich ändern können, wenn die Treiber in einer anderen Reihenfolge geladen werden. Da kommt meiner Meinung nach udev ins Spiel. Um udev aber besser nutzen zu können, wären Seriennummern bei den Geräteeigenschaften sehr vorteilhaft. Denn es ist immer wieder ein Problem, die Karten eindeutig zu identifizieren.
    Bei der Cine-C/T geht es z.B. nicht über den PCI-Slot (udev: KERNELS), weil da zwei Karten in einem Slot stecken.


    Oder wir bauen eine Schicht dazwischen, die von allen Anwendungen genutzt wird/werden muss, und da wird konfiguriert. Diese gibt es aber noch gar nicht.


    Ich bin für Vorschläge offen... :)


    Lars.

  • Moin!


    Möglichkeit 2: Aus dem Userspace, dann muss der Treiber/die DVB API einen Befehl bereitstellen der die Deliverysystems aus dem Userspace setzen/begrenzen kann. Dann kann man das aus der Applikation oder über udev/einen udev-Helper handhaben.


    Für mich klingt 2.) besser. Was richtig schlecht wäre, dem VDR sagen zu müssen was wo geht (und jeder anderen Anwendung)


    Dann müsste man also zwei ioctls unterscheiden: Was die Hardware kann (das neue ENUM_DELSYS) und was der Nutzer von der Hardware nutzen will (gibt's noch nicht). Bleibt aber immer noch, das irgendwo definiert werden muss, was der Nutzer will... :)
    Ich wäre auch glücklich über eine anwendungsunabhängig Lösung...


    Lars.

  • Es gibt eine einfache vorläufige Lösung.


    VDR muß einfach auch die anderen Eingänge verwenden, wenn der erste Fehlschlägt. Dann dauert das Umschalten etwas länger, aber die Aufnahmen werden sicherer.
    (Wackelkontakt oder Katze)


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch


  • Dann müsste man also zwei ioctls unterscheiden: Was die Hardware kann (das neue ENUM_DELSYS) und was der Nutzer von der Hardware nutzen will (gibt's noch nicht).


    Die Anwendung interessiert nur, was der Nutzer will. IMHO wäre es also durchaus legitim, wenn eine Karte, die eigentlich auch DVB-C kann, dies auf Wunsch des Nutzers nicht an die Anwendungen kundtut.


    Zitat


    Bleibt aber immer noch, das irgendwo definiert werden muss, was der Nutzer will... :)
    Ich wäre auch glücklich über eine anwendungsunabhängig Lösung...


    Schafft man es von udev her eine Info zum Treiber (Kernel-Modul) zu übermitteln? Mit einer passend gebauten udev-Rule sollte man das Device eindeutig separieren können.

  • Hi,


    so etwas gehört nicht in den Treiber. Eine Funktion, um dem Treiber zu sagen, er soll ab jetzt Delivery System XYZ unterdrücken, ist doch völlig unsinnig!


    Etwas wie eine libdvb wäre eine universelle Möglichkeit, aber so etwas gibt es halt derzeit nicht.


    Eine einfache Lösung wäre ein Plugin, das - wie Klaus oben erwähnte - die Funktion über cDeviceHook::DeviceProvidesTransponder realisiert.


    Imho eine elegante Lösung. Und wer die Funktion nicht benötigt, lädt einfach das Plugin nicht.


    CU
    Oliver

  • Moin!


    VDR muß einfach auch die anderen Eingänge verwenden, wenn der erste Fehlschlägt. Dann dauert das Umschalten etwas länger, aber die Aufnahmen werden sicherer.
    (Wackelkontakt oder Katze)


    Ein Fallback auf ein anderes Device im Falle eines "broken video stream" ist sicherlich ein tolles Feature, hat aber nichts mit diesem Problem zu tun, denke ich.


    Lars.

  • Moin!


    Die Anwendung interessiert nur, was der Nutzer will. IMHO wäre es also durchaus legitim, wenn eine Karte, die eigentlich auch DVB-C kann, dies auf Wunsch des Nutzers nicht an die Anwendungen kundtut.


    Ich denke nicht, dass ein Treiber nur das melden sollte, was den Nutzer interessiert. Mal übertrieben gesagt: Soll der Treiber für den SATA-Controller nur die Partitionen melden, die den Nutzer interessieren? Klingt irgendwie falsch. Außerdem weiß der Treiber das überhaupt nicht.


    Schafft man es von udev her eine Info zum Treiber (Kernel-Modul) zu übermitteln? Mit einer passend gebauten udev-Rule sollte man das Device eindeutig separieren können.


    Andersherum: der Treiber kann Variablen an udev geben, so dass Anwendungen diese auswerten können. Siehe "udevadm info --query=all --name=/dev/dvb/adapter0/frontend0".
    Bei USB-Geräten gibt's z.B. häufig eine Seriennummer, weil die meistens in USB-Geräten zur Verfügung gestellt wird. Das ist bei PCI(e)-Karten meistens nicht der Fall. Das ist ja das Problem.


    Lars.

  • Moin!


    Eine einfache Lösung wäre ein Plugin, das - wie Klaus oben erwähnte - die Funktion über cDeviceHook::DeviceProvidesTransponder realisiert.
    Imho eine elegante Lösung. Und wer die Funktion nicht benötigt, lädt einfach das Plugin nicht.


    Ja, das ist für den vdr eine gute Lösung.


    Es bleibt aber das Problem, wie man die Karten am besten eindeutig identifizieren kann. Da komme ich wieder auf meine Bitte zurück, zumindest bei den Cine-Karten irgendwie die TAP-Nummer o.ä. per udev an den Userspace zu melden.
    Ansonsten kann nur die Adapternummer als Kriterium genommen werden, und die ist nicht eindeutig, falls die Treiber mal in einer anderen Reihenfolge (oder auch während des Betriebs neu-)geladen werden.


    Lars.

  • Ich sehe nicht, daß das nicht in den Treiber gehört, da die Hardware unter bestimmten Umständen ja augenscheinlich ein bestimmtes Delivery System nicht unterstützen kann. DVB-S/S2 ist kein guter Vergleich, da an einem Kabel die verschiedenen Satelliten hängen können. Sei's drum - zum einen bin ich nicht betroffen, zum anderen bin ich nicht involviert - ich hätte halt gerne eine Lösung gesehen die für die Betroffenen funktioniert ohne jetzt einen großen Aufriß darüber zu machen.

    VDR User: 87 - LaScala LC14B - LG/Phillipps 6,4" VGA Display | Asrock H61/U3S3 | G630T | 1x 16GB Mobi Mtron 3035 1x WD 750GB 2,5" |1x L4m DVB-S2 Version 5.4

  • Es gibt eine einfache vorläufige Lösung.


    VDR muß einfach auch die anderen Eingänge verwenden, wenn der erste Fehlschlägt. Dann dauert das Umschalten etwas länger, aber die Aufnahmen werden sicherer.
    (Wackelkontakt oder Katze)


    Johns


    Die Idee finde ich sehr gut, VDR startet eine Aufnahme quasi auf allen freien Devices, und überprüft dann nach den bisherigen Kriterien nach einander ab bis ein gültiger Stream gefunden wurde, das geht in die Datei, der Rest wird wieder frei gegeben.

  • Etwas wie eine libdvb wäre eine universelle Möglichkeit, aber so etwas gibt es halt derzeit nicht.


    Eine einfache Lösung wäre ein Plugin, das - wie Klaus oben erwähnte - die Funktion über cDeviceHook::DeviceProvidesTransponder realisiert.


    Ja, das ist für den vdr eine gute Lösung.


    Ja, eine "libdvb" wäre eine gute Idee, aber dabei wird es wohl auch erstmal bleiben, es sei denn man löst sich IMHO von "linuxtv". Aber diesen Part könnte "vdr-plugin-dynamite" für und als Teil des VDR übernehmen. Auch wenn es leider wieder die typischen Unken-Rufe gibt, nicht jeder braucht dynamische Devices, würde es niemanden zwingen die dynamischen Fähigkeiten nutzen zu müssen, wenn im Gegenzug die DVB Devices so zur Verfügung stehen, wie man sie im VDR benötigt und zwar für alle Nutzer.


    Ich sehe nicht, daß das nicht in den Treiber gehört,


    Das sehe ich auch so, die möglichen Fähigkeiten eines Geräts müssen vom Treiber gemeldet werden bzw. abfragbar sein. Wie man diese Fähigkeiten nutzt, muss von der Applikation entschieden werden bzw. konfiguriert werden.


    Regards
    fnu

    HowTo: APT pinning

  • "Doppelte Verneinung" im Zitat übersehen? ;)


    Hmm, nein, ich für mich habe die Aussage so verstanden, aber wohl zu kurz zitiert ;)


    Regards
    fnu

    HowTo: APT pinning


  • Kannst du bitte mal folgenden Patch testen?



    Klaus

  • kls

    Kannst du bitte mal folgenden Patch testen?


    Diff
    --- ./device.c  2011/10/16 14:36:43     2.44
    +++ ./device.c  2012/01/17 15:28:57
    @@ -531,6 +531,14 @@
       return false;
     }
    
    
    +void cDevice::DelLivePids(void)
    +{

    Ich habe den Patch getestet.


    Das sichtbare Verhalten des VDR unterscheidet sich jetzt nicht mehr vom ursprünglichen LNB-Sharing-Patch.
    Beim Start einer Aufnahme mit anderer Polarisation oder Band gibt es jetzt eine entsprechende Meldung und nach kurzer Zeit schaltet er dann die Live-Darstellung auf den Aufnahmekanal um.


    Aus meiner Sicht kann damit das Thema Device-Bonding erst einmal als OK betrachtet werden, weitere Fehlermeldungen natürlich nicht ausgeschlossen .


    Vielen Dank nochmal für die schnellen Lösungen.


    Gruß
    Karl

    VDR 2.6.6: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 6TB HD, GT1030, Fedora 39 Kernel 6.8 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

Jetzt mitmachen!

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