DVBSky DKMS

  • Hallo TEN,


    ich habe die DVBSky S952 unter Ubuntu 14.04 mit Kernel 3.13 und media_build-bst-13-140619 im Einsatz. Ich bin gerade dabei zu versuchen, die Treiber in DKMS zu integrieren. Mangels Kernel Update seither ist es aber noch nicht getestet, also auf eigene Gefahr (manche würden vorher einen Image Backup vom System machen) !


    Anleitung:


    Voraussetzungen: Kernel ab 3.13., dkms aus yavdr main repository
    1. Makefile in media_build-bst-13 mit Makefile1.diff patchen (./v4l/build_x64.sh ggf. ändern, je nach dem für welches System gebaut werden soll)
    2. Makefile in media_build-bst-13/v4l mit Makefile2.diff patchen
    3. make_dkms.sh ins Verzeichnis media_build-bst-13 kopieren und mit sudo ausführen



    Dann booten und über das Ergebnis berichten.


    Edit 17.11.2014: Codeblöcke gegen Dateianhänge ausgetauscht


    Edit 21.12.2014: DKMS Hinweis hinzugefügt

  • Übergangslösung [...] bis die S952 direkt vom Kernel unterstützt wird. Besser den media_build Tree von DVBSky in DKMS bringen, als bei jedem Kernupdate die Treiber wieder von Hand bauen.

    Letzteres hatte ich im seit wenigen Wochen ausgelieferten Kernel versucht, musste dazu aber media_build-bst-13 neu aus dem Tarball erstellen, sonst wurde auch nach Boot in den aktuellen Kernel -39 von sudo make KDIR26="/lib/modules/$(uname -r)/updates/kernel/drivers/media" media-install
    weiter nur nach /lib/modules/3.13.0-36-generic installiert.
    Leider wird nach dem Reboot nicht die Version aus updates verwendet, sondern die mit dem Kernel gelieferte vorgezogen, so daß dann /dev/dvb leer bleibt:
    286852 Okt 28 15:26 3.13.0-39-generic/kernel/drivers/media/pci/cx23885/cx23885.ko
    294040 Nov 8 10:34 3.13.0-39-generic/updates/kernel/drivers/media/pci/cx23885/cx23885.ko
    Lässt sich sicher wieder manuell verbiegen, zunächst bin ich aber beim vorigen Kernel -36 geblieben, da ich meist nur per ssh aus der Ferne auf diesen VDR komme.


    Immerhin konnte ich die Fernbedienung der T982 in diese /etc/lirc/lircd.conf samplen, aus gleichem Grund aber noch nicht testen:

    Hat jemand eine mit den DVBSky-Karten unter Ubuntu lauffähige /etc/lirc/hardware.conf dazu (und evtl. Mapping auf die Kernel-Tasten wie KEY_UP etc.) ?
    Bedeutet die 3-polige Klinkensteckerausführung evtl. sogar, daß es sich um einen sendefähigen LIRC-Transceiver und nicht nur Empfänger handelt?

  • :modon


    Wie gewünscht, aber die Beiträge die Ihr selbst nicht haben wollt, löscht Ihr auch bitte selbst. Aber immer dran denken, es ist dann auch schwieriger nachzuvollziehen was wie passiert ist.


    Regards
    fnu

    HowTo: APT pinning

  • Letzteres hatte ich im seit wenigen Wochen ausgelieferten Kernel versucht, musste dazu aber media_build-bst-13 neu aus dem Tarball erstellen, sonst wurde auch nach Boot in den aktuellen Kernel -39 von sudo make KDIR26="/lib/modules/$(uname -r)/updates/kernel/drivers/media" media-install
    weiter nur nach /lib/modules/3.13.0-36-generic installiert.


    Ohne den make Output zu kennen, kann ich nur raten: Ich vermute, du hattest den ersten make unter 3.13.0.36 gemacht. Das merkt sich der mediabuild tree unter v4l/.version und ignoriert deinen Parameter. Um das los zu werden, brauchst du einen make distclean.


    Aber wir entfernen uns wieder von der eigentlichen Frage: Mein DKMS Vorschlag hat bei mir beim letzten Kernelupdate funktioniert. Die Treiber wurden für die neue Version automatisch beim apt-get dist-upgrade gebaut und richtig nach /lib/modules/3.13.0-39-generic/updates/dkms installiert. Nach dem reboot lief die S952 ohne manuellem Eingriff.

  • ersten make unter 3.13.0.36 gemacht. Das merkt sich der mediabuild tree unter v4l/.version und ignoriert deinen Parameter. Um das los zu werden, brauchst du einen make distclean.

    Danke, die hatte ich tatsächlich nicht gesehen.
    Packt make nach Deinen Patches die ganzen Firmwares wieder aus und schiebt auch die cx23885.ko des jeweils originalen Kernels wieder beiseite?

    Quote

    Mein DKMS Vorschlag hat bei mir beim letzten Kernelupdate funktioniert. Die Treiber wurden für die neue Version automatisch beim apt-get dist-upgrade gebaut und richtig nach /lib/modules/3.13.0-39-generic/updates/dkms installiert. Nach dem reboot lief die S952 ohne manuellem Eingriff.

    Brauchen die Patches einen besonderen Parameter?
    ~/media_build-bst-13$ patch <Makefile.patch
    patching file Makefile
    patch: **** malformed patch at line 4: endif
    (bzw. bei "else" in v4l)

  • Hallo TEN,


    die Firmware ist nicht mit dabei, die muss man einmalig nach der DVBSky Anleitung installieren. Die ändert sich ja auch durch den Kernelupdate nicht. Es sowieso einfacher ggf. Fehler zu finden, wenn man zuerst mal nach Hersteller Anleitung installiert und dann testet, ob damit alles geht. Dann ist die Firmware auch gleich mit drauf.


    Die cx23885.ko vom Original Kernel stört nicht, da zuerst im ../updates/... Verzeichnis nach den Modulen gesucht (und gefunden) wird.
    Die Patches aus den Code Blöcken gehen wirklich nicht, da sind Leerzeilen verschwunden. Ich habe sie durch angehängte Dateien ersetzt, die müssten jetzt funktionieren.

  • Hallo TEN,


    die Firmware ist nicht mit dabei, die muss man einmalig nach der DVBSky Anleitung installieren. Die ändert sich ja auch durch den Kernelupdate nicht. Es sowieso einfacher ggf. Fehler zu finden, wenn man zuerst mal nach Hersteller Anleitung installiert und dann testet, ob damit alles geht. Dann ist die Firmware auch gleich mit drauf.

    Klar hatte ich die erst einmal so installiert, dann nur die vielen rm -f auf Firmware-Dateien unterhalb media_build-bst-13 des make distclean bemerkt.


    Quote

    Die cx23885.ko vom Original Kernel stört nicht, da zuerst im ../updates/... Verzeichnis nach den Modulen gesucht (und gefunden) wird.

    Das hatte bei -36 so geklappt, bei -39 dann nicht - werde ich aber nach Durchlauf Deiner DKMS-Lösung auch auf -39 nochmals testen.

    Quote

    Die Patches aus den Code Blöcken gehen wirklich nicht, da sind Leerzeilen verschwunden. Ich habe sie durch angehängte Dateien ersetzt, die müssten jetzt funktionieren.

    Vielen Dank! Läuft nun durch bis
    make[1]: Leaving directory `/home/user/media_build-bst-13/v4l'
    ./DKMS.sh: line 26: warning: here-document at line 6 delimited by end-of-file (wanted `EOF')
    dirname: missing operand


    Die dkms.conf scheint aber erstellt worden zu sein, endend auf:
    dkms install -m dvbsky_v4l -v 14.6.19

  • Danke, jetzt ist er durchgelaufen. Hat nun natürlich noch Relikte vom ursprünglichen make install auf dem Kernel -36 (mal sehen wie's mit -39 und Nachfolgern wird), aber scheint alles zu passen:


    Running module version sanity check.
    - Original module
    - Multiple same named modules!
    - 2 named gspca_stk014.ko in /lib/modules/3.13.0-36-generic/
    - Installation
    - Installing to /lib/modules/3.13.0-36-generic/updates/dkms/


    depmod.....


    DKMS: install completed.


    Hat schon jemand die LIRC-Einbindung und etwaiges irsend ausgetüftelt?

  • Falls du den -39er Kernel schon installiert hast, musst du nach dem booten sudo dkms install "dvbsky_v4l/14.6.19" ausführen und nochmals booten. Automatisch geht es dann erst mit dem nächsten Update. LIRC habe ich nicht im Einsatz, ist bei mir ein reiner Server ohne Frontend.

  • Falls du den -39er Kernel schon installiert hast, musst du nach dem booten sudo dkms install "dvbsky_v4l/14.6.19" ausführen und nochmals booten.

    Das habe ich nach den anstehenden Aufnahmen gemacht, allerdings wie schon beim manuellen Durchlauf ist /dev/dvb danach anders als im Kernel -36 leer und es endet DKMS mit:


    Interessanterweise enthält dmesg nun:

    Erneuter Aufruf bringt "Module dvbsky_v4l/14.6.19 already installed on kernel 3.13.0-39-generic/x86_64".


    Ein uninstall läuft ewig, ich probiere es danach nochmal mit Umleitung in eine Logdatei, denn evtl. hatten ja die vorangegangenen Versuche mit den erst zuletzt als Attachment funktionierenden Skripten irgendetwas zerlegt, das sich darin zeigen könnte.

  • Mache sicherheitshalber noch einen sudo dkms remove "dvbsky_v4l/14.6.19" --all, dann ist wirklich alles wieder weg.

    Evtl. verirrt er sich aber (wie die "2 named"-Meldungen anzudeuten scheinen) noch zu den erhaltengebliebenen /lib/modules/3.13.0-39-generic/updates (ohne ./dkms) aus dem ursprünglichen sudo make KDIR26="/lib/modules/$(uname -r)/updates/kernel/drivers/media" media-install ?
    Kann man letzteren (KDIR26-)Pfad gefahrlos abräumen (ggf. gefolgt von evtl. notwendigem sudo depmod -a) ?

    Quote

    Welchen mediabuild tree nimmst du ?

    Auch den media_build-bst-13, sonst hätten Deine Patches ja nicht gepasst.

  • Ich gehe mal davon aus, du hast den aktuellen von der DVBSky Seite (140619). Das kann gut sein, dass sich da noch was mit ursprünglichen sudo make KDIR26=... nicht verträgt. Ist unter /lib/modules/$(uname -r)/updates/kernel/drivers/media überhaupt was drin ? Eigentlich müsste man das gefahrlos löschen können. Ich würde aber bei solchen Aktionen vorher immer ein Backup der Systemplatte mit Clonzilla machen. Man weiß nie, was schief alles schief gehen kann ...

  • Ich gehe mal davon aus, du hast den aktuellen von der DVBSky Seite (140619). Das kann gut sein, dass sich da noch was mit ursprünglichen sudo make KDIR26=... nicht verträgt. Ist unter /lib/modules/$(uname -r)/updates/kernel/drivers/media überhaupt was drin ?

    Da liegt alles, was dann auch als weiteres Exemplar im dkms-Unterverzeichnis landen sollte.


    Vor sudo dkms remove "dvbsky_v4l/14.6.19" --all müht sich erst einmal das ursprünglich gestartete dkms uninstall weiterhin äußerst zäh für
    *.ko:
    - Uninstallation
    - Deleting from: /lib/modules/3.13.0-39-generic/
    rmdir: failed to remove ‘’: No such file or directory
    - Original module
    - No original module was found for this module on this kernel.
    - Use the dkms install command to reinstall any previous module version.


    Nach dkms remove steht einem erneuten Entpacken des media_build-bst-13-140619.tar.gz sowie Anwendung Deiner Patches darauf und auf den Kernel -39 wohl nichts entgegen, oder sollte man noch irgendwo Symlinks abräumen müssen?

  • Irgendwas passte da jedenfalls nicht zusammen - DKMS hatte wohl irgendeinem Relikt trotz vorangegangenem make distclean die vorige statt der gestarteten Kernelversion entnommen (dkms uninstall allerdings griff nach -39, erst dkms remove versucht sich an -36!):


    # uname -r
    3.13.0-39-generic


    # sudo dkms remove "dvbsky_v4l/14.6.19" --all
    [sudo] password for user:


    -------- Uninstall Beginning --------
    Module: dvbsky_v4l
    Version: 14.6.19
    Kernel: 3.13.0-36-generic (x86_64)
    -------------------------------------


    Status: Before uninstall, this module version was ACTIVE on this kernel.

  • nein, das sieht gut aus, "--all" löscht alles, was von dkms installiert wurde von allen vorhanden Kernel Versionen. Jetzt hast du wieder den Stand von vor dem Test.


    Vielleicht wäre es jetzt ganz gut, nochmals nach Herstelleranleitung zu installieren (rm vom Kernel media Verzeichnis nicht vergessen, wegen der doppelten Modules ins verschiedenen Pfaden) und es erst danach nochmals mit dkms zu versuchen. Nur um sicherzustellen, dass bei dir nicht noch was Altes irgendwo rum liegt.

  • nein, das sieht gut aus, "--all" löscht alles, was von dkms installiert wurde von allen vorhanden Kernel Versionen. Jetzt hast du wieder den Stand von vor dem Test.


    Vielleicht wäre es jetzt ganz gut, nochmals nach Herstelleranleitung zu installieren (rm vom Kernel media Verzeichnis nicht vergessen, wegen der doppelten Modules ins verschiedenen Pfaden) und es erst danach nochmals mit dkms zu versuchen. Nur um sicherzustellen, dass bei dir nicht noch was Altes irgendwo rum liegt.


    tar xzvf media_build-bst-13-140619.tar.gz
    cd media_build-bst-13
    patch <Makefile1.diff
    cd v4l
    patch <Makefile2.diff
    cd ..
    sudo make_dkms.sh


    Nach einer halben Stunde Kompilierzeit war leider keine cx23885.ko (aus media_build-bst-13/v4l) in /lib/modules/3.13.0-39-generic/updates/dkms - muß darunter noch ein Verzeichnisbaum (manuell) erstellt werden?