© 2001 - 2014 Hubertus Sandmann


Version: 0.7.53
Stand: 22.03.2014

nach untenEinleitung
nach untenVoraussetzungen
nach untenDVB-Treiber
nach untenVDR-Software
nach untenFehlersuche
nach untenAusblick

Einleitung

nach oben 

Für den Aufbau des Festplatten-Videorecorders (Video Disk Recorder) auf der Basis von Linux und der Software VDR von Klaus Schmidinger reicht prinzipiell ein PC mit Minimalausstattung, welcher für die verwendete Distribution ausreichend ist. In jedem Fall braucht man eine oder mehrere DVB-Karten zum Empfang von digitalen TV-Austrahlungen, entweder per Satellit (DVB-S/S2), kabelgestützt (DVB-C) oder terrestrisch (DVB-T). Auch ein gemischter Betrieb ist möglich. HDTV ist in Deutschland auf terrestrischem Wege vorerst nicht vorgesehen. In die Kabelnetze wird es hingegen bereits eingespeist. Für den Empfang von HDTV-Signalen über Satellit benötigt man mindestens eine Karte, die den im Vergleich zu DVB-S effizienteren Übertragungsstandard DVB-S2 beherrscht.

Im einfachsten Fall muss es sich bei mindestes einer der Karten um eine so genannte Full-Featured-Karte mit aktivem Decoderchip handeln. Diese aktive Karte muss die rechenintensive Dekodierung der komprimierten Signale für MPEG-2 bei SDTV und MPEG-4 AVC (H.264) bei HDTV erledigen und entlastet den Rechner, der bei dieser Konstellation vergleichsweise schwachbrüstig ausfallen kann. Die Ausgabe von Bild und Ton erfolgt dann direkt über die HDMI-Buchse dieser Karte. Für die übrigen Karten lassen sich dann preiswertere, so genannte Budget-Karten nutzen.

Die Steuerung kann vollständig per Fernbedienung an Hand eines ins Bild eingeblendeten Menüs (OSD) erfolgen. Aufnahmen von digitalen TV-Sendungen lassen sich komfortabel auf der Basis der vom EPG (Electronic Programm Guide) übermittelten Daten realisieren. Ebenfalls ist ein Videoschnitt um z. B. Werbeeinblendungen in den digitalen Aufnahmen auszublenden möglich. Mit der Hilfe von Plugins und Addons lässt sich der Funktionsumfang nahezu beliebig erweitern. So lassen sich beispielsweise SD-Aufnahmen auf DVD brennen und auch das Streamen im Netzwerk realisieren.

Dieses Dokument beinhaltet die Beschreibung zur Installation der aktuellen stabilen Version 2. Sie bietet erstmals die grundsätzliche Unterstützung für hochauflösendes Fernsehen. Diese Anleitung baut speziell auf die für die direkte Ausgabe von HDTV-Signalen mit der DVB-Karte selbst notwendige TT-Premium S2-6400 Dual HD auf. Es soll hier nicht unterschlagen werden, dass diese Karte die einzige für den VDR geeignete verfügbare Full-Featured-DVB-S2-Karte ist. Sie wurde nur in geringer Stückzahl gefertigt und ist derzeit wohl nur noch auf dem Gebrauchtmarkt aufzutreiben.


Voraussetzungen

nach oben 

Ich verwende als Grundlage für meinen VDR eine openSUSE-13.1-Distribution in der 64-Bit-Variante. Es müssen noch die passenden Kernelquellen nachinstalliert werden. Gleiches gilt für diverse Tools sowie natürlich der Compiler zum Übersetzen von Quelltexten.


zypper install make automake autoconf gcc-c++ kernel-devel mercurial

Ebenfalls ist zu diesem Zweck noch eine Erweiterung für Perl nachzuinstallieren mittels:

cpan Proc::ProcessTable

