VDR: Fernseh-Server auf der Basis von Linux
Willemers Informatik-Ecke
VDR stellt einen Fernseh-Server auf der Basis von DVB-Geräten zur Verfügung. Es können Sendungen aufgenommen werden oder aber über das lokale Netzwerk gestreamt werden. Die Software unterstützt mehrere Karten parallel, so dass mehrere Sender gleichzeitig möglich sind.

Die Programmierung und Steuerung von VDR kann über ein Web-Interface erfolgen.

Ich selbst verwende DVB-S-Karten, habe aber auch parallel schon eine DVB-T-Karte laufen lassen.

Die Hardware

Die Leistungsfähigkeit des PCs ist nicht so wichtig.

Bis zu vier TV-Karten werden unterstützt. Die primäre Karte sollte eine “full-featured” Karte sein. Das bedeutet, dass sie einen MPEG-2-Decoder enthält.

Während man ansonsten gewohnt ist, dass sich Linux alle Treiber selbst zusammenstellt, ist bei einigen TV-Karten eine Firmware-Datei erforderlich. Um diese zu finden, geben Sie in der Suchmaschine das Stichwort "linux", gefolgt von der Typenbezeichnung der TV-Karte ein. Die heruntergeladene Datei mit der Endung .fw muss in das Verzeichnis /lib/firmware. Spätestens nach dem nächsten Reboot wird sie dann automatisch erkannt.

Installation von VDR

Als Standard-Paket ist das Paket vdr erforderlich. In der Regel wird man VDR über ein Web-Interface programmieren wollen. Das ermöglicht das Live-Plugin im Paket vdr-plugin-live.
apt-get install vdr vdr-plugin-live

Bei der Installation fragt das Paket, ob die eingebaute DVB-Karte für Satellit, Terrestrisch oder für Kabel geeignet ist.

Aufruf über das Web-Interface von Live

Man startet den Browser und gibt den Port 8008 des VDR-Servers ein. Liegt der VDR-Server auf dem gleichen Gerät, lautet die Adresse localhost:8008. Ansonsten wird die IP-Adresse oder der Server-Name - hier im Beispiel vdrserver - angegeben.

http://vdrserver:8008/
Es erscheint eine Anmeldemaske. Der Benutzer heißt admin und hat das Passwort live. Beides kann unter dem Punkt Einstellungen geändert werden.

Alternative vdradmin

Ein alternatives Web-Interface ist vdradmin und verwendet den Port 8001. Dazu wird das Paket vdradmin-am installiert.
apt install vdradmin-am
Um das Web-Interface zu aktivieren, muss zunächst in der Datei /etc/default/vdradmin-am die Zeile mit ENABLED auf 1 gestellt werden. Anschließend wird der Dämon über das Init-Skript gestartet.

# /etc/init.d/vdradmin-am start

Es wird Benutzer und Passwort eingefordert, das beides standardmäßig linvdr lautet und in der Datei /etc/vdradmin/vdradmin.conf geändert werden kann.

Sendersuche

In der Regel findet VDR inzwischen seine Sender selbst. Insofern hat der folgende Abschnitt eher historische Bewandnis.

Zur Sendersuche wird VDR heruntergefahren, da der Befehl scan den Zugriff auf den Tuner benötigt. Das Programm scan findet man im Paket dvb-apps.

# apt-get install dvb-apps
Um die DVB-T-Kanäle von Schleswig-Holstein zu bekommen, wird der folgende Befehl abgesetzt:
scan -a 0 -o vdr /usr/share/dvb/dvb-t/de-Schleswig-Holstein > /var/lib/vdr/channels.conf
Daraufhin wird über den Tuner nach den Kanälen gesucht und diese in die Datei channels.conf geschoben.

Der User vdr und die Festplattennutzung für Aufnahmen

Das Paket vdr legt bei der Installation einen Benutzer vdr an, der den Dämon betreibt und weder ein Heimatverzeichnis besitzt noch das Recht hat, sich anzumelden.

Da die aufgenommenen Dateien aber von vdr erzeugt werden, ist es ein naheliegender Gedanke, den Benutzer vdr auch dazu zu verwenden, auf diese Daten zuzugreifen. Die Vergabe der Rechte könnte natürlich dazu führen, dass VDR-Einstellungen verändert werden. Wer höhere Sicherheitsansprüche hat, kann eine entsprechende Gruppe gründen und mit zwei Benutzern arbeiten.

Änderungen in der /etc/passwd

Der Eintrag in der /etc/passwd sollte nach der Änderung folgendes Aussehen haben:
vdr:x:115:123:VDR user,,,:/home/vdr:/bin/bash

Nun wird das Passwort und ein Heimatverzeichnis eingerichtet. Dabei wird gleich ein Unterverzeichnis video.00 für die Aufnahmen angelegt.

# passwd vdr
Geben Sie ein neues UNIX-Passwort ein: 
Geben Sie das neue UNIX-Passwort erneut ein: 
passwd: Passwort erfolgreich geändert
# mkdir /home/vdr
# mkdir /home/vdr/video.00
# chown vdr /home/vdr/
# chown vdr /home/vdr/video.00/

Mount und /etc/fstab

