[gelöst] VDR 1.7.9 - requires Linux DVB driver API version 5.0

  • Hallo,
    ich möchte auf einer virtuellen Maschine (also ohne DVB-Hardware) das UPNP/DLNA-Plugin testen.
    Habe dazu VDR 1.7.9 vorgesehen und erhalte beim kompilieren grundsätzlich diese Meldung:

    Zitat

    VDR requires Linux DVB driver API version 5.0


    Probiert habe ich - jedoch ohne Erfolg:

    Zitat

    Prompt: DVB for Linux Defined at drivers/media Kconfig:76
    Depends on: MEDIA_SUPPORT [=m] && NET [=y] && INET [=y]
    Location:
    -> Device Drivers
    -> Multimedia support (MEDIA_SUPPORT [=m])
    Selects: CRC32 [=y]


    Nun die Fragen:
    - brauche ich dazu API 5.0?
    - kann ich eine "ältere" VDR-Version 1.7.x nehmen, welche noch nicht API 5.0 benötigt? Welche wäre das?
    Oder könnt Ihr sonst irgendwie weiterhelfen? Im Moment fehlt mir jeglicher Ansatz.
    Gentoo Kernel 2.6.31 64Bit 2 (virt.) Prozessoren - wie gesagt, virtuelle Maschine
    Danke!
    Jörg

    Gentoo 3.5.7-gentoo - VDR-Version 1.6.0_p2 (Streamdev Server + Client) - MTPCenter 2.0 - Hardware: AMD Sempron 2200, 512 MB RAM, DVB-T: Terratec Cynergy T2 als USB-Stick, DVB-C: 2 x Mystique CaBiX-C2,
    Pinnacle Showcenter 200; Philips TV u. Sony BluRay als Media-Client f. UPnP/DLNA

    2 Mal editiert, zuletzt von joerg99 ()

  • Wenn du kernel 2.6.31 benutzt, dann hat dein kernel schon lange diese DVB-API. Nur die DVB header auf deinem System passen nicht zum verwendeten Kernel..


    PS: Schau mal in /usr/include/linux/dvb/version.h nach, welche API das ist. Einige VDR Versionen erlaubten nur 5.0, während die DVB API Version später auf 5.1 erhöht wurde.

  • Moin!


    Helft mir mal bei meinem Halbwissen:
    Die Header in /usr/include müssen doch zur installierten glibc passen, d.h. der Kernel könnte eventuell mit anderen Header übersetzt worden sein?
    Oder muss die glibc immer zum Kernel passen, wodurch es dann keine Unterschiede bei den benutzten Headern geben kann?


    mini.

  • Zitat

    Original von mini73
    Moin!


    Helft mir mal bei meinem Halbwissen:
    Die Header in /usr/include müssen doch zur installierten glibc passen, d.h. der Kernel könnte eventuell mit anderen Header übersetzt worden sein?


    ja, das ist die "reine" Lehre! Die Dateien in /usr/include werden von der Distri bereitgestellt und sollen bei Kernelupdates nicht ausgetauscht werden. Das Verlinken auf Kernelsourcen ist auch laut Linus Torvalds nicht gewollt.


    In der Praxis wird man damit leben müssen, dass einzelne Header-Dateien doch mal angepasst werden müssen.


    Bei vdr müsste man das in der Make.config über einen Eintrag wie
    DVBDIR = /usr/src/v4l-dvb/linux
    (Beispiel)
    lösen können.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    Einmal editiert, zuletzt von Dr. Seltsam ()

  • Zitat

    Original von mini73
    Moin!


    Helft mir mal bei meinem Halbwissen:
    Die Header in /usr/include müssen doch zur installierten glibc passen, d.h. der Kernel könnte eventuell mit anderen Header übersetzt worden sein?


    richtig!


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Was die Frage aufwirft, woher eine Applikation wissen soll, welche Features ein System hat, z.B. bei Treibern.

  • Zitat

    Original von wirbel
    Was die Frage aufwirft, woher eine Applikation wissen soll, welche Features ein System hat, z.B. bei Treibern.


    Das kann dann nicht zu Compile-Zeit passieren durch #ifdef usw. sondern muss durch API-Aufrufe entschieden werden, oder nicht? Trotzdem müssen dann nicht übersetzbare Teile des Codes ausgeblendet werden. Das ist der Preis, den man zahlen muss, wenn man unterschiedlich alte Systeme unterstützen will.
    Denn selbst wenn der Kernel die DVB-API 5 unterstützt, sollte er doch trotzdem noch mit Programmen umgehen können, die gegen DVB 3 übersetzt sind und nur diesen Teil nutzen, oder?


    Es ist natürlich ein Problem, wenn man neue Features, die es noch nicht in die üblichen Distributions-glibc geschafft haben, für seine Anwendung braucht, selbst wenn der Kernel damit kein Problem hätte. Es müsste also die glibc auf einen aktuelleren Stand gebracht werden. Für einzelne Anwendungen oder Installationen, die nicht "viel" tun (d.h. nur wenige Anwendungen laufen haben), ließe sich das sicherlich machen. Oder da muss man dann von den Standard-Distris abweichen und selbst entsprechende Pakete anbieten.


    Scheint kein einfaches Thema zu sein...


    mini.

  • Im praktischen Beispiel sind die Symbole der DVB-API garantiert nicht in der glibc verlinkt.


    Zitat


    Das kann dann nicht zu Compile-Zeit passieren durch #ifdef usw. sondern muss durch API-Aufrufe entschieden werden, oder nicht?


    Meistens muss das sogar zur compile Zeit passieren. Bis zur DVB-API 3.2 kannte die Api gar keinen Aufruf, die die Version zur Laufzeit zurück gibt.



    Zitat


    Denn selbst wenn der Kernel die DVB-API 5 unterstützt, sollte er doch trotzdem noch mit Programmen umgehen können, die gegen DVB 3 übersetzt sind und nur diesen Teil nutzen, oder?


    Das ist kein Problem, da abwärtskompatibel.
    Anders herum ist das Problem: Systeme deren glibc mal mit Headern der alten DVB-API 3.2 gebaut wurden, können dann keine neueren Programme kompilieren. Und das obwohl diese Symbole nicht für die glibc benutzt werden.


    Aber das alles ist im Beitrag off-topic, also zurück zum Kontext.

  • Zitat

    Schau mal in /usr/include/linux/dvb/version.h nach, welche API das ist.


    Da steht das hier drin:

    Code
    #ifndef _DVBVERSION_H_
    #define _DVBVERSION_H_
    
    
    #define DVB_API_VERSION 5
    #define DVB_API_VERSION_MINOR 1
    
    
    #endif /*_DVBVERSION_H_*/


    Das sagt mir nun überhaupt nichts.
    Jörg

    Gentoo 3.5.7-gentoo - VDR-Version 1.6.0_p2 (Streamdev Server + Client) - MTPCenter 2.0 - Hardware: AMD Sempron 2200, 512 MB RAM, DVB-T: Terratec Cynergy T2 als USB-Stick, DVB-C: 2 x Mystique CaBiX-C2,
    Pinnacle Showcenter 200; Philips TV u. Sony BluRay als Media-Client f. UPnP/DLNA

  • Das ist absolut perfekt so.


    Dann liegt es wahrscheinlich nur noch hier dran..


    Im Sourcecode von VDR, Datei dvbdevice.h bitte ändern:


    alt:

    Code
    #if DVB_API_VERSION != 5 || DVB_API_VERSION_MINOR != 0
    #error VDR requires Linux DVB driver API version 5.0!
    #endif


    neu:

    Code
    #if DVB_API_VERSION != 5
    #error VDR requires Linux DVB driver API version 5!
    #endif


    Danach sollte es funzen.

  • O man, auf meine alten Tage noch in Quellen 'rumhacken.


    Okay, hat geklappt.
    Danke!
    Jörg

    Gentoo 3.5.7-gentoo - VDR-Version 1.6.0_p2 (Streamdev Server + Client) - MTPCenter 2.0 - Hardware: AMD Sempron 2200, 512 MB RAM, DVB-T: Terratec Cynergy T2 als USB-Stick, DVB-C: 2 x Mystique CaBiX-C2,
    Pinnacle Showcenter 200; Philips TV u. Sony BluRay als Media-Client f. UPnP/DLNA

Jetzt mitmachen!

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