C't-VDR - DVB-S2 und h264 - Step by Step Installationsanleitung (Achtung Beta)

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Einleitung

Dieser Artikel ist ein Anpassung von OpenSUSE VDR DVB-S2 an das C't-VDR Debian System. Allerdings wird hier statt einer Softwarelösung mit Xine eine H264-Hardware-Decoder-Karte (Reel HD-Extension PCI) genutzt.

Weitere Quellen:

Die Infos zum Erstellen des Reelbox-Plugins und zum Initialisieren der HD-Karte wurde der Seite HDTV_eHD entnommen. Der Patch für den VDR stammt von der VDR-Mailingliste. Der hdplayer wurde aus dem Thread HD Externsion im VDR aktueller Stand des VDR Portal entnommen. Die VDR-Sourcen wurden aus dem E-Tobi-Repository geladen. Die DVB-S2 Sourcen für die Multiproto-Module stammen von hier, und die Reelbox-Sourcen aus dem Reelbox-Repository.

Die Anleitung geht davon aus, dass eine DVB-S2 fähige Karte, die sich über die Multiproto-Treiber ansteuern lässt, und eine Reel HD-Ext-PCI-Karte installiert sind.

Installations-CD

Für die Grundinstallation greift man am Besten auf eine der Installations-CDs zurück, die von der C't für einen VDR unter Debian gebaut werden. Diese können mit jigdo an den aktuellen Stand angepasst werden.

Erstellung des C't-VDR Grundsystems

Um möglichst einfach ein VDR-System installieren zu können, sollten sich VDR mit Betriebssystem und die Video- und Filmdateien auf getrennten Partitionen befinden. So kann recht einfach der VDR komplett aktualisiert werden, ohne dass das Videoarchiv neu aufgebaut werden muss. Tipp: Wenn die Video-Partition unter /var/lib/video eingebunden wird und dort sich die Verzeichnisse film und video befinden, kann mit

ln -s /var/lib/video/video /var/lib/video.00

sowohl das Filmarchiv unter /var/lib/video/film, als auch das Videoarchiv unter /var/lib/video.00 auf der zweiten Partition liegen. Für die VDR-Betriebspartition haben sich 4 GB als ausreichend herausgestellt.

Vorbereitung der Umgebung

Nach der erfolgreichen Installation des VDRs durch die CD kann das System für das Compilieren vorbereitet werden.

Quellen anpassen

Die Quelldatei sources.list für das Installationswerkzeug APT befindet sich im Verzeichnis /etc/apt/. Nach der Installation verweisen die Pfade auf die CD. Dies wird auf die Online-Quellen von E-Tobi und der C't umgeändert

cp /etc/apt/sources.list.online /etc/apt/sources.list

Damit auch die Quellen im Zugriff sind, muss die Datei sources.list noch um Einträge für die Dateisourcen ergänzt werden:

# Sourcen
deb-src http://e-tobi.net/vdr-experimental etch base backports addons vdr-standard
deb-src http://e-tobi.net/vdrdevel-experimental etch vdr-standard
deb-src http://ftp2.de.debian.org/debian etch main non-free contrib
deb-src http://security.debian.org/ etch/updates main contrib non-free

System aktualisieren

Im Anschluß kann das System auf den neuesten Stand gebracht werden:

apt-get update
apt-get install e-tobi-keyring && apt-get update
apt-get upgrade

Falls beim Update ein neuer Kernel kommt, sollte danach noch der Rechner rebootet werden.

Installieren der Programme zum Arbeiten

Jetzt kommen die ganzen zum Compilieren notwendigen Programme und Bibliotheken in das System, die sich unter Debian recht einfach mit apt-get installieren lassen.

apt-get install ssh build-essential mercurial subversion vim apt-file openssl \
libssl-dev locales language-env linux-source-2.6.18 kernel-package fakeroot \
less g++ tftpd libmad0-dev alsa libasound2-dev alsa-utils libpng12-dev dh-make screen

Konfigurieren der Programme

