Nach Jahren des Provisoriums habe ich den Server mit „neuer“ Hardware ausgestattet, als ich mir ein vernünftiges und wohnzimmertaugliches Gehäuse von Fractal Design gekauft habe.
Beim Übersetzen der Quellen habe ich einige Pfade im Makefile gesetzt, die ich damit nicht mehr auf der Kommandozeile angeben brauche.
Bereits der Kernel 3.7.10 bringt bereits alles mit, um die Fernbedienung benutzen zu können. Mit dem Update auf 3.19.8 lief die Fernbedienung leider nicht mehr. Selbst ein neuer LIRCD hat nichts gebracht. Erst nach dem ich die v4l-tools nachinstalliert hatte, konnte ich mit ir-keytable auf Fehlersuche gehen. Der IR-Empfänger wurde ja vom Kernel gefunden und eingebunden, nur irw konnte nichts damit anfangen. Daher habe ich mit den Optionen von ir-keytable gespielt und bin beim IR-Protokoll fündig geworden. Ich musste einfach auf das NEC-Protokoll umstellen, den lircd anders einbinden und die Fernbedienung läuft! Das Startscript ist entsprechend angepasst.
Auch der Sound wollte am Anfang nicht wirklich. Ich musste die Konfiguration löschen, den Kernel mit den passenden Modulen für AD1988B und HDMI ausstatten und alles neu einrichten. Am Anfang meiner VDR-„Bastelei“ habe ich den snd-hda-intel-Treiber nicht richtig verstanden. Ich war der irrigen Meinung, dieser könnte nur eine Soundkarte nutzen, was aber nicht stimmte. Es hat mich ein paar Stunden suchen und probieren gekostet, aber mittlerweile laufen beide Soundkarten. Die Terratec Aureon 7.1 habe ich abgebaut, da ich die nicht mehr brauche, ist aber noch als dritte definiert.
options snd-hda-intel model=6stack-dig,auto enable_msi=0,0 probe_mask=1,0xfff2 options snd slots=snd-hda-intel,snd-hda-intel alias snd-card-0 snd-hda-intel alias snd-card-1 snd-hda-intel alias snd-card-2 snd-usb-audio
Normalerweise startet mein VDR nach dem Booten mit einem fest eingestellten Programm (hier ein Radio). Bisher gab es damit auch kein Problem. Jetzt wird aber die Firmware der Sat-Karte nicht richtig aktiviert. Eine Anpassung der Scripte reichte nicht. Ich musste den VDR mit dem dynamite-Plugin patchen. Das Plugin deaktiviert kurz das Device und aktiviert es wieder. Dazu müssen in der setup.conf zwei Zeilen hinzugefügt und eine neue, ausführbare Datei runvdr_svdrpsend erstellt werden.
dynamite.DefaultGetTSTimeout = 10 dynamite.GetTSTimeoutHandler = /usr/local/bin/runvdr_svdrpsend
#!/bin/bash svdrpsend plug dynamite FDTD /dev/dvb/adapter0/frontend0 svdrpsend plug dynamite ATTD /dev/dvb/adapter0/frontend0
Die Variable XBGIMAGE ist neu hinzu gekommen und zeigt auf ein Bild für den Hintergrund, wenn der VDR noch nicht gestartet ist oder sich mal beendet hat. Sollte die Variable leer oder auf ein ungültiges Bild verweisen, so wird dieses Feature nicht genutzt. Ich verwende das Logo von Jan Grell (siehe kleines Bild oben, http://grell-netz.de/content.php/21?selected=41, CC BY-ND 3.0 DE), dass ich auf die Auflösung meines TVs skaliert habe.
XMODE entspricht der physischen Auflösung des Monitors XOUTPUT. Ich verwende einen Full-HD LCD-TV von Philips, den ich per HDMI an die Grafikkarte angeschlossen habe. Die Auflösung des Xorg-Servers wird auf 1920×1080 Punkte gesetzt.
# VDR Plugins VDRPLUGINS="-Ptvguide -Pextrecmenu -P'softhddevice -a hw:1,3 -p hw:1,3 -v vdpau' \ -P'osdteletext -d /var/tmp/vtx' -Pstreamdev-server \ -Pburn -Pskinenigmang -Pfemon -Pdynamite" # VDR Konfiguration VDROPT="-d -w 60 -s /usr/local/bin/vdrpoweroff.sh" # X XBGIMAGE=/etc/vdr/vdr-logo.jpg XMODE="1920x1080" XOUTPUT="HDMI-0" # Plugin GraphLCD PARPORTDEV=/dev/parport0 PARPORTMOD=0666 # IR Protokoll IRPROTO=NEC # Soundsystem neustarten SOUNDRESTART=0
#!/bin/sh # Konfiguration laden . /etc/sysconfig/vdr # Sprache setzen export LANG="de_DE.UTF-8" # Falls Plugin graphlcd aufgerufen wird if [[ $VDRPLUGINS == *"graphlcd"* ]] ; then # Parport auf 666 setzen if [ -f $PARPORTDEV ] ; then chmod $PARPORTMOD $PARPORTDEV else modprobe ppdev modprobe parport if [ -f $PARPORTDEV ] ; then chmod $PARPORTMOD $PARPORTDEV fi fi fi # Alsa auf Default setzen if [ $SOUNDRESTART -eq 1 ] ; then systemctl restart alsasound fi alsactl restore # Protokoll NEC ir-keytable -p $IRPROTO while killall lircd; do sleep 2; done IRDEV=$(ir-keytable 2>&1 | grep "event" | awk '{print substr($3, 2,length($3)-2)}') if [ -c $IRDEV ] ; then lircd --device $IRDEV --driver devinput fi # X11 starten while ps auxww | awk '$0~/Xorg/&&$0!~/awk/{print $2}'|xargs kill; do sleep 2; done DISPLAY=":0" Xorg $DISPLAY vt8 -nocursor -quiet & sleep 2 export $DISPLAY xhost vdr xrandr --output $XOUTPUT --mode $XMODE if [ -f $XBGIMAGE ] ; then xloadimage -display $DISPLAY -fillscreen -onroot $XBGIMAGE fi # vdr VDRBIN=$(which vdr) # vdradmind VDRADM=$(which vdradmind) if [ -x $VDRBIN ] ; then while killall $VDRBIN; do sleep 2; done eval "$VDRBIN $VDROPT $VDRPLUGINS" sleep 2 fi
[Unit] Description=VDR After= Wants= [Service] ExecStart=/usr/local/bin/runvdr ExecStop=/usr/bin/killall vdr RemainAfterExit=true [Install] WantedBy=multi-user.target
[Unit] Description=vdradmin After=vdr.service Wants=vdr.service [Service] ExecStart=/usr/bin/vdradmind ExecStop=/usr/bin/vdradmind -k RemainAfterExit=true [Install] WantedBy=multi-user.target