Gentoo VDR DVB-C reel eHD
Inhaltsverzeichnis |
Installation eines Gentoo DVB-C HDTV-VDR Systemes mit Reelbox eHD PCI Support
Hier folgt eine ausführliche Anleitung zur Installation eines Gentoo-VDR 1.6.0 Systemes inkl. der h.264 Patches von r.nissl und Support für die Reelbox eHD PCI Karte.
Als Basis für die Installation dient ein Gentoo 2007 Base System (Stand 12.02.08) mit der folgenden make.conf
# Please consult /etc/make.conf.example for a more detailed example. CFLAGS="-O2 -march=i686 -pipe" CXXFLAGS="${CFLAGS}" # This should not be changed unless you know exactly what you are doing. You # should probably be using a different stage, instead. CHOST="i686-pc-linux-gnu" MAKEOPTS="-j3" ACCEPT_KEYWORDS="~x86" USE="aac a52 acpi aio asf dga dts dvb dvdread evo ffmpeg httpd icq imon exif imagemagick lcd lesstif lirc live lm_sensors matroska matrox mjpeg mmx mmxext network nvram pcmcia pdf projectx rtc samba sasl screen server sourcecaps sse sse2 stream svg svga v4l v4l2 vcd vdr vdr-net vfat wxwindows unicode cmdctrl cmdsubmenu ddepgentry dolbyinrec dvbplayer dvbsetup jumpplay timerinfo wareagleicon liemikuutio child-protection reelchannelscan xinerama xvid xvmc dolby-record-switch slang noepg -arts -gnome -kde -ldap" LINGUAS="de en"
Vorbereitung des VDR 1.6.0
- Anpassung der /etc/make.conf am Ende der Datei:
VDR_LOCAL_PATCHES_DIR="/usr/src/vdr-patches" source /usr/portage/local/layman/make.conf
- Anlage des VDR Patch-Verzeichnisses:
mkdir -p /usr/src/vdr-patches/1.6.0 (vdr-1.6.0 dient hier als Basis)
- Download des h.264 Patches für DVB-C
cd /usr/src/vdr-patches/1.6.0 wget http://www.linuxtv.org/pipermail/vdr/attachments/20080319/67b02b27/attachment-0003.bin mv attachment-0003.bin vdr-1.6.0-h264-syncearly-framespersec-audioindexer-fielddetection-speedup.diff.bz2 bunzip2 vdr-1.6.0-h264-syncearly-framespersec-audioindexer-fielddetection-speedup.diff.bz2
Ich musste den Patch noch anpassen, damit dieser mit meinen Use-Flags und dem VDR-Extensions-Patch-57 kompiliert. Ich bekam rejects in remux.c und remux.h. Diese liessen sich auf den syncearly Patch zurückführen, der auch in dem Extensions-Patch enthalten ist.
Installation TFTP-Server
die Reel Karte versucht beim Start einen tftp-connect auf den VDR und dort den download des hdplayers. Dieser ist somit recht leicht zu aktualisieren. Dafür muss aber auf dem VDR-System ein tftp-Server laufen, der den hdplayer zur Verfügung stellt.
emerge net-ftp/tftp-hpa
Anschliessend wird noch kurz in der Konfiguration das Basisverzeichnis hinterlegt
- /etc/conf.d/in.tftpd
INTFTPD_PATH="/opt/reelbox-ehd/"
Nun wird noch der automatische Start des Servers eingetragen:
rc-update add in.tftpd default /etc/init.d/in.tftpd start
Die benötigten Ebuild-Pakete
Folgende Pakete wurden bisher für die Reel-eHD generiert:
- media-video/reelbox-ehd-driver
Der Kernel Kartentreiber (hdshm)
- media-video/reelbox-ehd-bin
Linux Kernel für die Karte und hdplayer
- media-video/reelbox-ehd-tools
Tools und Programmme für den Betrieb der Karte
- media-plugins/vdr-reelbox
Plugin für den VDR
Einbindung der Karte
Nachdem die Karte eingebaut ist, sollte diese mit einem lspci -v einen ähnlichen Eintrag zu finden sein:
02:09.0 Multimedia controller: Unknown device 1905:8100 Subsystem: Unknown device 1905:8100 Flags: bus master, medium devsel, latency 64, IRQ 5 Memory at f7efb000 (32-bit, non-prefetchable) [size=4K] Memory at e8000000 (32-bit, non-prefetchable) [size=128M] Capabilities: [40] Power Management version 2
eHD Kerneltreiber
Den Kerneltreiber für die Reel-eHD merged man einfach mittels:
emerge reelbox-ehd-driver
Für den Betrieb der Karte wird noch das TUN-Device benötigt, welches in den laufenden Kernel fest einkompiliert, oder als Modul geladen werden kann. Damit der Kartentreiber beim Booten geladen wird, wird dieser einfach (hier mit dem TUN-Device) in die Datei /etc/modules.autoload.d/kernel-2.6 eingetragen:
echo "tun" >> /etc/modules.autoload.d/kernel-2.6 echo "hdshm" >> /etc/modules.autoload.d/kernel-2.6
Für den Erstbetrieb lädt man die Module einmalig von Hand:
modprobe tun modprobe hdshm
Mittels dmesg sollte die Karte nun folgendes ausgeben:
hdshm_init_struct: Phys start eb000000, start d0c80000, nc-start d1000000 hde_fb: init 0
eHD Binaries
Da die wenigsten User eine Crossdev Umgebung haben, werden die Pakete, die auf der eHD-Karte direkt laufen als Binärarchive von Reel ohne Änderungen übernommen und eingespielt. Dies betrifft den hdplayer und den Linux Kernel für die eHD.
emerge reelbox-ehd-bin
eHD Tools
Für den Betrieb der eHD werden hier einige Tools und Programme installiert, die z.B. für das Starten der Karte verantwortlich sind.
emerge reelbox-ehd-tools
Start der Karte
Wenn alles richtig durchgeführt worden ist und keine Fehlermeldungen kamen, sollte die eHD einfach mittels
/etc/init.d/reelbox-ehd start
hochgefahren werden. Anschliessend sollte nach einem erfolgreichen Boot mittels ifconfig prüfen, ob das Tun-Device aktiviert wurde:
vdr # ifconfig tun0 tun0 Protokoll:UNSPEC Hardware Adresse 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet Adresse:192.168.99.130 P-z-P:192.168.99.130 Maske:255.255.255.252 UP PUNKTZUPUNKT RUNNING NOARP MULTICAST MTU:8300 Metric:1 RX packets:383 errors:0 dropped:0 overruns:0 frame:0 TX packets:490 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:500 RX bytes:32541 (31.7 Kb) TX bytes:168190 (164.2 Kb)
Wenn dieses Device aktiv ist, so sollte die reel-eHD nun auch pingbar sein:
vdr # ping 192.168.99.129 ping -c 1 192.168.99.129 PING 192.168.99.129 (192.168.99.129) 56(84) bytes of data. 64 bytes from 192.168.99.129: icmp_seq=1 ttl=64 time=4.58 ms --- 192.168.99.129 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 4.588/4.588/4.588/0.000 ms
Mittels telnet sollte man direkt auf der Karte landen. Hier kann man auch gleich prüfen, ob in /tmp der hdplayer liegt und ob dieser bereits läuft (ps):
vdr # telnet eHD Trying 192.168.99.129... Connected to eHD. Escape character is '^]'. BusyBox v1.2.2 (2008.03.25-10:08+0000) Built-in shell (ash) Enter 'help' for a list of built-in commands. Welcome to extensionHD This image is based on SDK V1.7. It was built @ Fr 11. Apr 12:14:32 CEST 2008 on rollercoaster. hdext # ls -la /tmp/hdplayer -rwxr-xr-x 1 0 0 141092 Jan 1 00:00 /tmp/hdplayer hdext # ps PID Uid VmSize Stat Command 1 0 656 S init 2 0 SWN [ksoftirqd/0] 3 0 SW< [events/0] 4 0 SW< [khelper] 5 0 SW< [kthread] 6 0 SW< [kblockd/0] 20 0 DW [swapper] 84 0 SW [pdflush] 85 0 SW [pdflush] 87 0 SW< [aio/0] 86 0 SW [kswapd0] 91 0 SW [kseriod] 133 0 SW< [VIDEO/0] 134 0 SW< [AUDIO/0] 135 0 SW< [PSI/0] 139 0 SW< [VIDEO/0] 140 0 SW< [AUDIO/0] 141 0 SW< [PSI/0] 171 0 636 S syslogd -m 0 -C 173 0 628 S klogd 235 0 572 S < udevd 254 1 684 S portmap 256 0 516 S telnetd -l /sbin/loginash 283 0 468 S shmnetd 293 0 684 S /bin/sh /sbin/hdplayermgr -d 300 0 616 S /usr/bin/hdctrld -o DVI -a WF -v 576i -s -d 309 0 660 S init 314 0 616 S /usr/bin/hdctrld -o DVI -a WF -v 576i -s -d 824 0 616 S /usr/bin/hdctrld -o DVI -a WF -v 576i -s -d 827 0 572 S sh -c /tmp/hdplayer 828 0 2896 S /tmp/hdplayer 829 0 2896 S /tmp/hdplayer 830 0 2896 R N /tmp/hdplayer 6305 0 792 S /bin/ash --login 6315 0 424 S sleep 2 6316 0 712 R ps hdext #
Sollte der hdplayer nicht laufen, so stimmt vermutlich etwas mit dem tftp-Server nicht. Wenn alles so aussieht wie in dem obigen Beispiel, ist die Karte betriebsbereit und die Installation des VDR kann beginnen.
Ansonsten fügt man as Startskript nun dem Default Bootmodus hinzu, damit die Karte automatisch beim Booten gestartet wird:
rc-update add reelbox-ehd default
Installation des VDR
Falls noch nicht geschehen, so sollte nun der vdr installiert werden:
emerge vdr
Nachdem dieser installiert worden ist, muss beachtet werden, das der vdr mit der reel-eHD aktuell nur funktioniert wenn dieser als root läuft und nicht wie unter gentoo eigentlich üblich als vdr
Anpassung der VDR-Konfiguration
Folgende Änderungen sollten nach der Installation des vdr durchgeführt werden:
- Umstellung des VDR auf den root-User
Hierzu öffnet man die Datei /etc/conf.d/vdr und aktiviert den folgenden Eintrag:
# for people who really know what they do # and who want to start vdr as user root # allowed values: YES no # default: no START_VDR_AS_ROOT="YES"
- Das Startskript soll auf das reelbox-ehd Skript warten
Das reelbox Plugin funktioniert nur, wenn die eHD bereits läuft. Befindet sich die Karte noch im Booten, sieht man anschliessend nur des Reel-eHD Logo und bekommt kein Live-Bild. Also sollte das vdr-Startskript auf die Reel warten, bevor er startet. Möglicherweise wird dies später noch geändert, da hier auch bessere Möglichkeiten zur Überprüfung zu Verfügung stehen. Momentan ist der einfachste Weg aber das init-Skript anzupassen. Hier fügt man im depend Zweig einfach das Reel-eHD Startskript hinzu:
depend() { need net [ "${IR_CTRL}" = "lirc" ] && need lircd use lircd coldplug after checkroot after reelbox-ehd }
Installation des reelbox Plugins
Das Reelbox Plugin stellt die eigentliche Verbindung zwischen VDR und Karte her und wird wie jedes andere Plugin auch einfach per emerge installiert:
emerge vdr-reelbox eselect vdr-plugin enable vdr-reelbox
Anschliessend startet man den vdr (neu) und es sollte ein Livebild ausgegeben werden.
Sourcen
Die oben beschriebenen Pakete befinden sich zur Zeit noch nicht im offiziellen Gentoo Portage und können bis dahin manuell downgeloaded werden. Zu finden sind die Ebuilds und Distfiles hier
Download aller Dateien mit wget:
wget -r -np http://quacks.fratzengeballer.org/portage/ && find -name 'index.html*' -exec rm "{}" \;