Das Kodi Media Center im Eigenbau

Software als Videorecorder

Nun benötigen wir noch die Software welche die TV-Karte steuert. Hier bietet sich der Video Disk Recorder (vgl. VDR) von Klaus Schmidinger an, neben den gewöhnlichen Funktionen eines Fernsehers wird VideoText und EPG unterstützt, zudem sind TimeShift-Aufnahmen möglich. Die meisten dieser Funktionen werden über viele verfügbare PlugIns realisiert welche mannigfaltige Möglichkeiten zur Erweiterung des Systems bieten. Das Besondere an VDR ist jedoch das es die Ausgabe des Fernsehbilds nicht an ein bestimmtes GUI-Frontend koppelt sondern die Streams der Fernsehkanäle lediglich per TCP-Port anbietet. Das kann über eine IP im Netzwerk realisiert werden oder man beschränkt den Zugriff durch Verwendung von localhost auf die lokale Maschine. Dabei existiert nicht nur dieser eine Port um den Stream für ein Bild darzustellen sondern weitere Ports sind verfügbar um z.B. die Fernbedienung zu realisieren also Dinge wie Programm umschalten, Lautstärke steuern etc.
VDR ist dadurch auch von anderen Programmen steuerbar wie eben z.B. Kodi welches sich dann den Bild-Stream auf einem Port abgreifen kann und über die eigene GUI wiedergibt. Zusätzlich kann Kodi über den ‘Fernbedienungs’-Port Befehle wie umschalten des Kanals oder ändern der Lautstärke weiterreichen. VDR ist ein wirklich mächtiges Paket mit vielen Features, zu viele um sie hier alle aufzuzählen.

Me@myHost:~# apt-get install \
vdr \
vdr-plugin-epgsearch \
vdr-plugin-live \
vdr-plugin-streamdev-ser \
vdr-plugin-svdrpext \
vdr-plugin-svdrposd \
vdr-plugin-vnsiserver

Damit man mit VDR die Brücke zu Kodi geschlagen bekommt ist das vdr-plugin-vnsiserver Paket später noch besonders wichtig. Nichtsdestotrotz sollte man den Zugriff auf den VNSI Server nur für die lokale Maschine erlauben.

Me@myHost:~# cat /etc/vdr/plugins/vnsiserver/allowed_hosts.conf
#
# allowed_hosts.conf  This file describes a number of host addresses that
#                     are allowed to connect to the streamdev server running 
#                     with the Video Disk Recorder (VDR) on this system.
# Syntax:
#
# IP-Address[/Netmask]
#

127.0.0.1             # always accept localhost
#192.168.0.0/24        # any host on the local net
#204.152.189.113      # a specific host
#0.0.0.0/0            # any host on any net (USE THIS WITH CARE!)

Außerdem legen wir noch den Pfad für Fernsehaufnahmen fest, die Festplatte als Halde für Videos wurde ja zuvor an den Pfad /srv gebunden, dort legen wir einen Ordner für VDR an.

Achtung!
Der VDR Daemon läuft unter dem Benutzer vdr damit das Programm auch in der Lage ist in diesen Ordner zu schreiben muß diesem Benutzer Schreibrecht in diesen Ordner gewährt werden.

Me@myHost:~# cd /srv
Me@myHost:~# # Ordner fur unsere VDR Aufnahmen
Me@myHost:~# mkdir vdr
Me@myHost:~# chown vdr:vdr vdr
Me@myHost:~# # Diesen Pfad geben wir dem Daemon als Parameter mit:
Me@myHost:~# cat /etc/vdr/vdr.default 
# /etc/default/vdr
#
# See also /usr/share/doc/vdr/README.Debian.gz
#

# Change to 1 to enable vdr's init-script
ENABLED=1

# Change this to 1 if you want vdr to be able to shutdown the
# computer
ENABLE_SHUTDOWN=0

# Options that will be passed to vdr's commandline
# for example: OPTIONS="-w 15"
OPTIONS="-w 60 -D 1 -v /srv/vdr"

Mit der Option -D 1 wählt man den entsprechenden DVB Adapter aus. In diesem Fall möchten wir den Kabel-Receiver unter /dev/dvb/adapter1 verwenden, das Argument benötigt dazu lediglich die Nummer der Adapters.
Damit Programme empfangbar sind brauchen wir, wie bei jedem Fernseher auch, den Sendersuchlauf, das bewerkstelligen wir mit dem Programm w_scan:

Me@myHost:~# apt-get install w-scan
Me@myHost:~# systemctl stop vdr
Me@myHost:~# echo ":DVB-C - w_scan" >/var/lib/vdr/channels.conf
Me@myHost:~# w_scan -f c -c DE >>/var/lib/vdr/channels.conf
Me@myHost:~# systemctl start vdr

Mit dem Argument -f c wählen wir Kabelfernsehen (DVB-C) entsprechend unserem Adapter aus und mit -c DE geben wir das Land an, ggfs. müssen diese Parameter angepasst werden wenn man einen anderen DVB Typ verwendet z.B. Satellit oder terrestrisches Signal.

Achtung!
Dieser Vorgang kann einige Zeit in Anspruch nehmen, der Sendersuchlauf muß vollständig durchgelaufen sein ansonsten werden die Kanäle und ihre entsprechenden Frequenzen nicht in die channels.conf Datei eingetragen und VDR kann dann logischerweise keinen Kanal finden.

Startet man nun den VDR Daemon kann man überprüfen ob die entsprechenden TCP Ports angelegt wurden:

Me@myHost:~# netstat -tulpen | grep vdr
tcp 0 0 127.0.0.1:6419   0.0.0.0:*  LISTEN 117   33659 1019/vdr
tcp 0 0   0.0.0.0:2004   0.0.0.0:*  LISTEN 117  100980 1019/vdr        
tcp 0 0   0.0.0.0:3000   0.0.0.0:*  LISTEN 117  100981 1019/vdr
tcp 0 0   0.0.0.0:8008   0.0.0.0:*  LISTEN 117  100985 1019/vdr
tcp 0 0   0.0.0.0:34890  0.0.0.0:*  LISTEN 117   33637 1019/vdr

In dieser Konfiguration sieht man das nicht alle Ports auf den localhost festgenagelt wurden, das ist hier aber bewußt passiert, da in meiner Konfiguration VDR noch in anderen Szenarien verwendet wird, i.d.R. sollte man localhost immer dann wählen wenn man sich nicht sicher ist.

Quellen:
VDR – The Video Disk Recorder
DVBSky T9580 DVB-T/T2/C and DVB-S2 Dual PCIe
(gelöst) VNSI Client verbindet sich nicht mit dem server
Sendersuchlauf mit w_scan
VDR quick start guide