Das Kodi Media Center im Eigenbau

Die Softwarebasis

Verschaffen wir uns nun einen software-technischen Überblick über die Ingredenzien für ein schickes Entainment Hub. Neben Betriebssystem, erforderlichen Treibern, TV-Software und deren PlugIns werfen wir zum Schluß einen Blick auf die Einrichtung von Kodi selbst aber fangen wir vorne an.

Debian GNU/Linux

debianlogoEs wid hier von einem Debian Jessie in gewöhnlicher Standardinstallation mit installiertem Open Source Grafiktreiber (radeon) ausgegangen, dies ist wichtig da bei der Wiedergabe die Hardwarebeschleunigung der Grafikkarte (VDPAU) verwendet werden soll. Auf die Verwendung des proprietären Treibers (fglrx) wird hier verzichtet weil Full-HD Videos in 1080p Auflösung sich zwar abspielen lassen aber die Bildrate dann doch zu wünschen übrig läßt, das liegt am veralteten XVBA API das seit langer Zeit nicht mehr von AMD unterstützt wird.
Die Paketquellen wurden um das debian-multimedia Repository erweitert damit die Kodi Version etwas aktueller ist, da die üblichen Pakete aus dem Standard-Debian-Repository lediglich eine ältere XBMC Version bereithalten. Eigentlich ist es nicht notwendig einen X-Desktop zu installieren aber ein kompakter Ressourcen-schonender Windowmanager, z.B. XFCE, erleichtert zumindest in der Installationsphase die Einrichtung.
Die CompactFlash-Karte dient dabei als vollständiges Startsystem mit Boot-, Root– und Swap-Partition. Die externe große 3½”-Festplatte dient dabei lediglich als Datenträger für die Video- und Musikbibliothek.

Me@myHost:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#              

[...]

/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

# video library and temporary capture partition
/dev/sdXY /srv ext4 defaults 0 0

Me@myHost:~# cat /etc/apt/sources.list
...
# jessie deb-multimedia
deb http://www.deb-multimedia.org stable main non-free

Das ASUS Board enthält ein UEFI BIOS und man könnte sich die Mühe machen mit GPT Schema einen nativen UEFI Boot zu realisieren, die Installation sollte sich aber einfach gestalten daher wird hier von einer Standard Legacy BIOS Installation ausgegangen. Wer monströse Festplatten (>4TB) verwenden möchte müßte die Installation ggfs. anpassen.

Die Treiber der DVB-Karte

Die Karten von DVBSky waren für Linux in der Vergangenheit nicht immer ganz unkompliziert wegen der Treiber-Situation obwohl ein Conexant CX23885/7/8 Media Controller verwendet wird der von Video4Linux auch in anderen Karten schon unterstützt wird, konnte der Hersteller bisher keine zufriedenstellende Lösung anbieten. Der Treiber mußte seit dem letzten Stand selbst kompiliert werden, was nicht so kompliziert ist aber leider den unangenehmen Nebeneffekt hat das im Prinzip ein Fork des v4l-Projekt daher genommen wird um den eigenen Binärtreiber und die Firmware samt einiger Patches in v4l zu integrieren. So ein Kompilat hat den Nachteil dass es nicht aus dem Mainstream-Linie stammt und bei DebianUpdates die aktuelle Standardinstallation von v4l mit dem älteren Kompilat überschrieben werden muß. Eine Treiberunterstützung (out-of-the-box) wird z.Z. mit dem Kernel 3.18 erwartet. In der Zwischenzeit kann man sich leider nur mit eigenen Kompilaten behelfen, um also zu überprüfen ob die DVB Karte verfügbar ist schaut man mit

Me@myHost:~# ls -l /dev/dvb/

nach ob sich indem Ordner irgendwelche Einträge finden, z.B. adapter0 u.ä.
Sollte dem nicht so sein dann liegt keine Unterstützung mit den Standardtreibern des v4l vor muß man selbst kompilieren. Da hier unter Debian der etwas älteren 3.16’er Kernel verwendet wird ist ein Kompilat leider erforderlich, dabei kann man wie folgt vorgehen.

