[HOWTO] HDTV VDR mit CineS2 auf XEN (Debian Wheezy Stable)

  • Vorwort
    Dies ist die 2. Version meines HowTos zur Erstellung eines XEN-VDRs. Sie ist notwendig geworden, da das alte HowTo auf einem sich wöchentlich ändernden CD Image basierte und einen Release Candidate Kernel verwendet hat.
    Die alte Version findet ihr hier.


    Ziel
    Ziel dieser Anleitung ist das Erstellen eines möglichst stromsparenden
    Streaming VDRs der HD fähig ist. Der Rechner soll im Keller stehen und
    auch noch andere Dienste bereitstellen. Daher wird darauf XEN
    installiert und der VDR nur virtuell betrieben.
    Die Gesamtdauer dieses Tutorials bis der Videostream geht ca. 90 Minuten.
    Achtung: alle Daten die auf dem PC gespeichert sind gehen dabei verloren.


    Als Hardware viel die Wahl auf folgende Komponenten:
    Netzteil: Seasonic SS-660KM 80 Plus Gold (passt leider nicht gescheit in das Gehäuse)
    Mainboard: Intel Server Board S3420GPLX i3420 S1156 ATX
    CPU: Intel Xeon UP L3406 4x 1.86GHz So.1156 BOX
    RAM: 8192MB Kingston 1066MHZ DDR3 ECC REG CL7
    Festplatten: 1x Samsung HD501LJ für System und 2 x WD Caviar Green WD20EARS - Festplatte - 2TB -
    Gehäuse: Chenbro RM314 3HE Server Gehäuse RM31408
    * Chenbro - SATA-SAS-Backplane für Server (Packung mit 2)
    * Intel Remote Management Module 3 - Fernverwaltungsadapter
    * 2 x Cine S2


    Das Remote Management Module hat den Vorteil, das man den Rechner
    komplett fernbedienen kann (auch im BIOS). Man kann also selbst die
    Installation aus der ferne durchführen. Ein DVD-Laufwerk ist ebenfalls
    nicht notwendig. Da man die Installations-CD Iso-Datei über das Remote
    Management Modul einbinden kann. (Sehr angenehm)


    Nicht jede Position der CineS2 Karten funktioniert. Die folgende funktioniert bei mir:
    [IMG:http://www.timhansen.de/vdr/xenvdrcines2_2013/slots1_small.jpg]



    Debian Installieren


    IP Adresse festlegen



    Xen Installieren und Bootloader anpassen
    siehe auch:
    http://wiki.ubuntuusers.de/GRUB_2/Konfiguration
    Hinweis: Falls der Kernel 3.1 mittlerweile relased ist, das entsprechende Paket installieren

    • Ab jetzt kann man entweder weiter am Rechner stehen oder mittels SSH drauf zugreifen
    • Die Paketlisten aktualisieren

      Code
      1. apt-get update
    • Den richtigen Zeichensatz einstellen

      Code
      1. dpkg-reconfigure locales


      "de_DE.UTF-8 UTF8" auswählen
      "de_DE.UTF-8" als Standard

    • In Putty unter Translation "UTF-8" auswählen
    • mittels aptitude folgendes installieren:
      xen-system-amd64
      xen-hypervisor-4.1-amd64
      xen-utils-4.1eeed
      xen-utils-common
      xen-linux-system-am64
      xen-linux-system-3.2.0-4-amd64
      xen-docs-4.1
      xen-tools

      Code
      1. aptitude install xen-system-amd64 xen-linux-system-amd64 xen-docs-4.1 xen-tools


      [IMG:http://www.timhansen.de/vdr/xenvdrcines2_2013/50.png]

    • ggf. DVD einlegen
    • DVD wieder entfernen
    • Rechner neustarten

      Code
      1. reboot
    • Neustart und sich merken unter welchem Hauptmenu und Untermenüeintrag sich der richtige Eintrag verbirgt. Man braucht den Eintrag "Xen 4.1-amd64" > ".... 3.2.-rc7-amd64"
      Der erste Eintrag hat die Nummer 0
      [IMG:http://www.timhansen.de/vdr/xenvdrcines2_2013/60.png


      [IMG:http://www.timhansen.de/vdr/xenvdrcines2_2013/61.png]

    • In der Datei /etc/default/grub den Eintrag GRUB_DEFAULT anpassen. Bei mir: GRUB_DEFAULT="2>0"

      Code
      1. nano /etc/default/grub


      [IMG:http://www.timhansen.de/vdr/xenvdrcines2_2013/70.png]

    • Die Informationen des Bootloaders aktualisieren

      Code
      1. update-grub
    • Neustarten, jetzt sollte der Bootloader XEN als Default Einstellung ausgewählt haben

      Code
      1. reboot

    PCI Back beim Start ausführen
    siehe auch:
    http://wiki.ubuntuusers.de/kernelmodule
    http://wiki.xen.org/xenwiki/As…_module?highlight=(module)

    • Laden des ngene Moduls verhindern

      Code
      1. echo "blacklist ngene" > /etc/modprobe.d/blacklist-ngene.conf
      2. update-initramfs -u
    • xen-pciback immer laden

      Code
      1. echo "xen-pciback" >> /etc/modules
    • "lspci | grep Micronas" ausführen, und sich die ersten drei Zahlen merken. Damit bekommt man die PCI Adresse der CineS2 Karten heraus (Hier: 06:00.0 sowie 04:00.0)

      Code
      1. root@debian:~# lspci | grep Micronas
      2. 04:00.0 Multimedia video controller: Micronas Semiconductor Holding AG nGene PCI-Express Multimedia Controller (rev 01)
      3. 06:00.0 Multimedia video controller: Micronas Semiconductor Holding AG nGene PCI-Express Multimedia Controller (rev 01)
    • pciback Optionen definieren (Bitte "06:00.0" und "04:00.0" durch die PCI Adressen der CineS2 ersetzten. Die Nullen vorne bleiben stehen.

      Code
      1. echo "# hide (0000:06:00.0) and (0000:04:00.0)" >> /etc/modprobe.d/xen-pciback.conf
      2. echo "options xen-pciback hide=(0000:06:00.0)(0000:04:00.0) " >> /etc/modprobe.d/xen-pciback.conf
    • In der Datei /etc/modprobe.d/xen-pciback.conf steht jetzt folgendes

      Code
      1. # hide (0000:06:00.0) and (0000:04:00.0)
      2. options xen-pciback hide=(0000:06:00.0)(0000:04:00.0)
    • Neustarten

      Code
      1. reboot
    • Überprüfen, dass "ngene" nicht geladen wird:

      Code
      1. cat /var/log/messages | grep ngene


      sollte keine aktuellen Einträge mehr liefern

    • Überprüfen, dass die PCI Karte zugeordnet werden kann:

      Code
      1. xm pci-list-assignable-devices


      sollte die Adressen der Karten zurückgeben. Hier:

      Code
      1. root@debian:~# xm pci-list-assignable-devices
      2. 0000:06:00.0
      3. 0000:04:00.0
    • In /etc/xen-tools/xen-tools.conf folgendes einstellen:

      Code
      1. dir = /home/xen
      2. size = 10Gb # Disk image size.
      3. memory = 512Mb# Memory size
      4. swap = 512Mb# Swap size
      5. dhcp = 1
      6. passwd = 1
    • In /etc/network/interfaces jetzt folgendes einstellen (Die alten Einstellungen können wieder auskommentiert werden).


      Die Einstellungen bewirken, das eine green und eine orange Bridge angelegt werden. (Kann man sich wie einen Software Switch vorstellen) eth0 ist mit green, eth1 mit orange verbunden. eth0 ist zudem mit einer IP ausgestattet, dadurch kann man die Xen-Maschine auch erreichen.

    • Jetzt neustarten

      Code
      1. reboot


    Paravirtualisierte DomU erzeugen

    • Mittels "xen-create-image --hostname PV" eine virtuelle Maschine anlegen:

    • Das dauert mehrere(>10) Minuten so, irgendwann kommt dann:

    • Passwort für die VM eingeben, und nochmal eingeben.
    • In die Datei /etc/xen/PV.cfg folgendes hinzufügen. Adressen wieder entsprechend anpassen

      Code
      1. pci = [ '06:00.0' , '04:00.0' ]
      2. extra ='iommu=soft'

    DomU starten

    • Mittels "xm create PV.cfg" die DomU starten
    • Mittels "xm console PV" in die DomU wechseln, und einloggen
    • Dort "pciutils" via aptitude installieren

      Code
      1. apt-get install pciutils
    • Jetzt sollte "lspci" dort die Karten anzeigen

      Code
      1. root@PV:~# lspci
      2. 00:00.0 Multimedia video controller: Micronas Semiconductor Holding AG nGene PCI-Express Multimedia Controller (rev 01)
      3. 00:01.0 Multimedia video controller: Micronas Semiconductor Holding AG nGene PCI-Express Multimedia Controller (rev 01)
    • "cat /var/log/messages | grep ngene" sollte etwas liefern wie:

    • Jetzt die Firmware Datei der CineS2 herunterladen und an die richtige Stelle kopieren. Je nach Version der CineS2 kann es ein anderer Download Link sein siehe Anleitung auf http://linuxtv.org/wiki/index.…_cineS2_DVB-S2_Twin_Tuner

      Code
      1. cd ~
      2. wget http://l4m-daten.de/downloads/firmware/dvb-s2/linux/all/ngene_18.fw
      3. cp ngene_18.fw /lib/firmware
    • Mittels "halt" die PV anhalten
    • Mittels "xm create PV.cfg" die DomU starten
    • Mittels "xm console PV" in die DomU wechseln, und einloggen
    • Falls es zu großen Problemen in der DomU kommt (Der Kernel spuckt komische Meldungen aus und "dmesg | grep ngene" spuckt etwas aus wie:

    • Dann hat man wahrscheinlich das

      Code
      1. extra ='iommu=soft'
    • vergessen. Falls dies auftritt sollte man aber die ganze Dom0 neustarten, ansonsten will die Karte nicht mehr.
    • Ein korrekt initialisierter ngene Treiber liefert z.B. folgendes auf "dmesg | grep ngene"
      root@PV:~# dmesg | grep ngene

      Code
      1. [0.926051] ngene 0000:00:00.0: enabling device (0000 -> 0002)
      2. [0.926208] ngene 0000:00:00.0: Xen PCI mapped GSI16 to IRQ27
      3. [0.926232] ngene: Found Linux4Media cineS2 DVB-S2 Twin Tuner (v5)
      4. [0.946232] ngene 0000:00:00.0: setting latency timer to 64
      5. [0.946328] ngene: Device version 1
      6. [0.954277] ngene: Loading firmware file ngene_18.fw.
    • In der PV nimmt man nun folgende Änderungen vor
    • "vdr" mittels aptitude installieren

      Code
      1. aptitude install vdr
    • Bestätigen, dass man "/var/lib/video.00" als erstellen möchte
    • "Satellite" auswählen
    • "vdr-plugin-streamdev-server" via aptitude installieren

      Code
      1. aptitude install vdr-plugin-streamdev-server
    • erlaubte IP Adressen dem VDR hinzufügen. (ggf anpassen)

      Code
      1. echo "192.168.0.0/16" >> /etc/vdr/svdrphosts.conf
      2. echo "192.168.0.0/16" >> /etc/vdr/plugins/streamdevhosts.conf
    • In der Datei "/etc/default/vdr" den vdr bei jedem start mitstarten lassen:

      Code
      1. ENABLED=1
    • Mittels "halt" die DomU herunterfahren
    • Mittels "xm create PV.cfg" die DomU starten
    • Mittels "xm console PV" in die DomU wechseln, und einloggen
    • Mittels "ifconfig" die IP der PV herausfinden
    • Jetzt sollte man falls alles geklappt hat mit dem VLC Player den Stream "http://[IP_der_DomU]:3000/TS/1" empfangen können

    Stromverbrauch

    • Obwohl es mein Ziel war einen möglichst stromsparenden Server aufzubauen ist, erfüllt der Stromverbrauch nicht meine Erwartungen.
    • Hier die Messungen (Idle, nur eine Festplatte, keine VM gestartet)
      Windows 7: 67W
      Linux ohne XEN: 67W
      Linux mit XEN: 82W
      Xen erzeugt also einen Mehrverbrauch von ca. 15W
    • Stromverbraucher die ich identifizieren konnte:
      Gehäuselüfter (2x4W) -> jetzt deaktiviert
    • Falls ihr noch Tipps habt wie man den Stromverbrauch weiter reduzieren kann, bin ich dafür dankbar.


    Ich hoffe ich konnte euch trotzdem mit dieser Anleitung ein wenig dabei helfen einen Xen-VDR aufzusetzen.



    Viele Grüße
    Tim

  • Saubere Arbeit, ziemlich "wuchtig", aber wäre Dein HowTo für ein Client/Server Prinzip nicht hier besser aufgehoben: http://www.vdr-portal.de/board60-linux/board104-server/ ... ?

    HowTo: APT pinning

  • Hallo fnu,


    auf Grund des starken HowTo Charakters und der Tatsache, dass die Vorgängerversion ebenfalls hier ist, fand ich den Post in diesem Forum schon recht passend. Es werden ja auch schon einige VDR spezifische Dinge betrachtet, Cine S2 Firmware, VDR Installation und Streaming.

  • @TimHansen
    Hallo,


    sehr gute Anleitung! Danke.


    Hast du den Stromverbrauch schon senken können?
    Vor dem gleichen Problem stehe ich auch gerade.



    Gruß
    Denny

    VDR-CLIENT: Asrock Q1900-ITX, 2GB RAM, OCZ Agility 3 60GB, OpenElec-XMBC XVDR (UEFI 18sek Bootzeit)

    VDR-CLIENT: Raspberry-Pi mit OpenElec und XVDR Plugin

    VDR-SERVER: HP MicroServer N54, 8GB Ram, BiosMod, 12TB HDD, XenServer mit Ubuntu Server VM als VDR-Server, C2


  • Danke für die Anleitung, die hat es mir erheblich vereinfacht auf meinem Dell PowerEdge T20 den VDR in einem Xen 4.4 PV VM zu packen und die DVB-S Karte durchzureichen.
    Trotz Xeon war
    extra ='iommu=soft' die richtige Wahl und nicht wie mal vorgeschlagen extra ='iommu=pv' - mit letzterem kam kein Datenstrom der DVB-S beim VDR an.


    Einzige Änderung zu der Anleitung, bei xl (ersetzt xm) heißt es nun
    xl pci-assignable-list


    BTW verbraucht der T20 (gibts mit Xeon und 4GB ECC gerade für 300€) mit XEN, einer SSD, 6GB Ram und ausgeschaltetem Bildschirm gerademal 20,1W. Packe ich eine Budget DVB-S dazu steigt der Verbrauch auf ca. 27W.

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0

  • TimHansen
    Saubere Arbeit vielen Dank dafür
    nur so als Anregung:
    Vielleicht könntest du das Howto mittels spoiler übersichtlicher gestalten
    siehe:
    [HOWTO] (working) Allwinner A20 (Cubieboard2) mit VDR + Softhd-device und streamdev


    Dann ist der Post nicht so lang und es liest sich besser


    spoiler gehen mittels SP button im editor und wenn man ein

    Code
    1. [spoiler=test][/spoiler]


    dann erhällt man