Problem mit TBS 6590 Frontends

  • Ein VDR-Benutzer hat mich kontaktiert, weil es Probleme mit seiner DVB-Karte (TBS 6590) bzw. dem Treiber gibt. Nach einigen Untersuchungen sieht die Sache so aus, dass der Treiber wohl zwei Frontends für die Karte anlegt (sie kann DVB-T/C und DVB-S)...


    Code
    1. Aug 20 16:32:09 streamy4 vdr: [2660] probing /dev/dvb/adapter0/frontend0
    2. Aug 20 16:32:09 streamy4 vdr: [2660] creating cDvbDevice
    3. Aug 20 16:32:09 streamy4 vdr: [2660] new device number 1
    4. Aug 20 16:32:10 streamy4 vdr: [2660] DVB API version is 0x050B (VDR was built with 0x050A)
    5. Aug 20 16:32:10 streamy4 vdr: [2660] frontend 0/0 provides DVB-T,DVB-T2,DVB-C,ISDBT,DVB-C with QPSK,QAM16,QAM32,QAM64,QAM128,QAM256 ("TurboSight TBS 6590 DVB-S/S2 + 2xCI ")
    6. Aug 20 16:32:10 streamy4 vdr: [2660] probing /dev/dvb/adapter0/frontend1
    7. Aug 20 16:32:10 streamy4 vdr: [2660] creating cDvbDevice
    8. Aug 20 16:32:10 streamy4 vdr: [2660] new device number 2
    9. Aug 20 16:32:10 streamy4 vdr: [2660] frontend 0/1 provides DVB-S,DVB-S2,DSS with QPSK,QAM16,QAM32,QAM64,QAM128,QAM256 ("Silicon Labs Si2183")

    ...aber nur ein ca, demux, dvr bzw. net:


    Die Symlinks hat er gemäß Anleitung im Handbuch der TBS 6590 angelegt, aber das ist ja eigentlich Quatsch.

    Offensichtlich hat die Karte zwar zwei Frontends, es kann aber immer nur eines davon zu einer Zeit tatsächlich benutzt werden. Die restlichen Devices sind dann immer ca0, demux0, dvr0 bzw. net0.


    In VDR wird davon ausgegangen, dass es in so einem Fall nur ein Frontend gibt und das Übertragungssystem mit DTV_SET_DELIVERY_SYSTEM ausgewählt wird.

    Welches wäre denn die korrekte Vorgehensweise im oben geschilderten Fall? Zu dem Zeitpunkt, wo adapter0/frontend0 gecheckt wird ist ja noch nicht bekannt, dass adapter0/frontend1 eigentlich nur ein weiteres Übertragungssystem von adapter0 ist, und kein unabhängiges Device.


    Hat jemand schon Erfahrung mit einer solchen Konstellation?


    Klaus

  • Das ist doch eine Multi-Standard-Tuner-Karte, d.h. jedes Frontend kann "DVB-S2/S, DVB-T2/T, DVB-C2/C, DVB-S2X und ISDB-T".

    Aber hier wird doch frontend 0/0 nur als "DVB-T,DVB-T2,DVB-C,ISDBT,DVB-C" gefunden und frontend 0/1 nur als "DVB-S,DVB-S2,DSS", wenn ich das richtig sehe.

    Da ist doch irgendwas mit dem Treiber falsch.


    Oder hat das was mit den beiden CI-slots zu tun? Hat er nur einen der CI-Slots belegt! Die können übrigens kein CI+


    Hier gibt es übrigens einen Testbericht zu der Karte, wo auch einiges zu den CI-Slots steht: "A Valuable Review on TBS6590 card from Satelescu"

    Welchen Treiber hat er denn verwendet? den "alten" closed source Treiber oder den "neueren" open source Treiber?

    Ich vermute er muss den "neueren" open-source-Treiber von hier nehmen: Open source code um alle Features der Karte zu haben.

    Da steht auch genau, wie der Treiber installiert werden muss.


    Ansonsten kann er sich auch an den deutschen Vertrieb von TBS wenden, die können vielleicht auch bei Softwareproblemen helfen. TBS GmbH Shop


    Paul

  • Das ist so ein ähnliches Problem wie beim Astrometa DVB-T/T2/C USB Stick. Hier werden sowohl für DVB-T (RTL2832) als auch für DVB-T2 (MN88473) Frontends angelegt.

    Um DVB-T2 mit VDR verwenden zu können muß dieser zu frontend0 umbenannt werden.


    Gelöst: Problem mit hybrid DVB-USB-Stick mit zwei frontends

    In der TBS-Anleitung sehe ich auf Seite16 dass eigentlich 2 Adapter angelegt werden.

    https://www.tbsiptv.com/downlo…90/tbs6590_user_guide.pdf


    Wenn es die beiden Adapter tatsächlich gibt könnte man probeweise unter /dev/dvb/adapater0 das frontend1 löschen und in /dev/dvb/adapter1 das frontend1 zu frontend0 umbenennen.


    Helmut

  • Ich weiß nicht, ob für die TBS Karte schon eine Lösung gefunden wurde, aber da mir das "verbiegen" oder entfernen von DVB Frontends mit seltsamen udev-Regeln o.ä. nie gefallen hat, habe ich nun einen Patch erstellt, mit dem VDR das zu verwendente Frontend aus einer Konfigurationsdatei erfährt.


    In der Datei "frontends.conf" wird zuvor von VDR für jeden Adapter der mehr als 1 Fronend hat eine Config-Zeile erstellt in der dann händisch das Frontend mit dem gewünschten Tuner oder Demodulator angepasst wird.

    Damit für fehlende demuxX, dvrX, caX devices keine Symlinks erstellt werden müssen, wird in DVbopen() nun auch ein Fallback mit "0" versucht.


    Getestet habe ich es nur mit meinem USB AstrometaT2, es sollte aber auch über mehrere Adapter und mehreren gleichen DVB-Karten funktionieren - z.B. mit der hier besprochenen TBS6590.


    Hier meine Konfiguration für den einen Adapter:


    Helmut

  • Hallo


    I'm the user Klaus is mentioning above

    I've tried the above patch (3) and at first glance

    everythings is working like a charm !!! (I'm continuing test & let you know)


    Viellen Danke !

    JP


    ps:

    adapter0 is connected to DVBS antenna while Adapter1 is connected to DVBT antenna


    frontend.conf is then

    1,[6590:1/1],<[0]TurboSight TBS 6590 DVB-S/S2 + 2xCI [1]Silicon Labs Si2183>

    0,[6590:1/2],<[0]TurboSight TBS 6590 DVB-S/S2 + 2xCI [1]Silicon Labs Si2183>

  • Das ist aber hier nur ein Workaround, oder?

    Das eigentliche Problem sollte wohl im Treiber gefixt werden.

    Zumindest habe ich von TBS Technology erfahren, dass wohl demnächst ein gefixter Treiber erscheinen soll.


    Klaus

  • Mein Astrometa funktioniert jetzt:


    Code
    1. Sep 10 12:46:25 gentoo vdr[10453]: [10453] Adapter3 : frontend1 selected by config
    2. Sep 10 12:46:25 gentoo vdr[10453]: [10453] Adapter3/Frontend1 : selecting dvr0
    3. Sep 10 12:46:25 gentoo vdr[10453]: [10453] Adapter3/Frontend1 : selecting demux0
    4. Sep 10 12:46:25 gentoo kernel: mn88473 16-0018: downloading firmware from file 'dvb-demod-mn88473-01.fw'
    5. Sep 10 12:46:26 gentoo vdr[10453]: [10453] frontend 3/1 provides DVB-T,DVB-T2,DVB-C with QPSK,QAM16,QAM32,QAM64,QAM128,QAM256 ("Panasonic MN88473")
    6. Sep 10 12:46:26 gentoo vdr[10453]: [10453] found 5 DVB devices
    7. Sep 10 12:46:26 gentoo vdr[10453]: [10453] using only 4 DVB devices

    Danke


    vdr-User-# 755 to_h264 chk_r

  • Sehr schön das es bei anderen Usern auch funktioniert - danke für die Rückmeldungen.


    Das ist aber hier nur ein Workaround, oder?

    Das eigentliche Problem sollte wohl im Treiber gefixt werden.

    So wie ich es verstehe beschreibt ein Frontend eine Kombination von Demodulator und Tuner.

    Die TBS5960 hat 2 Adapter. jeder Adapter hat einen Antennenanschluß, einen Si2183 Multi-Standard Demodulator aber 2 Tuner - einen Si2157 für DVB-T/T2/C und einen av2011 oder av2012 für DVB-S/S2/S2X - deshalb 2 Frontends.

    Dm Adapter kann aber nur entweder Sat- ODER Terr/Kabel angeschlossen sein, daher muß man VDR sagen welcher Tuner (Frontend) er verwenden soll (für Windows gibt es dafür offenbar das "TBS5960 Change Mode Tool" mit dem man die Eingänge konfigurieren kann).

    Daran wird ein Treiber-Fix vermutlich nichts ändern können (außer er bringt eine Art Autodetection für das Signal mit).


    Beim Astrometa-T2 ist es übrigens umgekehrt - er hat nur einen Tuner (R820T), aber 2 Demods - 1 x RTL2832U (DVB-T/C+SDR) und 1 x MN88473 (DVB-T/T2/C). Deshalb auch hier 2 Frontends.


    Helmut

  • Moin,


    Für mich müsste es eine Treiberoption sein, welches Signal anliegt. Das wird man ja auch nicht so oft wechseln. Dann bräuchte es nur ein Frontend und auch kein DTV_SET_DELIVERY_SYSTEM usw. und alles würde einfach funktionieren...


    Das ist doch das gleiche Problem wie bei den C/T Sticks. Wenn man zwei davon hat, einer mit C, der andere mit T, kann der vdr wie auch andere Programme nicht wissen, was anliegt. So muss jedes Programm irgendeine Konfiguration anbieten, obwohl es auf Systemebene schon feststeht, was Sache ist.


    Bei dynamite hab ich das so gelöst, dass per udev-Regel die erlaubten Sources an das Frontend gehängt wurden und damit der vdr genau wusste, welches was bietet. Dann ging auch Mischbestückung. Und man konnte Frontends deaktivieren oder an eine bestimmte vdr-Instanz binden.


    Lars

  • Quatsch, das gehört in die Anwendungssoftware. Der Kernel ist keine Bastel-Spielwiese.


    Der Kernel wird automatisch das erstbeste passende Modul laden, wenn er ein neues device findet und das Kernel Modul dazu passende IDs hat. Und solange der Nutzer nicht von Hand in irgendwelchen udev configs oder kernel Optionen rumpfuscht, wird er das Modul ohne jede Optionen laden. Ehrlich gesagt ist die Idee einem Treiber Optionen mitzugeben nur zum debuggen sinnvoll. Versuch das mal bei nem Windows...



    Stattdessen müsste in die Anwendung der physikalische Pfad zu den devices (die Position am PCI(e) oder die am USB Bus) und zugehörig was genau dieses Gerät an DelSys erlaubt ist. Das passt sehr viel besser in die Anwendungsebene. Das ist übrigen der Grund, warum VDR nie wirklich gut mit Geräten zurechtkam, welche mehrere unterschiedliche Empfangssysteme unterstützen.


    Der Treiber meldet, was die Hardware kann. Nicht das was auch wirklich anliegt, das weiß kein Treiber. Eventuell der Benutzer oder eine Software.

  • Das mit der Signalerkennung habe ich nicht wirklich erst gemeint.

    Aber bei den Problemen mit mehreren DVB-T/C Empfänger hat Wirbel recht.

    Und das hat mich auf eine Idee für eine Erweiterung der frontends.conf gebracht:


    Es wird für jeden Adapter eine Konfigurationszeile angelegt und diese um ein Feld für die Konfiguration der DeliverySystems erweitert, die dann in cDvbDevice::QueryDeliverySystems() berücksichtigt wird.

    Es könnte dann z.B. so aussehen:


    Code
    1. # frontend1, ohne DVB-C:
    2. 1,(-DVB-C),[15F4:131/1],<[0]Realtek RTL2832 (DVB-T)[1]Panasonic MN88473,DVB-T,DVB-T2,DVB-C>
    3. # Adapter deaktiviert:
    4. -1,(),[15F4:131/2],<[0]Realtek RTL2832 (DVB-T)[1]Panasonic MN88473,DVB-T,DVB-T2,DVB-C>
    5. # frontend0, ohne DVB-T/T2:
    6. 0,(-DVB-T,DVB-T2),[572:C688/1],<[0]Silicon Labs Si2168,DVB-T,DVB-T2,DVB-C>
    7. #frontend0, nur DVB-T2:
    8. 0,(+DVB-T2),[572:C688/2],<[0]Silicon Labs Si2168,DVB-T,DVB-T2,DVB-C>

    Helmut

  • Um es vorwegzuschicken: das mit einer "frontends.conf" gefällt mir überhaupt nicht. VDR sollte automatisch mit jeder Hardwarekonstellation zurecht kommen.


    Wirbel sagt, der Treiber meldet, was die HW kann. Dem stimme ich zu. Dann soll er das aber auch in einer Form machen, mit der die Applikation etwas anfangen kann ;-). Wenn ein Adapter zwei Tuner hat, von denen aber immer nur einer verwendet werden kann, dann soll es halt auch nur adapterX/frontend0 geben und kein zusätzliches frontend1. Mit DTV_SET_DELIVERY_SYSTEM wird dann das gewünschte Delivery-System ausgewählt. Wenn es frontend0 *und* frontend1 gibt, dann heißt das für die Applikation, dass beide *gleichzeitig* verwendet werden können. Zumindest glaube ich mich daran zu erinnern, dass das damals, als dieses Thema aufgekommen ist, der Konsens war. Und so handhabt es VDR auch.


    Dass es Aufgabe der Applikation ist, zu erkennen, ob ein bestimmtes Frontend ein SIgnal empfängt, sehe ich auch so, und habe vor, das entsprechend zu ändern, so dass Devices, die kein Signal liefern, ignoriert werden. Das würde dann auch eventuelle Störungen durch Kabelbruch oder versehentliches Abstecken gleich mit erschlagen. Wobei da natürlich noch zu überlegen ist, ob und in welchen Abständen geprüft werden soll, ob doch wieder ein Signal anliegt, aber das sind Details.


    Klaus

  • >>Wenn ein Adapter zwei Tuner hat, von denen aber immer nur einer verwendet werden kann, dann soll es halt auch nur adapterX/frontend0 geben und kein zusätzliches >>frontend1. Mit DTV_SET_DELIVERY_SYSTEM wird dann das gewünschte Delivery-System ausgewählt. Wenn es frontend0 *und* frontend1 gibt, dann heißt das für die >>Applikation, dass beide *gleichzeitig* verwendet werden können.

    Klingt völlig ok.

  • Hi,

    dem kann ich soweit auch zustimmen, es gibt aber auch einzelne Frontends mit mehreren DTV_SET_DELIVERY_SYSTEM und eine Karte hat zb. DVB-T2 und die andere hat nur DVB-C Signale anliegen. Wie kann man das dann lösen?


    bei minisatip ist das so gelöst

    • -Y --delsys ADAPTER1:DELIVERY_SYSTEM1[,ADAPTER2:DELIVERY_SYSTEM2[,..]] - specify the delivery system of the adapters

      • eg: --delsys 1:dvbt,2:dvbs
      • specifies adapter 1 as a DVBT device, adapter 2 as DVB-S, which overrides the system detection of the adapter




    Es ist eagl in wlehcer Reiehnfogle die Bchustebaen in Woeretrn vokrmomen. Huapstache der estre und leztte Bchustbae sitmmen.

    The post was edited 2 times, last by 9000H ().

  • Wie kann man das dann lösen?

    Das geht z. B. ganz einfach über die channels.conf, in dem man den Sendern die entsprechenden frontend-"adapter" über den Parameter CAID zuweist.

    Da muss man natürlich vorher die Adapter-Nr. der einzelnen Tuner auf der Karte kennen bzw. festlegen.

    Hatte ich hier mal testweise zu laufen für den gleichzeitigen Empfang von DVB-C und DVB-T2 auf getrennten DVB-Karten.


    Paul

  • es gibt aber auch einzelne Frontends mit mehreren DTV_SET_DELIVERY_SYSTEM und eine Karte hat zb. DVB-T2 und die andere hat nur DVB-C Signale anliegen. Wie kann man das dann lösen?

    Mit der von mir angedachten Änderung würde VDR es einfach mal "versuchen", und wenn kein SIgnal kommt, dann versucht er es halt mit einem anderen Device. Und merkt sich, welche Devices für welches Delivery-System ei Signal liefern können. Im Grunde genauso wie er es schon macht, wenn mehrere CAMs im System vorhanden sind.


    Klaus

  • Ich hatte damals nur unverschlüsselte Sender getestet, müsste man also probieren, ob das auch geht.


    Paul