Hallo zusammen,
nachdem ich bisher immer nur bei Problemen gepostet habe, dachte ich: Lässt auch mal vom erfolg hören!
Ich habe den Weihnachtsurlaub geopfert, um meinen schon länger dienenden VDR HD-fähig zu machen. Nach einigen Tagen "harter" Arbeit ging es dann tatsächlich ganz leidlich.
Ich bin schon länger SuSE-Fan und wollte bei dieser Distribution bleiben (ich kenne mich da etwas aus, es soll auch was anderes als VDR laufen, etc). Das System bestand hardwareseitig aus einem ASUS-Mainboard mit onboard-ATI-Grafik, 2GB RAM und ein AMD Athlon 64 X2 6000+, einer Samsung-Platte mit 1TB und 5400 UPM plus SSD mit 32GB für System, boot und swap sowie natürlich einer Hauppage 2.1 FF-Karte.
Kürzlich habe ich das Update von 11.4 auf 12.1 hinter mich gebracht (noch mit FF und ohne HD!). Dadurch hat sich die Zeit, bis der VDR zur Verfügung stand, von 1:30 Minuten auf 0:35 Minuten verringert - ich führe das auf die Umstellung von SysV-Init auf systemd zurück.
Nachdem ich wie manch anderer für HDTV lange auf die TT 6400 spekuliert hatte, habe ich mich nach Weihnachten für die flexible und hoffentlich zukunftsfähigere Lösung entschieden und kurzfristig eine Gainward GF520 (wegen der geringen Leistungsaufnahme, 1GB, passiv gekühlt, ca. 40€) und die DVB-S2-Karte TeVii S480 Rev. 2.1 (Doppeltuner für ca. 80€) bestellt.
Die Wartezeit (nur 2 Tage) habe ich u.A. damit verbracht, den VDR auf 1.7.22 zu bringen, da wohl HD mit VDR 1.6 nicht gut geht. Als SuSE-Nutzer wollte ich möglichst nahe an der Standard-Distribution und deren Mechanismen bleiben. Aber es gibt nun mal kein fertiges Pakte für den VDR 1.7 (es gibt zwar jemanden, der ihn im Buildservice bauen lässt, aber diese Version bekam ich die xineliboutput nicht zum Laufen). Also habe ich ihn aus den Sourcen erstellt. Vorher habe ich den VDR 1.6 deinstalliert (Achtung: evtl. vorher Konfigurationsdateien sichern (remote.conf, setup.conf, Startskripte /usr/sbin/runvdr und /etc/init.d/vdr , /etc/sysconfig/vdr ... !)
Als Erstes kam die Grafikkarte, so dass ich mich nun von den ATI-Treibern verabschieden musste und die nvidia (closed-Source)-Treiber installierte (zunächst für den KDE-Desktop, die VDR-Ausgabe lief zunächst noch über die FF-Karte). Die onboard-ATI-Grafikkarte habe ich im BIOS deaktiviert. Der nvidia-Treiber zeigte mir nun den KDE-Desktop in unlesbarer Schrift (vielleicht 3 Punkte!). Mit einigem Probieren gelang es mir schließlich, die Schriftgrößen auf ein erträgliches Maß zu stellen.
Insgesamt habe ich mich an der Anleitung orientiert:
http://www.vdr-wiki.de/wiki/index.php/Kategorie:openSUSE_VDR_DVB-S2_HD_mittels_Xine_und_VDPAU
Außerdem habe ich die "media_build" DVB-Treiber installiert, da ich nicht sicher war, ob die TeVii vom Kernel unterstüzt wird. Wäre vielleicht mal einen Versuch ohne wert...
Mittels aplay -l und mehreren Versuchen von aplay -D:hw:x,y /usr/share/sounds/alsa/test.wav konnte ich außerdem schon mal identifizieren, welcher Soundausgang denn nun im HDMI-Kabel und beim Fernseher landet. Dazu musste ich noch mit alsamixer den Kanal un-muten.
Und schon kam auch die DVB-Karte und nun gings los. xineliboutput aus den Sourcen übersetzt. Braucht aber eine neuere xine-lib, als SuSE hat und vor allem wollte ich ja die VDPAU-Unterstützung - die ist in SuSE auch nicht aktiv. Also musste ich zunächst eine aktuelle libxine bauen. Das im Wiki angegebene Repository scheint nicht mehr zu existieren. Ich fand aber Beiträge, die mit diesen Sourcen erfolgreich waren: http://hg.debian.org/hg/xine-lib/xine-lib-1.2-vdpau. Ich habe nun 2 xinelibs: Die originale Version in /usr/lib64 und die VDPAU-fähige in /usr/local/lib64.
Das xineliboutput-Plugin ließ sich dann nach Anleitung installieren, allerdings musste ich configure wie folgt aufrufen:
./configure --enable-musepack=no --prefix=/usr/local
damit der Build funktioniert und die richtige xinelib angezogen wird.
Nach einigem Drehen an der Konfiguration lief dann das erste Mal der HD-VDR zunächst unter KDE!
Im weiteren habe ich mich um den automatischen Start (analog zu openSuSE 1.6-VDR) gekümmert.
Probleme, die ich auf "unschöne" Weise im runvdr gelöst habe (Verbesserungsvorschläge willkommen!):
Die Firmware der Karte braucht lange zum Laden. Ich schaue dazu in dmesg nach, wann beide Karten initalisiert sind und warte gegebenfalls mit dem Start des vdr-Service:
while [ $(/bin/dmesg | /usr/bin/grep -c "TeVii S660 USB successfully initialized and connected.") -lt "2" ]; do
logger --priority 3 --tag runvdr "TeVii S660 USB not initialized yet, waiting 2 seconds"
sleep 2
done
Um sicherzustellen, dass vdr und Konsorten die "richtige" xinelib anziehen, ändere ich den LD_LIBRARY_PATH:
Mein VDR ist nur der "kopflose" Service. Als Client starte ich vdr-sxfe auf einer eigenen virtuellen Konsole mittels xinit:
if [ "$VDR_SWITCHVT" = yes ]; then
doswitch=-s
fi
nohup /usr/bin/chroot --userspec=vdr:video / /usr/bin/xinit ~vdr/.xinitrc -- :1 vt$VDR_VTNUMBER &
In ~vdr/.xinitrc steht folgender Code, der auch bei Absturz des vdr-sxfe oder versehentlichem Drücken der Escape-Taste wieder einen VDR erscheinen lässt:
#!/bin/bash
export HOME=~vdr
cd
while true; do
sleep 2
/usr/local/bin/vdr-sxfe --hud --video=vdpau --audio=alsa:hw:1,7 --fullscreen --display=$DISPLAY --post tvtime:method=use_vo_driver --reconnect --syslog xvdr://localhost:37890
done
Damit ist der VDR nach dem Hochfahren vollformatig am Laufen und reagiert auf die Tasteneingaben wie von jeher gewohnt. Bei Interesse kann ich die kompleette runvdr anhängen.
Leider hat das jetzige System noch 2 Nachteile beim Radiohören:
- Bei Radiosendern stürzt vdr-sxfe ab, wenn irgendeine Visualisierung im xineliboutput eingestellt ist. Also Visualisierung aus (VDR OSD:Einstellungen/Plugins/xinelipoutput/Audio). Das scheint aber ein bekanntes Problem zu sein. Und das Radioplugin ließ sich nicht übersetzen (oder ich habe nicht die aktuellste Version gefunden).
- Um Radio zu hören, muss der Fernseher laufen, da der Ton nur über HDMI bei TV landet udn dieses den Ton nur an den Verstärker weitergibt, wenn es an ist. Die Soundkonfiguration, um gleichzeitig den Ton analog direkt an den Verstärker auszugeben, habe ich noch nicht hinbekommen... Vielleicht erledigt sich das Problem eines Tages durch Anschaffung eines aktuelles Verstärkers mit HDMI-Eingängen
Die Temperatur der Grafikkarte lese ich ab und an per "watch --i=1 DISPLAY=:1 nvidia-settings -tq gpucoretemp" aus. Bei Radio oder SD liegt sie bei etwa 40°C, bei HD dagegen bei knapp 60°C. Ich hoffe, das ist noch ok. Leistungsaufnahme des Gesamtsystems habe ich noch nicht gemessen...
Ich erkenne manchmal noch ein Ruckeln bei HD (Wiedergabe und Live) etwa eine halbe Sekunde nach einem Szenenwechsel mit großem Bildunterschied. Es scheint, als ließe sich dieses Problem durch "cpufreq-set -g performance" lösen, aber ich will eigentlich meinen Prozessor nicht dauernd hoch takten...
Komischerweise ruckeln auch SD-Aufnahmen beim Abspielen in kurzen Abständen - wenn auch nur leicht. Vielleicht bin ich auch ein bißchen überemfindlich...
Trotzdem ist der WAF entgegen meiner Befürchtungen wieder auf altem Niveau (nachdem er nach Weihnachten einen merklichen Durchhänger hatte) - oder sogar besser: schließlich gibt es jetzt endlich die Lindenstraßen-Aufnahmen in HD!