Gentoo VDR DVB-C reel eHD

Aus VDR Wiki
Version vom 14. April 2008, 16:17 Uhr von 80.66.7.82 (Diskussion)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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

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:

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.

Links

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