Komplett-Installation VDR mit VDPAU

  • Hallo zusammen,


    ich beschäftige mich nun schon seit einigen Jahren mit dem VDR und habe einige PCs für das Wohnzimmer zusammengebaut. Bislang gab es immer irgendwelche Probleme, so dass ich nie zufrieden war. Nun habe ich eine wirklich gut funktionierende Konfiguration gefunden. Da ich über die Jahre sehr viele Infos besonders aus diesem Portal habe, stelle ich die Gesamtanleitung hier online. Ihr könnt gerne die ganze Anleitung oder Teile daraus irgendwoanders hinkopieren.
    Die Anleitung ist recht lang gewordem... Sorry dafür...


    Zuerst meine wichtigsten Anforderungen:

    • Wohnzimmertauglich (leise, wenig Stromverbrauch, möglichst klein)
    • Dual-Tuner (Aufnehmen und Fernesehen von unterschiedlichen Programmen)
    • VDR muss so laufen, dass ich auch die Schneidefunktionen nutzen kann
    • Video-Player, so dass ich MKV (HD Filme), AVI und ISO-Dateien (DVD-Images) abspielen kann
    • Fernbedienung (Famielientauglich, meine Eltern sollen das Gerät auch benutzen können)
    • Aufnahme-Programmierung über Web-Interface
    • HD Programme ruckelfrei

    Zuerst zur Hardware:
    Da ich einen möglichst geringen Stromverbrauch haben möchte, kommt für mich nur ein einziges Board in Frage. Für HD Fernsehen habe ich bislang nur mit VDPAU ein vernünftiges Ergebnis hinbekommen, deswegen muss es eine NVIDIA Grafikkarte sein. (VDPAU ist eine Hardwarebeschleunigung zum darstellen von MPEG4 (und MPEG2) Videostreams.) Um Strom zu sparen, soll es eine OnBoard-Karte sein. Hier gibt es (meines Wissens nach) nur ein Board, was genügend GPU Power für VDPAU für HD-Fernsehen hat: Asus At5iont-i
    Das Board hat nur einen PCI-Express Steckplatz, folglich muss die DVB-S Karte zwei Tuner haben. Ich habe schon länger eine Mystique Satix-s2 liegen. Also wird diese verwendet. Aktuell würde ich vermutlich eine Tevii kaufen.
    Als Gehäuse habe ein JCP Mini-ITX MI 101 gewählt. Ich benötigt man keine Low-Profile Karte, man hat Platz für ein zukünftiges DVD Laufwerk und oder eine 3,5'' Festplatte. Außerdem gibt es USB Anschlüsse vorne. (Sehr praktisch um ggf. nen MP3 Player oder so zu laden)
    Als letztes habe ich noch das Netzteil in dem Gehäuse gegen ein fast lautloses getauscht. Das Format ist zum Glück genormt und heißt SFX. Das neue Netzteil ist wirklich fast lautlos: Xilence SFX 250

    Nun zur Software
    :
    Als Betriebssystem habe ich ein Debian Squeeze 64Bit gewählt. Das hängt vorrangig damit zusammen, dass wir Debian als Betriebsystem für die Server in der Firma einsetzen und ich mich daher damit auskenne.
    Zum Abspielen von Videos reicht mir der VDR selber nicht aus. Hier möchte ich einen etwas komfortableren Player. Da ich ruckelfrei HD Videos ohne Tearing oder Interlacing Artefakte abspielen möchte, ist meine Wahl auf XBMC gefallen. Mit xine und mplayer habe ich es nicht hinbekommen, dass die Bildwiederholfrequenz der Grafikkarte automatisch an die Videos angepasst wird, was für ein ruckelfreies Abspielen von HD 24p Filmen aus meiner Sicht unerlässlich ist. Auch 50hz Pal Filme sehen bei 60Hz einfach nicht sauber aus.
    Derzeit ist es leider mit dem XBMC DVR-Fork nicht möglich auf die Schneidefunktionen des VDRs zuzugreifen. (Bitte korrigiert mich, wenn das inzwischen anders ist) Außerdem schien mir die VDR Anbindung in XBMC noch ziemlich buggy. Die Einbindung ist auch wirklich komplex. Aus diesem Grund habe ich mich für xineliboutput und xbmc parallel entschieden. Man kann mit der Fernbedienung umschalten.
    Nun die Anleitung der Installation: (Es ist nicht alles gleich ausführlich, gut dokumentiert sind die Stellen, mit denen ich Probleme hatte)


    Installation von Debian 64Bit: DVD bei debian.org runterladen (http://cdimage.debian.org/debi….5-amd64-businesscard.iso) und NUR das System installieren, kein X, kein Webserver nichts. Das ist mit nen paar mal Enter drücken recht flott getan.


    Dann per root einloggen und mit der Installation beginnen:


    Code
    1. apt-get install dpkg-dev gcc g++ libc6-dev make patch debhelper bzip2 kernel-package sudo
    2. apt-get install libncurses5 libncurses5-dev rcconf dialog setserial
    3. apt-get install linux-headers-2.6-amd64 linux-headers-2.6.32-5-common linux-headers-2.6.32-5-amd64
    4. apt-get install psmisc chrony mercurial screen

    Für meine DVB Karte reichen die Kernel-Treiber nicht aus, deswegen habe ich die s2-liplianin Treiber installiert. Vermutlich hätte es auch ein neuerer Kernel getan, aber ich war faul:

    Code
    1. cd /usr/src
    2. hg clone http://mercurial.intuxication.org/hg/s2-liplianin/cd s2-liplianinmake
    3. make install


    Für die Mytique ist noch eine Firmware nötig: Die gibt es in einem Paket für Ubuntu:
    Die firmware wird unter /lib/firmware abgelegt.


    Code
    1. cd ~
    2. wget http://archive.ubuntu.com/ubuntu/pool/multiverse/l/linux-firmware-nonfree/linux-firmware-nonfree_1.9_all.deb
    3. dpkg -i linux-firmware-nonfree_1.9_all.deb


    Die Mystique erzeugt von sich aus nur ein Frontend. Damit kommt der VDR nicht klar. Das müssen wir noch dem Kernel-Module noch ein Parameter mitgeben. Das geht am Besten, indem man unter "/etc/modeprobe.d/" die Datei "ngene.conf" mit dem Inhalt "options ngene one_adapter=0" anlegt.


    Nun benötigen wir X11 für die grafische Ausgabe:

    Code
    1. apt-get install gdm fluxbox xserver-xorg


    Nun ist es an der Zeit den Rechner einmal neuzustarten, um zu schauen, ob X startet und ob die Kernel Module für die DVB-Karte geladen werden.


    Für die VDPAU Grafik-Ausgabe ist es nötig den NVIDIA eigenen Treiber zu installieren:

    Code
    1. apt-get install libgtk2.0-0


    Den NVIDIA Treiber brauchen wir für VDPAU, also für das deinterlacing in der Grafikkarte, sowie die beschleunigte Wiedergabe von MPEG4 Dateien. Mit der CPU ist das fast nicht möglich.
    Damit das Kernel-Module compiliert werden kann benötigen wir den gcc-4.3 (Damit wurde der Kernel bei Debian erzeugt). Diesen müssen wir während der Installation zum Default Compilier machen:


    Code
    1. apt-get install gcc-4.3
    2. cd /usr/bin
    3. rm gcc
    4. ln -s gcc-4.3 gcc


    Nun den NVIDIA Installer runterladen (www.nvidia.com irgendeine Grafikkarte auswählen Linux 64Bit)
    Ggf. funktioniert auch der Link unten im wget


    Code
    1. killall gdm
    2. wget http://de.download.nvidia.com/XFree86/Linux-x86_64/295.40/NVIDIA-Linux-x86_64-295.40.run
    3. chmod a+x NVIDIA-Linux-x86_64-295.40.run
    4. ./NVIDIA-Linux-x86_64-295.40.run


    Beim ersten Aufruf wird ein "conflicting kernel module" gefunden. Der Installer schreibt dann eine blacklist eintrag für modprobe.
    Dannach muss der PC neugestartet werden und der Vorgang wiederholt werden.
    Alles mit JA beantworten insbesondere das Update der X11 Config.


    Nun kann der gcc wieder auf 4.4 gestellt werden


    Code
    1. cd /usr/bin
    2. rm gcc
    3. ln -s gcc-4.4 gcc


    Leider liegen nun die vdpau Libs nicht an der richtigen Stelle, deswegen:


    Code
    1. cd /usr/lib/vdpau
    2. cp * ../
    3. cd ..
    4. ln -s libvdpau_nvidia.so.295.40 libvdpau_nvidia.so


    Mit dem Tool "vdpauinfo" (google, download, autogen.sh, configure, make) kann man in der X Oberfläche sehen, ob alles ok ist.


    Als nächstes habe ich XBMC installiert, um VDPAU zu testen:



    Hier sollte bei "vdpau" nun "Yes" stehen


    Code
    1. make
    2. make install


    Nun kann man in der X Oberfläche mal den xbmc testen.
    Direkt fällt auf, dass die Soundausgabe nicht über HDMI erfolgt:
    Natürlich ist die HDMI Sound-Ausgabe durch die NVIDIA Karte nicht vom Kernel unterstützt. Hier brauchen wir aktuellen ALSA-Treiber:


    Code
    1. apt-get install alsa-utils
    2. cd ~
    3. wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.25.tar.bz2
    4. tar -xjf alsa-driver-1.0.25.tar.bz2
    5. cd alsa-driver-1.0.25
    6. ./configure
    7. make
    8. make install


    Nach dem Reboot sind die nötigen Sound-Kanäle da. Allerdings steht alles auf "mute". Man kann das mit "alsamixer" beheben. Also alsamixer als root aufrufen, Nun wird mit F6 die NVIDIA Soundkarte auswählen. Mit "m" alle 4 Kanäle "unmuten" und den alsamixer verlassen. Es müssen nun die Einstellungen gespeichert werden, damit wir das nicht bei jedem Systemstart wiederholen müssen. Das geht mit "alsactl store".


    Nun kann man im xbmc unter System, Audio, das Custom Device einstellen: "hw:1,7"


    Alle Devices kann sich mit "aplay -l" zu Debugzwecken als root anzeigen lassen.


    Für den VDR müssen wir eine .asoundrc anlegen:


    Code
    1. pcm.!default {
    2. type hw
    3. card 1
    4. device 7
    5. }


    Nun können wir den VDR installieren:


    Noch die nötigen Verzeichnisse anlegen:




    Code
    1. mkdir /var/vdr
    2. mkdir /video
    3. cd /video
    4. touch .update
    5. mkdir /etc/vdr


    Die Config ist in recht vielen Foren beschrieben und dabei ist nichts besonderes. Ich glaube es läuft auch alles sauber mit der Default-Config.


    Nun die VDR Installation selbst.


    Die Plugins werden normalerweise per "make plugins_install" installiert. Zum testen fand ich es praktische wenn die Plugins direkt nach dem Compilieren direkt da sind, wo sie hingehören:


    Code
    1. cd /usr/lib
    2. ln -s /usr/local/src/vdr/PLUGINS/lib/ ./vdr


    Nun sollten wir dafür sorgen, dass der VDR automatisch gestartet:
    Dazu unter /etc/init.d die Datei "vdrstart" mit folgendem Inhalt anlegen (das geht auch schöner, aber das Script benutze ich schon seit 5 Jahren):



    Das Script muss nun noch in den Debian Boot-Prozess eingebunden werden:


    Code
    1. update-rc.d vdrstart start 02


    Über das oben genannte init-Script wird runvdr gestartet, wodrin die VDR Parameter versteckt sind. Ich habe da folgendes Script im Einsatz (unter /usr/local/bin als "runvdr") anlegen:



    Nun ist der VDR beim Systemstart dabei. Nun müssen wir dafür sorgen, dass man automatisch an X angemeldet wird und das Frontend vdr-sxfe automatisch gestartet wird:
    Dazu sollte ein normaler User angelegt werden z.B. "vdr" (mit adduser auf der Konsole)


    Nun wird die gdm Config angepasst, so dass dieser User automatisch angemeldet wird:
    "/etc/gdm/gdm.conf" anpassen:


    Code
    1. [...]
    2. [daemon]
    3. AutomaticLoginEnable=true
    4. AutomaticLogin=<username>
    5. [...]


    In der Config von Fluxbox muss nun ein Script aufgerufen werden, was dann automatisch nach dem anmelden das frontend vdr-sxfe startet:
    Also die Datei unter /home/vdr/autostart.sh anlegen:


    Shell-Script
    1. #!/bin/bash
    2. /usr/bin/irexec --daemon
    3. xhost +
    4. xrandr -r 50
    5. xrandr 2>&1 >/tmp/xrandr.log
    6. /usr/bin/vdr-sxfe --lirc --video=vdpau --post tvtime:method=use_vo_driver --audio=alsa --fullscreen --reconnect xvdr://localhost


    Das xrandr setzt die Bildwiederholfrequenz auf 50Hz, was für den VDR optimal ist. Zur X11 Config kommen wir später nochmal.
    Das irexec benötigen wir, damit wir mit der Fernbedienung zwischen xbmc und xineliboutput wechseln können. Dazu ebenfalls später.
    Nun müssen wir ein Script anpassen "/home/<username>/.fluxbox/init" Nach der ersten Anmeldung an X wird die Datei automatisch angelegt:


    Code
    1. [...]
    2. session.screen0.rootCommand: ~/autostart.sh
    3. [...]


    Nun startet das Frontend automatisch beim Systemstart.


    Nun passen wir die X11 Config an, so dass wir am HDMI Port Full-HD mit den Bildwiederholfrequenzen 24Hz, 50Hz und 60Hz ausgeben können:
    Dazu die "/etc/X11/xorg.conf" anpassen:



    Den VDR lassen wir immer mit 50Hz laufen, xbmc kann man in den Settings so einstellen, dass er das automatisch wählt.


    Nun die Fernbedienung:
    Ich habe die Medion X10 aber es geht auch jede andere, die von Lirc unterstützt wird:


    Standardmäßig wird die X10 durch den Kernel in einem /dev/input/event interface dargestellt.


    Das hat aber zwei Nachteile:

    • Die Fernbedienung sieht für den Kernel wie eine Tastatur aus, floglich fährt der Rechner runter, wenn der Power Button gedrückt wird
    • Per Default sind nicht alle Tasten belegt. Um das zu korrigieren müsste man das Kernel-Module patchen und neuinstallieren. Ich bin aber nicht motiviert deswegen den Kernel neuzucompilieren.

    Deswegen lassen alles lirc machen und deaktivieren das passende event Interface Module im Kernel:


    vi /etc/modprobe.d/blacklist.conf


    Hier folgende Zeile eintragen


    blacklist ati_remote


    Um den Rechner nicht nuezustarten, sollte man das module nun noch entladen


    rmmod ati_remote


    Nun installieren wir Lirc


    apt-get install lirc lirc-modules-source


    Benötigte Module auswählen und konfigurieren (nicht kompilieren, das macht nachher Module-Assistent eh nochmal!)


    dpkg-reconfigure lirc-modules-source


    Module kompilieren und installieren


    apt-get install module-assistant
    module-assistant -f auto-install lirc-modules-source


    Nun benötigen wir eine lirc Config:


    vi /etc/lirc/hardware.conf


    Diese sollte in etwa wie folgt angepasst werden:


    #Try to load appropriate kernel modules
    LOAD_MODULES=true


    # Run "lircd --driver=help" for a list of supported drivers.
    DRIVER="default"
    DEVICE="/dev/lirc0"
    MODULES="lirc_dev lirc_atiusb"
    DEBUG=2


    # Default configuration files for your hardware if any
    LIRCD_CONF="/etc/lirc/lircd.conf"
    LIRCMD_CONF=""


    Nun benötigen wir eine "/etc/lirc/lircd.conf". Diese können wir mit


    irrecord -d /dev/lirc0 /etc/lirc/lircd.conf


    erstellen. Nun kann lircd gestartet werden:


    /etc/init.d/lircd start


    Testen mit (Die gedrückten Tasten werden ausgegeben)


    irw


    Nun funktioniert LIRC. Es muss aber noch in den XBMC integriert werden (Mapping Tasten zu xbmc Funktionen) und in den VDR integriert werden:
    Die Integration habe ich leider nicht genau mitgeschrieben, ist aber sehr dramtisch. Es gibt 3 Config-Stellen:

    • VDR: Der vdr wird ohne remote config gestartet. Trotzdem hat er die Datei /etc/vdr/remote.conf. Hier ist das Mapping enthalten. Der Parameter --lirc wird dem Frontend vdr-sxfe übergeben. Das frontend nutzt die Config vom VDR. In der Datei ist die zweite Spalte der Lirc-Name aus der /etc/lircd/lircd.conf.
    • XBMC: Die Datei keymap.xml gibt es nicht mehr. Das wird über das Verzeichnis
      .xbmc/userdata/keymap geregelt. Dieses Verzeichnis wird unverändert aus
      den xbmc Installitions-Dateien kopiert)


      Nun muss noch die Datei Lircmap.xml unter .xbmc/userdata/ angepasst oder erstellt werden.

    • IREXEC: Config ist in .lircrc im Homedir des VDR users. (irexec wird benutzt um ziwschen VDR und XBMC umzuschalten, irexec ist immer aktiv)

    In der Lircmap.xml muss noch <language>DVD_AUDIO</language>
    ergänzt werden. Nach der Keymap wird damit "AudioNextLanguage" belegt und man kann dann damit die Tonspur im XBMC umschalten. Das brauch ich recht häufig.
    Etwas genauer muss vielleicht noch irexec beschrieben werden: Damit erfolgt die Umschaltung zwischen VDR und XBMC.
    Dazu wird die Datei /home/vdr/.lircrc mit folgendem Inhalt angelegt:


    Die beiden Script SwitchToVDR und SwitchToXBMC müssen noch angelegt werden. Hier als Beispiel das SwitchToVDR Script:


    Code
    1. killall xbmc.bin
    2. killall vdr-sxfe
    3. sleep 1
    4. killall -9 xbmc.bin
    5. killall -9 vdr-sxfe
    6. /usr/bin/xrandr -r 50
    7. /usr/bin/nohup /usr/bin/vdr-sxfe --lirc --video=vdpau --post tvtime:method=use_vo_driver --audio=alsa --fullscreen --reconnect xvdr://localhost&


    Nun noch die xxv Installation als Webinterface in der Kurzfassung... (vdradmind-am läuft bei mir nicht stabil, oder ist sau langsam)


    Ich hoffe für den einen oder anderen ist was Interessantes dabei. Viel Erfolg!

  • Hi,


    der Beitrag ist mit beeindruckender Sorgfalt geschrieben! Gratulation! Gerade für ein erstes Posting im VDR-Portal ist das beinahe einzigartig.


    Ein Problem bei solchen umfassenden Tutorials ist immer, dass sie nach kurzer Zeit im Portal versinken, solange sich keine Diskussion daran knüpft. Im VDR-Wiki könntest Du für das Tutorial eine eigene Seite anlegen, ohne dass die Anleitung dort nach ein paar Wochen soweit abgestiegen ist, dass sie komplett verschwindet. Jedoch ist es relativ schwer, eine neue Seite im VDR-Wiki für eine breite Menge sichtbar zu machen.


    Da Du von Debian ausgehst, würde ich das Stichwort Debian auch in den Threadtitel aufnehmen. Du könntest auch erläutern, warum Du die e-tobi -Debian-Pakete nicht verwendet hast (habe ich jedenfalls nicht gefunden), bzw. warum Du nicht e-tobi Sourcepakete genutzt hast, um daraus dann wieder aktualisierte Debian-Pakete zu backen.


    Gerade, wenn man mehrere PCs auf diese Weise aufsetzen will, kann man bei Debian-Paketen einfach alle diese Pakete auf die anderen Rechner herüberkopieren.


    Viel Spaß mit Deinem System!


    Viele Grüße
    hepi

  • Nettes Tutorial. Ich bastel mir unter Debian auch immer alles zurecht, wie mir gefällt.


    Ich gehe ähnlich vor, aber manche Dinge mache ich anders:


    Bei meiner letzten Installation habe ich die Debian Wheezy netinst benutzt und ausser SSH auch nichts installiert. Hab dann aber erstmal einen 3.3er Kernel kompiliert und installiert, deswegen sind wohl bei mir einige Schritte weggefallen.


    DVB-Treiber hab ich gemäß hier installiert: Aktuelle Treiber für Octopus(ddbridge), CineS2(ngene/ddbridge), DuoFlex-S2, DuoFlex-CT, CineCT sowie TT S2-6400 (Teil 1)


    Anstelle von fluxbox nutze ich openbox + idesk. Hab mir einfach Symbole für XBMC, Fernsehen und Browser auf den Desktop gelegt. Brauche dann keine komplizierten Umschaltskripte oder ähnliches und ist WAF tauglich.


    Die Nvidia Treiber hab ich ähnlich installiert, nur die Orgien mit Symlinks auf gcc4.3 und 4.4 brauchte ich nicht.


    XBMC kompiliere ich selbst aus den repos von margro oder opdenkamp.


    Die Alsa Treiber für die GT520 hab ich mit apt-get install installiert. Früher hab ich Alsa auch noch selbst kompiliert, aber mittlerweile sind Treiber auch bei Debian angekommen.


    Anstelle von LIRC nutze ich inzwischen inputlirc. Hat den Vorteil, dass für die meisten Fernebedienungen inzwischen KEYMAPS vorliegen und man sich die Anlernerei spart. Ebenso sollte dann die Einrichtung unter XBMC einfacher sein. http://wiki.ubuntuusers.de/Lirc


    XXV kann man sich theroetisch sparen, wenn man das live Plugin nutzt.


    Auch wenn die Installation einer fertigen Distri einfacher ist, mach ich persönlich lieber alles selbst. Vor allem lernt man da auch ein bisschen was, wenn man sich damit beschäftigt.


    Danke für die Anleitung.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • Quote

    der Beitrag mit beeindruckender Sorgfalt geschrieben! Gratulation! Gerade für ein erstes Posting im VDR-Portal ist das beinahe einzigartig.

    Ja, aber Hallo. :respekt Das Tutorial kommt wie gerufen, habe mir aus der Buch ne FuSi Esprimo E5625 gefischt.


    Frank

  • Ein Problem bei solchen umfassenden Tutorials ist immer, dass sie nach kurzer Zeit im Portal versinken


    dafür gibt es die Pinning Funktion. Einfach dem Moderator einen Tipp geben.


    (verpflichtet aber den Autor, es dann auch aktuell zu halten)


    Gruß Fr@nk