Me@myHost:~# sudo -i
Me@myHost:~# # install required build tools
Me@myHost:~# apt-get install kernel-package linux-headers-`uname -r`
Me@myHost:~# cd /usr/src
Me@myHost:~# wget http://www.dvbsky.net/download/linux/media_build-bst-140128.tar.gz
Me@myHost:~# tar xf media_build-bst-140128.tar.gz
Me@myHost:~# cd media_build-bst
Me@myHost:~# # Run `uname -a` to determine if 32 or 64-bit (x86_64/amd64/ia64) is required.
 ./v4l/build_x86.sh ~OR~ ./v4l/build_dvbc_x86.sh ~OR~
   ./v4l/build_x64.sh ~OR~ ./v4l/build_dvbc_x64.sh
Me@myHost:~# make && make install
Me@myHost:~# # download and install firmware
Me@myHost:~# wget http://www.dvbsky.net/download/dvbsky-firmware.zip
Me@myHost:~# unzip dvbsky-firmware.zip
Me@myHost:~# sh ./bst-firmware.sh
Me@myHost:~#
Me@myHost:~# reboot

Zuerst beschafft man sich den Treiber per wget, erzeugt das Kompilat was u.U. einige Zeit in Anspruch nimmt da hier nicht nur die Treiber sondern das komplette v4l Paket erzeugt wird. Abschließend spielen wir die Firmware ein. Nach einem Neustart sollten die erforderlichen Geräte verfügbar sein, die Karte besitzt mehrere Kombi-Tuner daher sind auch zwei Adapter sichtbar, der adapter0 wird für DVB-S (Satellit) und der adapter1 für DVB-T2/C (Kabel) verwendet. Neben den eigentlichen Adapter finden sich noch weitere Geräte z.B. zur Steuerung der TV-Karte per Fernbedienung allerdings möchten wir die Karte unter Kodi verwenden daher lassen wir diese einfach mal außer Acht.

Me@myHost:~# ls /dev/dvb
adapter0  adapter1
Me@myHost:~# dmesg | grep -i dvb
[    5.025949] CORE cx23885[0]: subsystem: 4254:9580, board: DVBSKY T9580 [card=48,autodetected]
[    5.978419] cx23885_dvb_register() allocating 1 frontend(s)
[    5.978425] cx23885[0]: cx23885 based dvb card
[    6.049574] m88ds3103_load_firmware: Waiting for firmware upload (dvb-fe-ds3103.fw)...
[    6.050491] cx23885 0000:02:00.0: firmware: direct-loading firmware dvb-fe-ds3103.fw
[    7.063249] DVB: registering new adapter (cx23885[0])
[    7.063268] cx23885 0000:02:00.0: DVB: registering adapter 0 frontend 0 (Montage DS3103/TS2022)...
[    7.091726] DVBSKY PCIe MAC= xx:xx:xx:xx:xx:xx
[    7.091736] cx23885_dvb_register() allocating 1 frontend(s)
[    7.091777] cx23885[0]: cx23885 based dvb card
[    7.298613] DVB: registering new adapter (cx23885[0])
[    7.298637] cx23885 0000:02:00.0: DVB: registering adapter 1 frontend 0 (Sit2 DVB-T2/C)...
[    7.327207] DVBSKY PCIe MAC= yy:yy:yy:yy:yy:yy
[    7.362214] Registered IR keymap rc-dvbsky
[    7.362581] input: cx23885 IR (DVBSKY T9580) as /devices/pci0000:00/0000:00:15.0/0000:02:00.0/rc/rc0/input13
[    7.367613] rc0: cx23885 IR (DVBSKY T9580) as /devices/pci0000:00/0000:00:15.0/0000:02:00.0/rc/rc0

Achtung!
Sollte eine neue Version des Kernels durch Updates des Debian-Systems eingespielt werden muß die Prozedur des Treiber-Kompilats wiederholt werden da die v4l bzw. die Fimrware Dateien dann natürlich nicht mehr an den richtigen Pfaden vorliegen und vom neuen Kernel nicht verwendet werden.

Quellen:
How to Install XBMC PVR Xvba for AMD/Nvidia/Intel GPUs
inux – Radeon OSS with vdpau
DVBSky
DVBSky T9580 (PCIe)
How to Obtain, Build and Install V4L-DVB Device Drivers
DVBSky T9580 DVB-T/T2/C and DVB-S2 Dual PCIe