Damit die Aufnahmen auf ein anderes Dateisysetm laufen, wurde /dev/sdb5 im Verzeichnis eingehängt.
/dev/sdb5       /var/lib/video.00   ext4    errors=remount-ro 0       0
/var/lib/video.00 /home/vdr/video.00   none bind
Der Bind bewirkt, dass das Verzeichnis auch im Pfad /home/vdr zugreifbar ist. Dies wird vor allem für den FTP-Server benötigt.

VDR direkt ansehen

VDR Verwendet den Video-Ausgang der primären TV-Karte für die Darstellung der Menüs.

Das gleichzeitige Sehen und Aufnehmen über eine DVB-S-Karte ist möglich, sofern der Transponder übereinstimmt.

Zugriff von außen ermöglichen

Wartungszugang SSH

Will man den VDR-Server ohne Monitor und Tastatur betreiben, ist ein SSH-Zugang sinnvoll.
apt-get install openssh-server

FTP-Zugriff

Durch den Einsatz eines FTP-Servers ist es möglich, die Filme über das Netzwerk aus dem VDR-Server herauszuholen. Gegenüber SAMBA hat FTP den Vorteil, eine schnellere und zuverlässigere Übertragung zu ermöglichen, was bei großen Dateien entscheidend sein kann.

Die Installation ist sehr einfach. Es braucht nur das Paket proftpd-basic installiert zu werden und bei der Installation angegeben zu werden, dass der FTP-Server im Servermodus starten möge, wie es die Vorgabe ist.

Die Benutzerrechte werden einfach von Linux übernommen. So kann der Benutzer vdr die aufgenommenen Filme herauskopieren und auf dem Server löschen.

SAMBA

Auch wenn sogar Windows-Rechner mit FTP klarkommen, ist es für das Handling vielleicht doch einfacher, das Paket SAMBA zu installieren. Die Übertragung ist zwar langsamer, aber dafür ist der Zugriff für den Laien einfacher zu gestalten. Es ist sogar möglich, die Filme direkt vom Server aus zu betrachten. Der Installationsaufruf lautet:
# apt-get install samba
Unter [global] wird kann workgroup auf die im Netzwerk verwendete Gruppe umgestellt werden. Das ist aber eigentlich nur bei Windows-Netzen von Bedeutung. Wichtiger ist die Einstellung der Benutzer. Security wird auf user geschaltet. Das Verzeichnis [homes] wird entkommentiert, damit vdr auf sein Heimatverzeichnis zugreifen kann.

[global]
   security = user
[homes]
   comment = Home Directories
   browseable = no
   read only = no
Für den Benutzer vdr muss nun noch ein SAMBA-Passwort eingerichtet werden.
# service smbd start
Nun müsste ein Zugriff für den Benutzer vdr über SAMBA möglich sein.

Fernsehen über das Netzwerk

VDR ermöglicht das Fernsehen über das lokale Netzwerk. Dazu wird das Paket vdr-plugin-streamdev-server installiert:
cd /var/lib/vdr/plugins/streamdev-server
vi streamdevhosts.conf

In der Datei streamdevhosts.conf wird konfiguriert, welche Computer auf den Stream-Dienst zugreifen dürfen. Hier wird localhost und das lokale Netzwerk eingetragen, im Beispiel ist es 192.168.109.0.

127.0.0.1             # always accept localhost
192.168.109.0/24     # any host on the local net
Nach einem Neustart des VDR kann man nun unter der Programmauswahl auch das Fernsehprogramm im Browser betrachten.

Probleme

Unerwarteter Shutdown

Ich kann nicht genau sagen, wie es dazu kam, aber einer meiner Rechner fuhr unerwartet in gewissen Abständen herunter. Zunächst vermutete ich einen Stromausfall als Ursache. Dann fiel der Verdacht auf vdr, zumal die folgende Meldung alle fünf Minuten in der /var/log/syslog erschien:
Jul  4 08:21:10 obelix vdr-shutdown: Shutdown deactivated (see /etc/default/vdr)
Jul  4 08:21:13 obelix vdr: [2669] connect from 127.0.0.1, port 60162 - accepted
Jul  4 08:21:13 obelix vdr: [2669] SVDRP message: 'Shutdown'
Jul  4 08:21:13 obelix vdr: [2669] info: Shutdown
Jul  4 08:21:13 obelix vdr: [2669] closing SVDRP connection
Es handelte sich also um einen Shutdown, der von VDR ausgelöst wird, wenn der Server längere Zeit nicht benötigt wird.

In der /etc/default/vdr steht der Befehl, der Shutdowns eigentlich unterbinden sollte.

ENABLE_SHUTDOWN=0
In der /etc/vdr/setup.conf kann die Aufforderung zum Shutdown unterbunden werden. Dazu werden die beiden folgenden Time-Out-Werte auf 0 gesetzt:
MinEventTimeout = 0
MinUserInactivity = 0

Defekt der TV-Karte

Es begann damit, dass immer mehr Aufnahmen Bildstörungen hatten. Dann überwogen die Störungen und später waren einige Sender (vor allem die privaten) nicht mehr zu finden.

In /var/log/syslog tauchten Meldungen wie die folgende auf:

vdr ... frontend ... lost lock on channel
Es stellte sich heraus, dass eine der TV-Karten den Geist aufgegeben hatten. Da diese wohl auch noch aus Sicht von vdr als erstes verwendet wurde, lief quasi nichts mehr.

Tatsächlich kann es passieren, dass TV-Karten nach ein paar Jahren Dauerbetrieb ihren Dienst einstellen.

Weiterführende Links