Bei dieser Distribution ist eine ältere Version von vdr bereits vorhanden, aber diese ist für HDTV nicht geeignet. Daher löscht man das Paket gleich komplett und führt stattdessen die nachfolgendend beschriebenen Installationsschritte als Systemadministrator root durch.


DVB-Treiber (HDFF)

nach oben 

Geeignete Treiber für die DVB-S2-Karte TT-Premium S2-6400 Dual HD sind im Kernel der Version 3.11 noch nicht enthalten. Daher braucht man den entprechenden Treiber von http://powarman.dyndns.org/hgwebdir.cgi/v4l-dvb-saa716x/ . Neben anderen experimentellen Treibern wird das jeweils aktuellste Treiberpaket für diesen Kartentyp auf nachfolgende Weise recht komfortabel installiert:


cd /usr/local/src

hg clone http://linuxtv.org/hg/~endriss/media_build_experimental

ln -nfs media_build_experimental DVB

cd DVB

make download

make untar

patch -p0 -i ../stb0899.diff

make

make install

Bei dieser Gelegenheit wird auch ein Patch eingespielt, damit bei DVB-Karten wie beispielsweise der TT-Budget S2-3200 auch die Werte für die Signalstärke und Qualität im VDR-Menü angezeigt werden.


Auch die speziellen Firmwaredateien für die DVB-S2-Karte TT-Premium S2-6400 Dual HD müssen separat von http://www.aregel.de downgeloaded und in das dafür vorgesehene Verzeichnis installiert werden:


unzip -o dvb-ttpremium-st7109-01_v0_4_1.zip -d /lib/firmware

unzip -o dvb-ttpremium-loader-01_v1_03.zip -d /lib/firmware

unzip -o dvb-ttpremium-fpga-01_v1_09.zip -d /lib/firmware


Bitte beachten: Man muss an der entsprechenden Buchse auf der Stirnseite dieser Karte ein SATA-Stromversorgungskabel anschließen, damit sie ordnungsgemäß funktioniert!


Danach ist der Rechner neu zu booten. Im Anschluss kann das entsprechende Treibermodul dann probehalber geladen werden. Ich muss hier eine zusätzliche Option für die Interruptverabeitung mitgeben, da die Voreinstellung zumindest auf meinem Board ASUS P5KPL/EPU schwere Abstürze verursacht!


modprobe saa716x_ff int_type=1

Ein Sender wird zu diesem Zeitpunkt noch nicht eingestellt, sondern erst später mit dem erfolgreichen Start der VDR-Software. Man kann aber durchaus einen kurzen Blick in die Logdatei werfen:


dmesg

Bitte grundsätzlich immer beide Sat-Eingänge der Karte beschalten, bevor man unnötig auf Fehlersuche geht!


Damit der Treiber zukünftig grundsätzlich mit der richtigen Interrupt-Option geladen wird und auch der Grab-Befehl funktioniert, ist in der Datei /etc/modprobe.d/99-local.conf noch folgender Inhalt zu ergänzen:


# SAA716x_ff
# parm: int_type:force Interrupt Handler type: 
#       0=INT-A, 1=MSI, 2=MSI-X. default INT-A mode (int)
# parm: int_count_enable: enable counting of interrupts (int)
# parm: verbose: verbose startup messages, default is 1 (yes) (int)
# parm: video_capture:capture digital video coming from STi7109: 0=off, 1=one-shot. default off (int)

options saa716x_ff int_type=1 video_capture=1



Bitte beachten: Eine erneute Installation des Treiberpaketes ist grundsätzlich bei jedem Kernelupdate bzw. zum Einspielen einer neuen Treiberversion notwendig! Dabei geht man dann im Prinzip folgendermaßen vor:


cd /usr/local/src/DVB

hg pull -u

make distclean

make download

make untar

patch -p0 -N -i ../stb0899.diff

make

make install

reboot

