[Gelöst] VDR auf einer FritzBox 7490

f666

Mitglied
Mitglied seit
6 Apr 2016
Beiträge
332
Punkte für Reaktionen
46
Punkte
28
Hier ein Erfahrungsbericht, wie man VDR mit einem USB DVB-C Empfänger auf einer FritzBox 7490 als headless Aufnahme- und Streaming Server zum Laufen bekommt.

Man braucht grob diese Komponenten:
0. Grundlagen in Freetz legen
1. DVB-C Treiber als passende Kernel Module
1b. DVB Kommandozeilentools zum Testen
2. VDR

Zu 0:
Ich habe freetz-trunk an ein paar Stellen ergänzen müssen:

a) fwmod
fwmod erstellt in der aktuellen Form zuerst die modules.dep und integriert danach die ganzen Pakete. Da ich unter addons die DVB Kernel Module habe, werden die so nicht berücksichtigt. Im Patch fwmod_addon_modules.diff.txt habe ich einfach die Reihenfolge umgestellt.

b) depmod.pl
depmod.pl funktioniert nicht mit Kernelversionen >3.0. Den Patch depmod_upstream_kernel_3.diff.txt habe ich vom Busybox Projekt, mit ihm wird die modules.dep korrekt erzeugt.

c) uclibc
Der uclibc von freetz fehlt bei der Funktion sscanf der Parameter m (Speicher für einen String direkt allokieren). VDR und auch die dvb-utils brauchen den aber. Die beiden Patches 010-backport_sscanf_alloc.patch und 011-uclibc_2015_May_031551.patch rüsten den Parameter nach. Ich habe die Dateien unter toolchain/make/target/uclibc/0.9.33.2/ abgelegt. Sie stammen von der uclibc Mailingliste.
Leider braucht man noch den 666-gperf-gcc-6.patch unter toolchain/make/target/gcc/4.8/, dass gcc-4.8 überhaupt mit gcc-6 (Tumbleweed) kompiliert. Der Patch stammt auch von irgendeiner Mailingliste.

d) Kernel Module
Da ich FritzOS 06.60 als Ausgangsbasis benutzt habe und da die Funktion REPLACE_KERNEL noch nicht funktionierte, musste ich noch zusätzliche Kernel Module für die DVB Treiber bauen: i2c_mux, regmap-core und regmap-i2c.
Um die regmap Module überhaupt als Module bauen zu können, habe ich vom OpenWRT Projekt den Patch 259-regmap_dynamic.patch nach make/linux/patches/3.10.73/7490_06.60/ kopiert. Der Patch i2c_regmap_modules.diff.txt integriert die Module in freetz.

e) NFS
Ich exportiere das Verzeichnis mit den Aufnahmen per NFS zu den VDR Clients. Seltsamerweise funktionierte der NFS(v3) Server auch ohne REPLACE_KERNEL auf Anhieb (bzw. nach patchen der make/nfs-utils/Config.in, make/nfsd-cgi/Config.in und make/linux/configs/freetz/config-vr9-7490_06.60 um die Programme/Module einfach zu bauen).

f) Abhängigkeiten
Spontan fallen mir die libintl und die libcap ein.

Zu 1:
Das Linux Media Projekt stellt ein Buildsystem bereit, welches die aktuellsten DVB-Treiber für ältere Kernel kompiliert: https://git.linuxtv.org/media_build.git/
Nach den Vorbereitungen (aktuellsten Tree runterladen und entpacken) kann man sich eine .config Datei erstellen (make menuconfig) und sich die Kernel Module kompilieren lassen:
Code:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/home/sfr/Ablage/freetz-trunk/toolchain/build/mips_gcc-4.8.5_uClibc-0.9.33.2-nptl_kernel-3.10/mips-linux-uclibc/bin ARCH=mips CCSRC=/home/sfr/Ablage/freetz-trunk/source/kernel/ref-vr9-7490_06.60/linux-3.10/ SRCDIR=/home/sfr/Ablage/freetz-trunk/source/kernel/ref-vr9-7490_06.60/linux-3.10/ DIR= CROSS_COMPILE=mips-linux- V=1 CC=mips-linux-cc make
Ich habe die Kernel Module manuell in ein Freetz Paket unter freetz-trunk/addon gepackt.
Mit einem einfachen
Code:
modprobe dvb_usb_dvbsky
werden die Module dann auf der FritzBox geladen und es gibt die passenden Geräte unter /dev/dvb/adapter0.

Zu 1b:
Um die ordnungsgemäße Funktion des ganzen DVB-C Systems (Dose, Kabel, Empfänger, Module) zu testen, habe ich einige der Kommandozeilentools aus den dvb-apps (lsdvb, femon, czap, scan) auf der FritzBox benutzt: https://linuxtv.org/hg/dvb-apps/
Die werden zwar nicht mehr weiter entwickelt, kommen jedoch ohne libudev und argp.h aus, was die aktuelleren v4l-utils brauchen und in freetz nicht enthalten ist.
Runterladen, entpacken, die INCLUDE Pfade in den Makefiles auf den freetz Kernel zeigen lassen und mit
Code:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/home/sfr/Ablage/freetz-trunk/toolchain/build/mips_gcc-4.8.5_uClibc-0.9.33.2-nptl_kernel-3.10/mips-linux-uclibc/bin ARCH=mips V=1 CC="mips-linux-cc -march=24kc -mtune=24kc -msoft-float -Os -pipe -Wa,--trap" make
kompilieren.
Ich habe die 4 Dateien dann ebenfalls in ein eingenes Freetz Paket unter freetz-trunk/addon gepackt.

Zu 2:
VDR braucht standardmäßig die libintl, libcap, libjpeg, fontconfig und freetype. Auf einem headless Server sind die letzten 3 eigentlich überflüssig. Ich habe am Quellcode grob die Axt angesetzt und alles was diese 3 Bibliotheken braucht großzügig entfernt, bis es kompiliert. Erfüllt seinen Zweck. Wenn man sich die richtige Make.config erstellt hat, kann man mit
Code:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/games:/home/sfr/Ablage/freetz-trunk/toolchain/build/mips_gcc-4.8.5_uClibc-0.9.33.2-nptl_kernel-3.10/mips-linux-uclibc/bin ARCH=mips V=1 make
kompilieren.
vdr, die Plugins (streamdev, skincurses) und die Konfigurationsdateien habe ich auf der FritzBox direkt unter /var/media/ftp in einem eigenen Verzeichnis. Die Videos dann auf der angeschlossenen USB3 Festplatte.
 

Anhänge

  • toolchain_patches.tgz
    5.9 KB · Aufrufe: 7
  • modules.tgz
    2.8 KB · Aufrufe: 6
  • enable_nfs_7490_3_10_73.diff.txt
    1.5 KB · Aufrufe: 8
Zuletzt bearbeitet:
Ich benutze einen Technotrend CT2-4400 USB Stick. Der verwendet nur Bulk Transfers und keine isochronen.
Die benötigten Module sind nicht bereits in der Firmware drin (dvb-core, dvb-usb-dvbsky, dvb_usb_v2, m88ds3103, si2157, si2168).
 
mjam, njam... danke.
nu noch dvb-s2 bulk transfer karte(n) in die liste.... ;)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.