Der neue VDR benötigt eine konfigurierte Sprachumgebung, sonst läuft er nur auf Englisch (VDR 1.5.x und Sprache):

dpkg-reconfigure locales

Für das "zukünftige" Reelbox-Plugin muss die ALSA-Soundumgebung konfiguriert werden:

alsaconf

(Optional) Wer beim Editieren der Dateien Wert auf Syntax-Highlighting legt, kann dies für den VIM in /usr/share/vim/vimrc einstellen.

Das Werkzeug apt-file erlaubt es, im Debian-Archiv zu suchen, in welchem Paket welche Datei zu finden ist. (Wichtig beim Compilieren, wenn was fehlt!) Dafür muss apt-file auf den aktuellen Stand gebracht werden:

apt-file update

Entfernen des Alt-VDR

Jetzt werden der vorhandene VDR und die VDR-Plugins entfernt:

apt-get remove vdr vdrdevel

Kernel Header Files

Als letztes müssen noch die header und kbuild Pakete installiert werden:

vdr:/tmp# apt-get install linux-headers

Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Paket linux-headers ist ein virtuelles Paket, das bereitgestellt wird von:
 linux-headers-2.6.22-4-vserver-k7 2.6.22-6~bpo40+2
 linux-headers-2.6.22-4-vserver-686 2.6.22-6~bpo40+2
 linux-headers-2.6.22-4-vserver 2.6.22-6~bpo40+2
 linux-headers-2.6.22-4-k7 2.6.22-6~bpo40+2
 linux-headers-2.6.22-4-amd64 2.6.22-6~bpo40+2
 linux-headers-2.6.22-4-686-bigmem 2.6.22-6~bpo40+2
 linux-headers-2.6.22-4-686 2.6.22-6~bpo40+2
 linux-headers-2.6.22-4-486 2.6.22-6~bpo40+2
 linux-headers-2.6.22-4 2.6.22-6~bpo40+2
 linux-headers-2.6.18-6-xen-vserver-686 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6-xen-vserver 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6-xen-686 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6-xen 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6-vserver-k7 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6-vserver-686 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6-vserver 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6-k7 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6-amd64 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6-686-bigmem 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6-686 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6-486 2.6.18.dfsg.1-18etch1
 linux-headers-2.6.18-6 2.6.18.dfsg.1-18etch1
 linux-headers-2.6-xen-vserver-686 2.6.18+6etch3
 linux-headers-2.6-xen-686 2.6.18+6etch3
 linux-headers-2.6-vserver-k7 2.6.18+6etch3
 linux-headers-2.6-vserver-686 2.6.18+6etch3
 linux-headers-2.6-k7 2.6.18+6etch3
 linux-headers-2.6-amd64 2.6.18+6etch3
 linux-headers-2.6-686-bigmem 2.6.18+6etch3
 linux-headers-2.6-686 2.6.18+6etch3
 linux-headers-2.6-486 2.6.18+6etch3
Sie sollten eines explizit zum Installieren auswählen.

Das tun wir dann auch. Wer sich unsicher ist, welchen Kernel er installiert hat kann das mit:

uname -r

schnell testen und dann das entsprechende Paket installieren:

apt-get install linux-headers-2.6.22-4-486

Erstellen der DVB-S2 Module

Hinweis
Hinweis

Dies ist keine Debian-Art


Laden der Programm-Quellen.

cd /usr/src && mkdir dvb && cd dvb && hg clone http://jusst.de/hg/multiproto

Editieren einer Datei, um das Debug-Protokollieren zu verringern. In der Datei /usr/src/dvb/multiproto/linux/drivers/media/dvb/frontends/stb0899_drv.c in der Zeile 34 "static unsigned int verbose = 5;" die 5 in 0 ändern.

Compilieren der Sourcen

cd /usr/src/dvb/multiproto && make distclean && make && make install && make makelinks

Kopieren der Headerfiles in die Include-Verzeichnisse (Achtung, das ist "pfuschen"!)

