Mein VDR Update auf Ubuntu Bionic 18.04

  • Hallo Zusammen,


    wie in diesem Thread bereits angesprochen, habe ich jetzt auf Ubuntu 18.04 gewechselt, was insbesondere für meine FF TT6400 aufgrund der veränderten Treiber Situation etwas Aufwand war.

    Aber, gleich voraus, die Vorarbeit insbesondere von S:oren , ist so klasse, dass das kein Hexenwerk mehr ist.

    Ich beschreibe hier meine Vorgehensweise ausführlich, dass andere evtl. in der Lage sind das als Anleitung zu nutzen. Wie immer, das ist die Vorgehensweise, welche bei mir funktioniert hat. Das erhebt keinen Anspruch all-umfassend und -wissend zu sein, sondern fasst nur die Klasse Arbeit anderer zusammen. Daher kann ich auch weder Gewähr, Haftung, etc. übernehmen ;)

    Wichtig: Besonderheit meines Setups ist, dass ich auf einer Ubuntu 18.04 Desktop Version aufsetze, da ich den Rechner auch als Desktop nutze! Bei anderen "Headless" oder "Nur VDR" Systemen sind andere Distributionen unter Umständen sinnvoller.

    Zweite Besonderheit, ich habe meine komplette Systemplatte als ISO gespeichert, sodass ich jederzeit ein Backup meiner Konfiguration nutzen kann. Ich gehe davon aus, dass jeder ein Backup macht, bevor er/sie so einen Upgrade angeht ;)

    Dritte Besonderheit: Ich nutze die normale Grafikkarte für den Desktop und die TT6400 FF-Karte für den VDR und schalte den HDMI jeweils am Fernseher um. der WAF dieser Lösung ist sehr hoch.


    So, hier meine Schritte auf Ubuntu 18.04

    1. Installation Ubuntu 18.04 Desktop

    Ich setze immer auf der grünen Wiese auf, da ich das als einfacher empfinde und die Konfigurationsdaten des VDRs einfach aus dem Backup raus nehmen kann.

    Einen Upgrade von alten Ubuntu-Versionen auf 18.04 habe ich nicht getestet.

    2. Aktualisierung auf neuesten Kernel.

    das habe ich nur gemacht, um den Prozess für die Treiber nicht mehrmals machen zu müssen.

    3. Make und Installation der Treiber Module für die FF TT 6400

    Da die Treiber weder in den kernel gekommen sind noch in einem DKMS zur Verfügung stehen, müssen die jeweiligen Module selbst gebaut werden. Soren hat dafür einen aus meiner Sicht echt genialen Weg erdacht, der es schnell und einfach macht.

    die Vorgehensweise erstellt ein Modul für die TT6400, welches dann installiert werden kann.

    Hier die Schritte im Detail:

    a. Stellt sicher, dass Ihr die Umgebung habt um einen kernel bauen zu können.

    https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

    b. Wir brauchen für die Vorgehensweise die Quellen des aktuell installierten Kernels.

    Für die Sourcen bin ich wie von S:oren beschrieben vorgegangen:

    Zitat

    1. Schritt: die entsprechenden auskommentierten deb-src Zeilen in /etc/apt/sources.list aktivieren

    (bei meinem Bionic wären das deb-src http://de.archive.ubuntu.com/ubuntu/ bionic main restricted und deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates main restricted)

    2. Schritt: die passenden Sourcen zum aktiven Kernel holen (z.B. per sudo apt-get source linux-image-$(uname -r))

    3. Schritt: Build-Umgebung aufbauen: sudo apt-get build-dep linux-image-$(uname -r)

    c. Jetzt kann es los gehen. Kurz zum Verständnis um den Überblick nicht zu verlieren.

    Wir nehmen einen Kopie der installierten Kernel-Quellen.

    Dann wenden wir den Patch aus S:orens Repository auf diese Quellen an.

    Wir bauen die Kernel-Sourcen und wählen dabei nur die SAA716 Module aus.

    Die SAA716x-Module, welche wir erhalten, installieren wir.


    Also, die Schritte im Detail:

    Zuerst installieren wir die aktuellen Sourcen. Die Kernel version mit

    uname -r

    anzeigen. Bei mir war das nach den Aktualisierungen 4.15.0-48-generic:

    sudo apt install linux-source-4.15.0

    Danach müssten die Linux-Sourcen im Verzeichnis /usr/src liegen. Insbesondere liegt dort das File linux-source-4.15.0.tar.bz2 , welches wir später benötigen.

    Ich führe das ganze in einem Verzeichnis im Home-Directory durch. Falls das noch nicht besteht, muss das noch erstellt werden:

    mkdir ~/linux-saa716x

    cd ~/linux-saa716x

    Danach kopiere ich die kernel Sourcen in das Verzeichnis, auf die ich dann später patch anwende:

    tar xjf /usr/src/linux-source-4.15.0.tar.bz2

    Jetzt hole ich das Patchfile, welches ich später auf die Quellen des Kernels anwenden wollen. Das hole ich aus S:orens Repository:

    wget https://github.com/s-moch/linu…v4.15...saa716x-4.15.diff

    Um die Sourcen Patchen zu können wechsel ich in das Verzeichnis der Sourcen-Kopie:

    cd linux-source-4.15.0/

    Dann kopieren wir die aktuelle Kernel-Konfiguration, um sicherzustellen, dass das Modul später auch zur Umgebung passt.

    cp /boot/config-4.15.0-48-generic .config

    Vor dem Make müssen wir den Patch auf die Sourcen anwenden:

    patch -p1 < ../v4.15...saa716x-4.15.diff

    Dann erstellen wir eine Konfiguration für den make, welche nur die SAA716x Treiber auswählt für den Make:

    make KERNELVERSION=4.15.0-48-generic localyesconfig

    Wichtig: (Zitat von S:oren) # alles mit N bestaetigen, ausser SAA716X_SUPPORT y, SAA716X_CORE m, DVB_SAA716X_FF m

    Achtung: Sollte beim Make eine Fehlermeldung kommen, dass SSL-Libaries fehlen, muss das Packet libssl-dev installiert werden. Das hat bei mir die Meldung behoben:

    sudo apt-get install libsssl-dev

    Als nächstes kommt der eigentliche Make um die Module zu erstellen:

    make KERNELVERSION=4.15.0-48-generic -j6 modules

    Nach diesem Befehl liegen die erstellen Module in drivers/media/common. Diese kopieren wir in das korrekte Verzeichnis:

    sudo cp drivers/media/common/saa716x/saa716x_core.ko /lib/modules/4.15.0-48-generic/kernel/drivers/media/pci/

    sudo cp drivers/media/common/saa716x/saa716x_ff.ko /lib/modules/4.15.0-48-generic/kernel/drivers/media/pci/

    Danach binden wir die neuen Module ein

    sudo depmod 4.15.0-48-generic

    Ich habe dann sicherheitshalber einen Reeboot durchgeführt und unter dmesg kontrolliert, dass die TT 6400 Karte sauber erkannt wurde:

    sudo dmesg | grep SAA716

    (Wichtig Firmware nicht vergessen an die richtige Stelle zu kopieren Bei mir ist das /lib/firmware)


    4. Danach habe ich die Installation des VDR gemacht.

    Ich nutze dafür die VDR Packete des yaVDR Teams. Dabei bin ich jedes Mal begeistert, was Ihr in Eurer Freizeit leistet.

    Eine Änderung zu früher: Es gibt jetzt zwei Packetquellen, die man einbinden muss.

    Mir ist des erst aufgefallen, als ich beim Skindesigner Plugin eine unerfüllte Abhängigkeit zu den Skindesigner-Logos hatte.

    sudo add-apt-repository ppa:yavdr/experimental-vdr

    sudo add-apt-repository ppa:yavdr/experimental-main

    sudo apt-get update

    sudo apt-get install vdr vdr-plugin-dvbhddevice vdr-plugin-osdteletext vdr-plugin-skindesigner vdr-plugin-svdrpservice

    (und was Ihr sonst noch so an Plugins braucht)

    Im Prinzip sind momentan die experimental Repositories des yavdr-Teams für Bionic.

    https://launchpad.net/~yavdr


    Ach, noch ein Wort zu Lirc, da das bei mir bei jedem Update ein Problem darstellt.

    So auch dieses Mal ;)

    Lirc befindet sich gelinde gesagt im Umbau. Insbesondere die 10-er Versionen haben bei mir nicht funktioniert. Mit etwas Research stösst man recht schnell auf den Tipp die alte Version aus den Xenial Packete zu installieren, was bei mir sehr gut funktioniert.

    Siehe hier: https://twosortoftechguys.word…irc-work-in-ubuntu-18-04/

    Zusammenfassung: Lirc deinstallieren, Xenial Packete kurz hinzufügen und Lirc aus Xenial installieren, Xenial Packete wieder rauswerfen und Lirc auf Hold setzen.

    Das ist sicher ein nicht gerade sauberer Workaround, aber bei mir hat es wunderbar funktioniert.

    Zur Info: Komischerweise musste ich trotz gleicher Konfiguration meines serielles IR Empfängers bei meinem Harmony Hub die Befehlswiederholung am kls-1.6 Gerät um einen Punkt erhöhen, dass die Bedienung wieder flüssig lief.


    Soweit mal.


    Günter


    PS: Das darf gerne kopiert, verbessert, etc. werden... ;)

    Ubuntu 22.04; Kernel 6.2.0-26; mit Parallelbetrieb von:
    VDR 2.6.4 über S2-6400 (HDMI1)
    XBMC /Kodi & Unity Desktop über Onboard Grafik (HDMI2)
    Beides an Sony KDL-55EX725
    Harmony-Hub zum Umschalten zwischen VDR und XBMC

  • Was für einen IR-Empfänger hast du denn?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich nutze einen uralten Serial Empfänger.

    Im Harmony Hub das KLS 1.6 Profil.

    Ubuntu 22.04; Kernel 6.2.0-26; mit Parallelbetrieb von:
    VDR 2.6.4 über S2-6400 (HDMI1)
    XBMC /Kodi & Unity Desktop über Onboard Grafik (HDMI2)
    Beides an Sony KDL-55EX725
    Harmony-Hub zum Umschalten zwischen VDR und XBMC

  • Ich nutze einen Atric V5 in der selben Konstellation.


    Der Treiber für den seriellen Empfänger steckt mittlerweile im Kernel - man muss das Modul serial_ir laden und die Serielle Schnittstelle passend konfigurieren, damit ein rc-core Geräte dafür erzeugt wird, lircd hat damit erst mal nichts mehr zu tun (aber man kann es nutzen, um die Events vom Kernel Input Device auf einen Lirc-Sockel zu bringen, wenn man das nicht mit eventlircd oder inputlirc machen will).

    sudo apt install setserial ir-keytable


    Erst mal dafür sorgen, dass das Modul geladen wird:

    Code: /etc/modprobe.d/serial_ir.conf
    serial_ir

    Dann noch das Paket setserial installieren und für die gewünschte Schnittstelle konfigurieren:

    Code: /etc/serial.conf
    #COM1 equivalent, /dev/ttyS0
    /dev/ttyS0 uart none
    
    #COM2 equivalent, /dev/ttyS1
    #/dev/ttyS1 uart none

    Und festlegen, dass die Schnittstelle passend konfiguriert wird, wenn das Modul geladen wird:

    Code: /etc/modules-load.d/serial_ir.conf
    #COM1 equivalent, /dev/ttyS0
    options serial_ir irq=4 io=0x3f8
    install serial_ir setserial /dev/ttyS0 uart none; /sbin/modprobe --ignore-install serial_ir
    
    #COM2 equivalent, /dev/ttyS1
    #options serial_ir irq=3 io=0x2f8
    #install serial_ir setserial /dev/ttyS1 uart none; /sbin/modprobe --ignore-install serial_ir

    Dann muss man noch sagen, dass ir-keytable die Keymap

    für den Empfänger laden soll:

    Code: /etc/rc_maps.cfg
    serial_ir   rc-rc6-mce          /etc/rc_keymaps/kls-1.6

    Außerdem sollte man die lircd-uinput.service deaktivieren, weil sonst Tastendrücke von lircd ins System gestreut werden:

    systemclt mask --now lircd-uinput.service


    Der Empfänger sollte dann nach einem Reboot so sichtbar sein:

    Code
    $ sudo ir-keytable
    /sys/class/rc/rc0/ gefunden (/dev/input/event3) mit:
        Name: Serial IR type home-brew
        Treiber: serial_ir, Tabelle: rc-rc6-mce
        Lirc Gerät: /dev/lirc0
        unterstützte Protokolle: other lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp 
        Aktivierte Protokolle: lirc rc-5 
        bus: 25, Anbieter/Produkt: 0001:0001, Version: 0x0100
        Wiederholungsverzögerung = 500 ms, Wiederholungsperiode = 125 m

    Die Lirc-Version aus bionic sollte dann mit der Standard-Konfiguration (devinput Treiber) die Tastendrücke von rc-core Geräten auf den Lirc-Sockel weiterreichen.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • beachboy Warum nutzt du nicht den IR-Empfänger der FF HD 6400? Da wäre das IR-Kernel-Modul im ffhd6400 Treiber enthalten und man benötigt nur das remote-plugin, das war schon alles....


    Gruß

    Uwe

  • Hallo Zusammen,


    danke für die Anmerkungen.

    Den Seriellen Empfänger nutze ich schon ewig, da ich den

    auch für andere Programme zum steuern brauche.

    Dementsprechend hat meine lircd.conf zwei "Fernbedienungen",

    eine kls 1.6 für VDR, ein Profil für XBMC.


    Außerdem ist das Kabel über 2 Meter durch eine Wand verlegt,

    solange ich das nicht tauschen muss.... ;)


    Gruss,


    Günter

    Ubuntu 22.04; Kernel 6.2.0-26; mit Parallelbetrieb von:
    VDR 2.6.4 über S2-6400 (HDMI1)
    XBMC /Kodi & Unity Desktop über Onboard Grafik (HDMI2)
    Beides an Sony KDL-55EX725
    Harmony-Hub zum Umschalten zwischen VDR und XBMC

  • Hallo,


    ich versuche gerade die Treiber für die TT6400 im aktuellen Ubuntu 18.04 (Kernel 4.15.0-74-generic) zu übersetzen.


    Zitat

    Als nächstes kommt der eigentliche Make um die Module zu erstellen:

    make KERNELVERSION=4.15.0-48-generic -j6 modules

    Nach diesem Befehl liegen die erstellen Module in drivers/media/common. Diese kopieren wir in das korrekte Verzeichnis:

    sudo cp drivers/media/common/saa716x/saa716x_core.ko /lib/modules/4.15.0-48-generic/kernel/drivers/media/pci/

    sudo cp drivers/media/common/saa716x/saa716x_ff.ko /lib/modules/4.15.0-48-generic/kernel/drivers/media/pci/

    Bei mir wird der Treiber nicht kompiliert, d.h. es gibt keine Module saa716x_core.ko/saa716x_ff.ko im entsprechenden Verzeichnis.

    Beim Kommando "make KERNELVERSION=4.15.0-48-generic localyesconfig" werde ich nicht nach den SAA716x Treiber gefragt.

    Danach sind auch keine Zeilen zum SAA716x in der Datei .config.


    Kann ich die SAA716x Module händisch in die Datei .config eintragen?


    Viele Grüße

    Mario.

    HD-VDR: Activy 570 Gehäuse, MSI 880GMA-E55, AMD Athlon II X2 245, DIMM 4GB DDR3-1066, WD Red NAS-Festplatte 4 TB, TT S2-6400, Debian GNU/Linux 12 (bookworm), VDR 2.6.0

  • Beim Kommando "make KERNELVERSION=4.15.0-48-generic localyesconfig" werde ich nicht nach den SAA716x Treiber gefragt.

    Danach sind auch keine Zeilen zum SAA716x in der Datei .config.

    Den Effekt hatte ich auch schon mal unter Fedora. Bei mir hat das dann nur funktioniert, wenn ich die Karte im PC eingebaut hatte und die Treiber schon geladen waren, z.B. durch Booten mit einer älteren Kernelversion mit vorhanden Treibern. Ich habe das dann nicht weiter verfolgt, weil bei mir die auf diese Weise kompilierten Treiber nicht richtig funktioniert haben. Ich baue mir z.Z. ab und zu mal einen kompletten gepatchten Kernel.

    Kann ich die SAA716x Module händisch in die Datei .config eintragen?

    Das könnte eigentlich auch funktionieren wenn alle Abhängigkeiten erfüllt sind.


    Viele Grüsse

    kamel5

    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

  • Habe es jetzt hinbekommen, der Treiber für die TT6400 wurde erstellt.

    Bei mir waren in der .config keine SAA716x Module vorausgewählt. Das liegt vermutlich daran, dass ich auf die Ubuntu 18.04 Server Variante (und nicht Desktop) aufgesetzt habe. Habe über

    make menuconfig

    folgende Einstellungen vorgenommen:


    Device Drivers ->

    <M> Multimedia support

    [*] Digital TV support

    [*] DVB Network support

    [*] Support for SAA716x family from NXP/Philips

    <M> SAA7160/1/2 PCI Express bridge based devices

    <M> SAA7160/1/2 based Full Fledged PCIe cards


  • Hallo,


    vielen Dank für die Anleitung. Mein System läuft nun seit rund 3 Wochen mit yavdr-ansible recht stabil. Eine Frage hätte ich noch: Was passiert eigentlich, wenn man ein dist-upgrade macht? Muss man dann die Module wieder neu kompilieren? Würde das System eigentlich gerne aktuell halten, aber den "Aufwand" die Module neu erstellen zu müssen, würde ich mir gerne sparen;-)


    Gruß

    Joerg

    Server: yavdr-ansible (Ubuntu 18.04) Silverstone LC11, AT3IONT-I, 2GB DDR2, TT S2-6400, Riser RC11, SSD ADATA 120GB, Samsung 1TB
    Client: MLD5.4 Shuttle XS35GTV2, SSD OCZ 60GB, FB Medion X10

  • Wenn es einen neuen Kernel gibt, dann musst du die Module rekompilieren. Vermutlich könnte man das Bauen mit dkms automatisieren (zumindest innerhalb einer Major-Version des Kernels).

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • ok, das klingt jetzt nicht ganz trivial.

    Da muss ich erst einmal ein Testsystem aufsetzen, um damit zu übern;-)

    Server: yavdr-ansible (Ubuntu 18.04) Silverstone LC11, AT3IONT-I, 2GB DDR2, TT S2-6400, Riser RC11, SSD ADATA 120GB, Samsung 1TB
    Client: MLD5.4 Shuttle XS35GTV2, SSD OCZ 60GB, FB Medion X10

Jetzt mitmachen!

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