Verständnisfrage zum Handling der DVB-Treiber durch den VDR

  • Hallo,

    nachdem ich meine VDR's neu organisiert habe, folgende Frage:

    In einem steckt nun eine Hauppauge WinTV-HVR4000(Lite) Karte, die (leider) Firmware on demand macht. Das führt dazu, dass der vdr zwar OSD aber kein Bild und Ton hat. Nach meiner Analyse funktioniert es dann, wenn einmalig in cDvbDevice::SetPid ein sleep eingebaut wird. Ich schätze ein Timingproblem mit den Threads.

    Meine Frage nun, warum geht es dann damit?


    Hier ein paar Logauszüge und die Änderung an der dvbdevice.c.


    # dmesg | grep -i dvb

    [ 13.541578] cx88[0]: subsystem: 0070:6906, board: Hauppauge WinTV-HVR4000(Lite) DVB-S/S2 [card=69,autodetected], frontend(s): 1

    [ 13.800624] tveeprom 1-0050: TV standards ATSC/DVB Digital (eeprom 0x80)

    [ 14.026990] cx88/2: cx2388x dvb driver version 1.0.0 loaded

    [ 14.038605] cx88/2: registering cx8802 driver, type: dvb access: shared

    [ 14.050373] cx88[0]/2: subsystem: 0070:6906, board: Hauppauge WinTV-HVR4000(Lite) DVB-S/S2 [card=69]

    [ 14.074670] cx88[0]/2: cx2388x based DVB/ATSC card

    [ 14.103660] DVB: registering new adapter (cx88[0])

    [ 14.115762] cx88-mpeg driver manager 0000:05:01.2: DVB: registering adapter 0 frontend 0 (Conexant CX24116/CX24118)...

    [ 14.258054] cx24116_firmware_ondemand: Waiting for firmware upload (dvb-fe-cx24116.fw)...


    # journalctl -b

    Oct 26 07:49:32 Keller vdr[1314]: [1314] probing /dev/dvb/adapter0/frontend0

    Oct 26 07:49:32 Keller vdr[1314]: [1314] creating cDvbDevice

    Oct 26 07:49:32 Keller vdr[1314]: [1314] new device number 1

    Oct 26 07:49:32 Keller kernel: cx24116_firmware_ondemand: Waiting for firmware upload (dvb-fe-cx24116.fw)...

    Oct 26 07:49:32 Keller kernel: cx24116_firmware_ondemand: Waiting for firmware upload(2)...


    snip ( 6 Sekunden dauert der Firmwareload)


    Oct 26 07:49:38 Keller kernel: cx24116_load_firmware: FW version 1.26.90.0

    Oct 26 07:49:38 Keller kernel: cx24116_firmware_ondemand: Firmware upload complete

    Oct 26 07:49:39 Keller kernel: Key type dns_resolver registered

    Oct 26 07:49:39 Keller kernel: NFS: Registering the id_resolver key type

    Oct 26 07:49:39 Keller kernel: Key type id_resolver registered

    Oct 26 07:49:39 Keller kernel: Key type id_legacy registered

    Oct 26 07:49:39 Keller vdr[1314]: [1314] DVB API version is 0x050A (VDR was built with 0x050A)

    Oct 26 07:49:39 Keller vdr[1314]: [1314] frontend 0/0 provides DVB-S,DVB-S2 with QPSK ("Conexant CX24116/CX24118")

    Oct 26 07:49:39 Keller vdr[1314]: [1314] cTimeMs: using monotonic clock (resolution is 1 ns)

    Oct 26 07:49:39 Keller vdr[1314]: [1314] found 1 DVB device

    Oct 26 07:49:39 Keller vdr[1314]: [1314] initializing plugin: softhddevice (0.6.1rc1-GIT9c90c5a): A software and GPU emulated HD device

    Oct 26 07:49:39 Keller vdr[1314]: [1314] new device number 2


    # dvbdevice.c

    bool cDvbDevice::SetPid(cPidHandle *Handle, int Type, bool On)

    {

    if (Handle->pid) {

    dmx_pes_filter_params pesFilterParams;

    memset(&pesFilterParams, 0, sizeof(pesFilterParams));

    if (On) {

    if (Handle->handle < 0) {

    Handle->handle = DvbOpen(DEV_DVB_DEMUX, adapter, frontend, O_RDWR | O_NONBLOCK, true,0);

    >>> // warte einmal 2 Sekunden

    >>> // sleepsec ist statisches int weiter oben

    >>> sleep(sleepsec); // 2 sec

    >>> sleepsec = 0;

    if (Handle->handle < 0) {

    LOG_ERROR;

    return false;

    }

    }


    Hat mich einen Tag gekostet, aber jetzt läufts. Wahrscheinlich geht es eleganter, abe dazu fehlen mir die Kenntnisse.

    WoZi: VDR 2.3.8 auf OpenSuse Leap 42.1, Kernel 4.7.0-RC5, K208 [GeForce GT 730TT-Budget S2-3200 PCI,TechnoTrend TVStick CT2-4400 USB, Kodi git
    SchlafZi: VDR 2.3.8, OpenSuse Leap 42.1, Kernel 4.7.2, GeForce GT 630 Rev. 2, Hauppauge WinTV-HVR4000 PCI

    Keller: Headless PI3, VDR 2.3.8, Technotrend TT Connect S2-3600 USB


  • Du kannst vor dem vdr einfach ein kleines Script starten, welches mit einem der vielen dvb-Tools die Karte anspricht, damit sie einen Sender tuned. Dabei dürfte dann die Firmware geladen werden und der vdr muss dann nicht gepatched werden.


    Lars

  • Habe es mit w_scan versucht,

    hatte abber nicht funktioniert.

    WoZi: VDR 2.3.8 auf OpenSuse Leap 42.1, Kernel 4.7.0-RC5, K208 [GeForce GT 730TT-Budget S2-3200 PCI,TechnoTrend TVStick CT2-4400 USB, Kodi git
    SchlafZi: VDR 2.3.8, OpenSuse Leap 42.1, Kernel 4.7.2, GeForce GT 630 Rev. 2, Hauppauge WinTV-HVR4000 PCI

    Keller: Headless PI3, VDR 2.3.8, Technotrend TT Connect S2-3600 USB


  • Kann ich heute abend probieren. Wobei beim w_scan die Firmware auch vorher geladen wurde,

    Bild blieb trotzdem dunktel.

    WoZi: VDR 2.3.8 auf OpenSuse Leap 42.1, Kernel 4.7.0-RC5, K208 [GeForce GT 730TT-Budget S2-3200 PCI,TechnoTrend TVStick CT2-4400 USB, Kodi git
    SchlafZi: VDR 2.3.8, OpenSuse Leap 42.1, Kernel 4.7.2, GeForce GT 630 Rev. 2, Hauppauge WinTV-HVR4000 PCI

    Keller: Headless PI3, VDR 2.3.8, Technotrend TT Connect S2-3600 USB


  • Wenn du nach dem ersten (ungepatchten) Start des vdr ohne Bild den vdr einfach neustartest, kommt dann ein Bild?


    Wenn ja, müsste man ggf. mal den Treiber-Maintainer fragen, ob er z.B. eine Moduloption einbauen könnte, die die Firmware beim Initialisieren lädt (falls es nicht schon eine gibt, frag mal modinfo).


    Lars

  • Hi,

    Oder du nutzt dynamite-Plugin...

    Das ist ja dafür gebaut worden...

    MfG Stefan

    Test-VDR1: HP rp5700 Fertigsystem, Core2Duo E6400, 2GB RAM, FF-SD C-2300, nvidia Slim-GT218 x1 | easyVDR 2.0 64Bit
    VDR3: in Rente

    VDR4: MSI G31M2 v2, Digitainer2-Geh., t6963c 6" gLCD, E5200, 2GB, 3TB WD Red, GT730, 2x TT S2-3200; easyVDR 3.5 64bit
    VDR5: Gigabyte
    GA-G31M-S2L, Intel E2140, Zotac GT730 passiv, Digitainer2-Geh., t6963c 6 " gLCD, 2 TB WD Red, 2x TT S2-3200 (an 1 Kabel) easyVDR 3.5 64bit
    VDR6:
    Intel E5200, GT630 passiv, F1 750 GB, t6963c gLCD, 2x TT S2-3200 | easyVDR 3.5 64bit
    VDR-User #1068
    www.easy-vdr.de

  • Wenn du nach dem ersten (ungepatchten) Start des vdr ohne Bild den vdr einfach neustartest, kommt dann ein Bild?

    ja.

    Das wäre dann das Modul cx24116. Es gibt lt. Modinfo keine diesbezügliche Option.


    Ich hatte mir auch dynamite angeschaut, hatte dann Probleme beim Senderwechsel auf Sky und habe es auf das Plugin geschoben. Wahrscheinlich zu unrecht, werde es mir nochmals in Ruhe anschauen.


    Die Frage bleibt aber, warum reicht ein einmaliger sleep von 2 Sek. beim Setzen der PIDs. Ich hatte auch an allen anderen Stellen, wo dvbOpen augrufen wird ein wait gesetzt. (bis zu 20 Sek.). Hat nichts gebracht.

    WoZi: VDR 2.3.8 auf OpenSuse Leap 42.1, Kernel 4.7.0-RC5, K208 [GeForce GT 730TT-Budget S2-3200 PCI,TechnoTrend TVStick CT2-4400 USB, Kodi git
    SchlafZi: VDR 2.3.8, OpenSuse Leap 42.1, Kernel 4.7.2, GeForce GT 630 Rev. 2, Hauppauge WinTV-HVR4000 PCI

    Keller: Headless PI3, VDR 2.3.8, Technotrend TT Connect S2-3600 USB


  • [...] müsste man ggf. mal den Treiber-Maintainer fragen, ob er z.B. eine Moduloption einbauen könnte, die die Firmware beim Initialisieren lädt (falls es nicht schon eine gibt[...]

    Das spezielle Problem hier habe ich (mangels passender Hardware) nicht genauer untersucht. Ich verwende aber voellig problemlos andere Hardware, die erst nach dem Start des vdr ihre Firmware laedt. _Das_ ist also nicht das Problem an diesem Treiber...


    Gruss,

    S:oren

  • Mag sein.

    Ich habe meinen Workaround gefunden und belass es dabei.

    Danke.

    WoZi: VDR 2.3.8 auf OpenSuse Leap 42.1, Kernel 4.7.0-RC5, K208 [GeForce GT 730TT-Budget S2-3200 PCI,TechnoTrend TVStick CT2-4400 USB, Kodi git
    SchlafZi: VDR 2.3.8, OpenSuse Leap 42.1, Kernel 4.7.2, GeForce GT 630 Rev. 2, Hauppauge WinTV-HVR4000 PCI

    Keller: Headless PI3, VDR 2.3.8, Technotrend TT Connect S2-3600 USB


  • Ich habe jetzt auch das Problem wie Kanal5

    Ich verwende den VDR 2.4.1 mit einer WinTV

    Code
    03:06.0 Multimedia video controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder (rev 05)
    03:06.1 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (rev 05)
    03:06.2 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05)
    03:06.4 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] (rev 05)


    Wenn ich den VDR mit killall vdr beende (Er startet dann neu) habe ich Live Bild und Ton. Der Tipp mit dem dvb-fe-tool hat bei mir nicht funktioniert.

    Wäre schön eine Lösung zu finden

  • Die Methode mit dem wait-for-vdr@<device-nr.>.service hilft nicht?

  • wait-for-vdr@<device-nr.>.service

    Hab es jetzt erst mal mit szap gelöst in dem ich einen Kanal aus der channels.conf tune. Dann wird die Firmware geladen und der VDR läuft...
    szap klappt aber leider nicht mit Kanalnamen. Nur mit Nummern; und das auch nur, falls es nicht gerade eine Kanalgruppe ist...

Jetzt mitmachen!

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