Noch ein Hinweis: Mit dem Aufruf make rminstall werden die neuen Treibermodule wieder entfernt und stattdessen werden dann wieder die Originaltreiber des Kernels genutzt.



VDR-Software

nach oben 

Vor der Übersetzung des Quelltextes der eigentlichen VDR-Software sind noch folgende Pakete incl. ggf. notwendiger Abhängigkeiten nachzuinstallieren.


zypper install fontconfig-devel freetype2-devel libjpeg-devel ncurses-devel libcap-devel gettext-tools


Die aktuelle Version der VDR-Software kann von ftp://ftp.tvdr.de/vdr/ downgeloaded werden. Das Entpacken der Quelltexte erfolgt in diesem Beispiel aus dem dafür geeigneten Verzeichnis /usr/local/src heraus.


cd /usr/local/src

tar xjf vdr-2.0.6.tar.bz2

ln -nfs vdr-2.0.6 VDR

cd VDR

cp Make.config.template Make.config

Hinweis: Für die neue Version 2 wurde das Installationskonzept der VDR-Software und der zugehörigen VDR-Plugins umgestellt. Zurzeit ist allerdings noch die Unterstützung für die "alten" Makefiles der Plugins gewährleistet.


Aus Bequemlichkeit für weitere Übersetzungen und Installationen der VDR-Software sowie weitere Plugins wird die Datei Make.config zuvor noch angepasst.


### The directory environment:

PREFIX     = /usr/local
BINDIR     = $(PREFIX)/bin
MANDIR     = $(PREFIX)/share/man
RESDIR     = $(PREFIX)/share/vdr
LOCDIR     = $(PREFIX)/share/locale
LIBDIR     = $(PREFIX)/lib/vdr
INCDIR     = $(PREFIX)/include

CACHEDIR   = /var/cache/vdr
CONFDIR    = /etc/vdr
VIDEODIR   = /video


Die VDR-Software wird zwar mit einem Plugin namens dvdhddevice für die Ausgabe über die DVB-Karte des Typs TT-Premium S2-6400 Dual HD ausgestattet, aber es ist nicht unbedingt gewährleistet, dass es sich dabei immer um die aktuellste handelt. Also gilt es, diese ggf. durch eine neuere Version des Plugins von http://powarman.dyndns.org/hgwebdir.cgi/dvbhddevice/ bzw. https://bitbucket.org/powARman/dvbhddevice/ zu ersetzen:


cd /usr/local/src

unzip -o dvbhddevice-60c58ae453d0.zip -d VDR/PLUGINS/src

cd VDR/PLUGINS/src

rm -rf dvbhddevice

ln -nfs dvbhddevice-60c58ae453d0 dvbhddevice

cd /usr/local/src/VDR

make clean-plugins