cp /usr/src/dvb/multiproto/linux/include/linux/dvb/*.h /usr/include/linux/dvb/

Bauen des HD-VDR

Jetzt sind alle Vorbereitungen fertig und der VDR kann gebaut werden. Dazu werden die Sourcen geladen und der DVB-S2-H264 Patch debianisiert und eingebaut.

Laden der VDR-Sourcen und installieren der für das Bauen notwendigen Programme.

cd /usr/src && apt-get source vdr && apt-get build-dep vdr

Der DVB-S2-H264 Patch wurde aus vdr-1.5.12-dvbs2-h264-syncearly-framespersec-audioindexer-fielddetection.diff.bz2 erstellt. Dazu musste noch ein Header davor gesetzt werden.

#! /bin/sh /usr/share/dpatch/dpatch-run
## 07_dvbs2-h264-syncearly-framespersec.dpatch
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: This sets the default svdrp-port to 0, which means that
## DP: SVDRP is disabled by default unless someone specifies
## DP: another port with the --port option when starting vdr
@DPATCH@

Das Ergebnis kann dann als Datei 07_dvbs2-h264-syncearly-framespersec.dpatch im Verzeichnis /usr/src/vdr-1.5.12/debian/patches gespeichert werden.

Jetzt muss noch die eingestellt werden, welche Patches überhaupt mit eincompiliert werden. Dies wird in der Datei /usr/src/vdr-1.5.12/debian/patches/00list eingestellt. Je nach Geschmack können hier Patches aktiviert und deaktiviert werden. Bisher beisst sich der 10_dd-record-option Patch noch mit dem 07_dvbs2-h264-syncearly-framespersec.

Jetzt kann der VDR gebaut werden.

cd /usr/src/vdr-1.5.12 && dpkg-buildpackage

Im Anschluß wird das Paket für die Entwicklungsumgebung installiert, damit im Anschluß die Plugins sich richtig compilieren lassen.

cd /usr/src && dpkg -i vdr-dev_1.5.12-1devel1_all.deb

Bauen der VDR-Plugins

Nach dem VDR werden die Plugins gebaut.

Laden der Sourcen und abhängigen Programme mit apt-get.

cd /usr/src && apt-get source vdr-plugin-remote vdr-plugin-live vdr-plugin-clock vdr-plugin-undelete vdr-plugin-epgsearch vdr-plugin-femon vdr-plugin-timeline
cd /usr/src && apt-get build-dep vdr-plugin-remote vdr-plugin-live vdr-plugin-clock vdr-plugin-undelete vdr-plugin-epgsearch vdr-plugin-femon vdr-plugin-timeline

Das vdr-remote-plugin muss noch angepasst werden. Dazu ist in in /usr/src/vdr-plugin-remote--0.4.0/debian/rules die Zeile

mkdir locale

auskommiert werden.

Erstellen der Reelbox--Plugin

Die Anleitung wurde aus HDTV_eHD entnommen und für Debian angepasst.

Zuerst wird das Reelbox-Archiv ausgecheckt. Da dies sehr groß werden kann empfiehlt es sich hier die Video-Partition zu "missbrauchen".

cd <freier_Platz>
svn co svn://reelbox.org

hdshm Modul erstellen

Hinweis
Hinweis

Dies ist keine Debian-Art


Jetzt muss das Modul für die Reelbox HD-Extension Karte gebaut werden.

cd <freier_Platz>/reelbox.org/testing/src/utils/hdshm

Das Modul compilieren.

make clean 
make x86

Plugin debianisieren

Das eigentlich VDR-Plugin lässt sich sauber debianisieren. Die nachfolgende Anleitung macht nur das allernötigste, d. h. alle eigentlich noch zu füllende Dateien für Autor, Quelle usw. sind leer. Aber für das Beispiel reicht es.

Kopieren des Plugins.

cp -r <freier_Platz>/reelbox.org/testing/src/vdr-plugins/src/reelbox-1.9 vdr-plugin-reelbox-1.9

Kopieren des utils Verzeichnis (wird beim Compilieren benötigt)

cd /usr/src/vdr-plugin-reelbox-1.9 && cp -r <freier_Platz>/reelbox.org/testing/src/utils /usr/src/vdr-plugin-reelbox-1.9/utils

Erstellen des Debian-Grundgerüsts. Bei der Frage wird "s" für "single binary" ausgewählt.

dh_make

Jetzt wird das debian-Verzeichnis gepflegt. Zuerst Alles löschen, was nicht benötigt wird.

cd /usr/src/vdr-plugin-reelbox-1.9/debian/ && rm cron.d.ex dirs emacsen-install.ex emacsen-remove.ex emacsen-startup.ex init.d.ex manpage.1.ex manpage.sgml.ex manpage.xml.ex menu.ex postinst.ex postrm.ex preinst.ex prerm.ex vdr-plugin-reelbox-default.ex vdr-plugin-reelbox.doc-base.EX watch.ex

Eine Datei /usr/src/vdr-plugin-reelbox-1.9/debian/install mit dem Inhalt

libvdr-reelbox.so.*    usr/lib/vdr/plugins/

wird erstellt. Damit wird angegeben, welche Ergebnisse in das Debianpaket mit übernommen werden sollen (hier die libvdr-reelbox.so.* Bibliothek) und wo diese später hin kopiert werden müssen (usr/lib/vdr/plugins/)

Die debian/rules Datei wird aus dem vdr-plugin-clock "geklaut"

cp /usr/src/vdr-plugin-clock-0.0.6/debian/rules /usr/src/vdr-plugin-reelbox-1.9/debian/rules  

Jetzt müssen die Patches für das Reelbox-Plugin erstellt werden, damit dieses mit dem "normalen" VDR und nicht der Reelbox läuft. Hier bei wurde der Patch vdr-1.5.10-reelbox-1.9.diff an den aktuellen SVN-Code angepasst (bzip2-Archiv mit Patches). Aufgrund des neueren GCC Compilers wird ein weiterer Patch für die Datei Mutex.h benötigt.

Erstellen des Patchverzeichnisses

mkdir /usr/src/vdr-plugin-reelbox-1.9/debian/patches

Kopieren der Patches 02_Mutex.dpatch und 05_Reelboxpatch.dpatch in die 00list-Datei

vi /usr/src/vdr-plugin-reelbox-1.9/debian/patches/00list

Inhalt

02_Mutex
05_Reelboxpatch

Damit ist der Bau des Reelbox-Debian-Paketes fertig.

Bauen der Plugins

Jetzt können die VDR-Plugins erstellt werden.

cd /usr/src/vdr-plugin-remote-0.4.0 && dpkg-buildpackage -tc && cd ..
cd /usr/src/vdr-plugin-live-0.1.0 && dpkg-buildpackage -tc && cd ..
cd /usr/src/vdr-plugin-clock-0.0.6 && dpkg-buildpackage -tc && cd ..     
cd /usr/src/vdr-plugin-undelete-0.0.6 && dpkg-buildpackage -tc && cd ..
cd /usr/src/vdr-plugin-epgsearch-0.9.24~beta3 && dpkg-buildpackage -tc && cd ..
cd /usr/src/vdr-plugin-femon-1.2.2 && dpkg-buildpackage -tc && cd ..
cd /usr/src/vdr-plugin-timeline-1.0.141 && dpkg-buildpackage -tc && cd ..
cd /usr/src/vdr-plugin-reelbox-1.9 && dpkg-buildpackage -tc && cd ..

Installieren des VDR mit Plugins

Zuletzt werden der VDR und die Plugins installiert.

cd /usr/src
dpkg -i vdr_1.5.12-1devel1_i386.deb 
dpkg -i vdr-plugin-remote_0.4.0-6_i386.deb 
dpkg -i vdr-plugin-live_0.1.0-10_i386.deb 
dpkg -i vdr-plugin-clock_0.0.6-13_i386.deb 
dpkg -i vdr-plugin-undelete_0.0.6-20_i386.deb 
dpkg -i vdr-plugin-epgsearch_0.9.24~beta3-4_i386.deb 
dpkg -i vdr-plugin-femon_1.2.2-1devel3_i386.deb 
dpkg -i vdr-plugin-timeline_1.0.141-15_i386.deb 
dpkg -i vdr-plugin-reelbox_1.9-0_i386.deb

Sonstige Vorbereitungen

Erstellen der HD-Ext Startkonfiguration

Die HD-Ext-Karte wird mit einem kleinen Linux-Kernel gestartet. Dieses lädt das Modul in den VDR und das Startimage in die Karte.

Datei "/etc/init.d/start_hd"

#!/bin/sh
cd  <freier_Platz>/reelbox.org
. <freier_Platz>/reelbox.org/testing/src/etc/default/hdboot
insmod <freier_Platz>/reelbox.org/testing/src/utils/hdshm/x86/driver/hdshm.ko
sleep 2
<freier_Platz>/reelbox.org/testing/src/utils/hdshm/x86/hdboot/hdboot -e $KERNEL_ENTRY
/usr/bin/screen -d -m <freier_Platz>/reelbox.org/testing/src/utils/hdshm/x86/shmnetd/shmnetd
sleep 20

Für das Startimage hat sich die SVN-Version r4569 aus dem Reel-SVB Repository als stabil heraus gestellt. Damit ändert sich auch die Startadresse in der Datei <freier_Platz>/reelbox.org/testing/src/etc/default/hdboot.

start address is 0x80352000

Jetzt wird das Startverzeichnis für den HDPlayer erstellt. Das ist der H264 Player, der auf der HD-ext Karte arbeitet und die Daten darstellt.

mkdir -p /tftpboot/hdplayer

Für den HDPlayer wird am besten die gepatchte Version aus dem VDR Portal benutzt. Diese muss noch ausgepackt werden.

gzip -d hdplayer.gz

und in das Verzeichnis /tftpboot/hdplayer verschoben werden

cp hdplayer /tftpboot/hdplayer/hdplayer

Damit der TFTP-Server auch den Zugriff zulässt muss noch die Datei "/etc/inetd.conf" geändert werden. Hier ist die Zeile mit tftp zu Beginn wie folgt zu ändern:

tftp            dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /tftpboot

Testen der Startkonfiguration

TFTP-Server und Verzeichnis

Zum Testen kann man schnell lokal den hdplayer mit tftp herunterladen:

apt-get install tftp (falls noch nicht installiert)
tftp localhost
get /hdplayer/hdplayer

Als Ergebnis sollte

Received 139561 bytes in 0.1 seconds

zu sehen sein.

HD-Karte mit Linux-Image

Zum Testen der HD-Karte mit dem Linux-Image empfielt es sich die Befehle des Startskriptes "/etc/init.d/start_hd" per Hand Stück für Stück durchzuführen. Hat alles funktioniert, sieht man den Startbildschirm der Reelbox über den HDMI-Eingang. Daneben hat der VDR-Rechner ein weiteres Netzwerkinterface. Mit ifconfig sollte ein "tun0" Device zu sehen sein. Falls das nicht klappt, sollte im VDR Portal gesucht werden. Z.B. in HD Externsion im VDR aktueller Stand und Reel Box EXTENSION HD. Ein wichtiger Hinweis, dass das Linux der HD-Ext Karte hochgefahren ist, kann das Anpingen

ping 192.168.99.129

zeigen. Ansonsten existiert auch noch ein Reelbox-Forum, in dem die Entwickler selber helfen.

Hinweis
Hinweis

Die Karte und der VDR kommunizieren im 192.168.99.x Netzwerk. Es ist daher eine sehr gute Idee, das eigene Netzwerk NICHT in der gleichen Zone 192.168.99.x laufen zu lassen!


VDR mit Reelbox-Plugin

Wenn alle übrigen Tests erfolgreich verlaufen sind, kann der VDR mit

vdr -Preelbox

gestartet werden. Die Menüführung sollte über die Tastatur gehen. Wenn alles klappt

>> Herzlichen Glückwunsch zum eigenen HD-Player/-Recorder <<