rm -f /usr/local/lib/vdr/*

Zur Sicherheit werden hier auch noch eventuelle Überreste vorher erstellter Libraries entfernt.


Bei der abschließenden Installation der VDR-Software wird das fertig kompilierte Binary vdr in das Verzeichnis /usr/local/bin kopiert. Das Verzeichnis /video wird bei der Installation automatisch erzeugt, sofern es nicht bereits vorher existierte. Hierin werden später die aufgezeichneteten Video-Dateien gespeichert. Die entsprechende Partition sollte daher ausreichend groß sein. Die Bibliotheken der erzeugten Plugins werden dabei nach /usr/local/lib/vdr kopiert. Auch das Konfigurationsverzeichnis /etc/vdr wird beim Installationsprozess automatisch angelegt und mit den Vorlagedateien befüllt. An diesen Konfigationsdateien müssen normalerweise keine Änderungen vorgenommen werden. Im Nachhinein wird hier noch ein Unterverzeichnis für Konfigurationsdateien von ggf. später genutzten Plugins angelegt. Ebenfalls wird eine Beispieldatei herangezogen, welche für den Start der VDR-Software später noch angepasst werden muss.


cd /usr/local/src/VDR

make 

make install

mkdir -p /etc/vdr/plugins

cp runvdr.template /usr/local/bin/runvdr


Für die Bedienung ist zunächst die Steuerung mit der Tastatur vorgesehen. Beim ersten Aufruf der VDR-Software geht das Programm in den Lernmodus um die Tasten zur Steuerung der VDR-Funktionen wunschgemäß zuzuordnen. Während der Lernphase kann man Korrekturen durchführen oder vorzeitig abbrechen. Das Ergebnis wird dann in der Datei /etc/vdr/remote.conf gespeichert. Möchte man sich das Anlernen sparen, lässt sich auch diese Beispieldatei mit den wichtigsten Funktionen verwenden. Der Inhalt stimmt mit der in der Dokumentation des VDR empfohlenen Belegung für die Tastatursteuerung überein. Für ein erneutes Anlernen kann man die Datei einfach löschen und VDR geht wieder in den Lernmodus.


KBD.Up         00000000001B4F41
KBD.Down       00000000001B4F42
KBD.Menu       000000001B5B317E
KBD.Ok         000000000000000D
KBD.Back       000000001B5B347E
KBD.Left       00000000001B4F44
KBD.Right      00000000001B4F43
KBD.Red        00000000001B4F50
KBD.Green      00000000001B4F51
KBD.Yellow     00000000001B4F52
KBD.Blue       00000000001B4F53
KBD.0          0000000000000030
KBD.1          0000000000000031
KBD.2          0000000000000032
KBD.3          0000000000000033
KBD.4          0000000000000034
KBD.5          0000000000000035
KBD.6          0000000000000036
KBD.7          0000000000000037
KBD.8          0000000000000038
KBD.9          0000000000000039
KBD.Power      0000000000000070
KBD.Volume+    000000000000002B
KBD.Volume-    000000000000002D
KBD.Mute       000000000000006D


Testweise kann man jetzt die Software aus dem aktuellen Verzeichnis heraus aufrufen und kann mit der Tastatur bedienen. Die VDR-Software wird bereits im Auslieferungszustand mit einem Plugin namens dvdhddevice für die Ausgabe über die DVB-Karte des Typs TT-Premium S2-6400 Dual HD ausgestattet. Dieses wird beim Aufruf aus einem Konsolenfenster heraus mitgestartet. Zuvor wird noch die Umgebungsvariable für deutsche Sprache, aber englische Fehlermeldungen, gesetzt:


export LC_COLLATE=de_DE 

/usr/local/bin/vdr -P dvbhddevice

Zum Beenden des Tests verwendet man die Tastenkombination STRG+c.


Die VDR-Software bietet die praktische Möglichkeit den Rechner nach einer bestimmten Zeit der Inaktivität und wenn keine Aufnahmen anstehen den Rechner automatisch oder aber auch per Tastendruck herunterzufahren. Man erstellt dazu lediglich ein kleines Skript, welches diese Aufgabe erledigt und beispielsweise unter dem Namen vdrpoweroff.sh im Verzeichnis /usr/local/bin angelegt wird und folgenden Inhalt hat:


#!/bin/sh

exec poweroff

Das Skript muss noch ausführbar gemacht werden.

chmod +x /usr/local/bin/vdrpoweroff.sh


Die VDR-Software startet nur, wenn auch die DVB-Treiber geladen sind. Ein geeigneter Weg dies zu gewährleisten ist, das Skript /usr/local/bin/runvdr dafür zu nutzen. Ruft man dieses als root auf, lädt es die Treiber bei Bedarf automatisch und startet dann die VDR-Software. Ausserdem sorgt es durch Aktivieren der internen Watchdog-Funktion dafür, dass eine im Fehlerfall abgestürzte VDR-Software und auch die DVB-Treiber im Bedarfsfall selbstständig innerhalb einer Minute wieder neu gestartet werden. Ebenso nutzt man das freie Terminal 8 als kontrollierendes Terminal. Ebenso wird hier noch das temporäre Verzeichnis für den Grab-Befehl zum Erstellen von Snapshots definiert. Dazu macht man die notwendigen Ergänzungen und Änderungen in der Datei /usr/local/bin/runvdr. Hierbei passt man u. a. auch die Pfade zum Startskript der DVB-Treiber und zum VDR-Programm an.


export LANG=de_DE

VDRPRG="/usr/local/bin/vdr"

VDROPTIONS="-t /dev/tty8 -w 60 -g /tmp \
            -s /usr/local/bin/vdrpoweroff.sh"

VDRPLUGINS="-P dvbhddevice"

VDRCMD="$VDRPRG $VDROPTIONS $VDRPLUGINS $*"  

KILL="/usr/bin/killall -q -TERM"   


# Detect whether the DVB driver is already loaded
# and return 0 if it *is* loaded, 1 if not:
function DriverLoaded()
{
  return 1
}

# Load all DVB driver modules needed for your hardware:
function LoadDriver()
{
  /sbin/modprobe saa716x_ff
}

# Unload all DVB driver modules loaded in LoadDriver():
function UnloadDriver()
{
  /sbin/modprobe -r saa716x_ff
}

# Load driver if it hasn't been loaded already:
if ! DriverLoaded; then
   LoadDriver
   fi

while (true) do
      eval "$VDRCMD"
      if test $? -eq 0 -o $? -eq 2; then exit; fi
      echo "`date` reloading DVB driver"
      $KILL $VDRPRG
      sleep 10
      UnloadDriver
      LoadDriver
      echo "`date` restarting VDR"
      done

Hier wird die VDR-Software mit den allumfassenden Rechten des Superusers root ausgeführt. Solange der Rechner nicht ohne Firewall ständig mit dem Internet verbunden ist, dürfte diese Vorgehensweise vertretbar sein.


Testweise kann man jetzt das Startskript als root aufrufen.


/usr/local/bin/runvdr


Damit nun auch die VDR-Software samt DVB-Treiber automatisch bei jedem Hochfahren des Rechners startet, fügt man am Ende der Datei /etc/init.d/boot.local z. B. folgende Zeile hinzu.


# starting VDR
/usr/local/bin/runvdr


Fehlersuche

nach oben 

Zur Fehlersuche, sowohl beim Laden des DVB-Treibers als auch beim Betrieb der VDR-Software, ist ein Blick in die Logdatei sehr nützlich. Hierzu kann man als root die laufenden Meldungen in einer geöffneten Konsole mitlesen.


tail -f /var/log/messages

Als weitere Hilfestellung neben der beigefügten Dokumentation im Quellpaket wie README, INSTALL und MANUAL ist die Manpage auf dem System verfügbar und kann aufgerufen werden.

man vdr

Gleiches gilt für den Abschnitt 5 mit den Erläuterungen zum Format der einzelnen Konfigurationsdateien.

man 5 vdr

Weitere Hilfe lässt sich auch im deutschsprachigen VDR-Portal http://www.vdr-portal.de oder auch im VDR-Wiki http://www.vdr-wiki.de finden.


Ausblick

nach oben 

Das hier vorgestellte Konzept auf der Basis der Full-Featured-Karte TT-Premium S2-6400 Dual HD sollte keinesfalls als die einzige Möglichkeit angesehen werden, um den Video Disk Recorder für die Ausgabe von HDTV fit zu machen. Für diesen Zweck eignet sich insbesondere eine VDPAU-fähige Graphikkarte von Nvidia. Dieses manuell einzurichten ist aufgrund des Umfangs und der Komplexität so mancher Abhängigkeiten sehr mühsam und fehleranfällig. Hierfür gibt es aber darauf spezialisierte Distributionen.



© 2001 - 2014 Hubertus Sandmann