User Tools

Site Tools


mld:tutorials:installation_raspberry_als_server

Installation Raspberry Pi als Headless-Server

04.2014 eingeschränkter Erfolg

Die Fragen, die während der Projektphase aufgetreten sind findet ihr im MLD-Forum

Hier wird beschrieben, wie ihr euch einen Headless-Server bastelt auf Grundlage eines Raspberry PI. Das Ziel wird sein, ein robuster, stromsparender VDR Server, der im Keller oder Dachboden liegen kann und euer LAN mit den Streams versorgt. Wenn der Server läuft, werde ich noch ein paar mögliche Clientlösungen, die ich selber einsetze, beschreiben.

Die Anforderungen an das Projekt sind:

  • 24 Stunden Betrieb
  • möglichst geringer Energieverbrauch
  • keine beweglichen Teile
  • TT-connect S2-3600 USB Datenblatt info Hardware
  • TerraTec Cinergy S2 USB info Hardware
  • streaming in das LAN
  • EPG Search
  • Timer
  • VDRAdmin-AM
  • Aufnahmen sollen per NFS auf einer USB-HD an einer Fritzbox gespeichert werden

Da der Raspberry im Speicher betrieben wird, soll die Festplatte für die Aufnahmen an einem andren Ort sein. Wenn eine Fritzbox vorhanden ist, bietet sich diese natürlich an. Die Fritzbox kann kein NFS mit original Firmware von AVM. Entweder muss es ein NAS sein, welches NFS kann oder eine modifizierte Firmware.

Hardware

Vorbereitung zur Installation

Ich habe mich zuerst dafür entschieden, das MLD-4.0.0-rpi_simple_2014.03.29-51 zu benutzen. In dem Simple Archiv sind nur die nötigsten Pakete dabei und Netzwerkunterstützung.

Gehäuse und Kühlkörper

Der Zusammenbau stellt kein Problem dar, alle Komponenten passen einwandfrei. Der große der drei Kühlkörper wird auf den SOC geklebt, das ist der große Chip in der Mitte. Ein kleiner Kühlkörper kommt auf den Chip für den Ethernet / USB -Controller Chip, direkt hinter den USB-Anschlüssen. Der dritte Kühlkörper kommt auf den Spannungswandler zwischen dem HDMI Anschluss und dem USB-Power Anschluss. Der Kühlkörper ist eigentlich etwas zu groß, das macht aber nichts, er steht ein bisschen an den Rändern über. Danach wird der RasPi in das Gehäuse gepackt.

erster Start mit MLD

Die SD-Karte wird an einem PC mit FAT32 formatiert. Das Image haben wir uns oben herunter geladen, jetzt wird jetzt entpackt. Der Inhalt des Archives sollte dann ungefähr so aussehen:

  • bootcode.bin 24.03.2014 21:27 17.824
  • cmdline 24.03.2014 21:27 72
  • config.txt 24.03.2014 21:27 130
  • COPYING 24.03.2014 21:27 26.430
  • fixup.dat 24.03.2014 21:27 5.786
  • initrd 24.03.2014 21:27 2.406.845
  • kernel 24.03.2014 21:27 2.992.984
  • opkg 29.03.2014 12:31 <DIR>
  • start.elf 24.03.2014 21:27 2.534.264
  • VERSION 24.03.2014 21:27 14

Den entpackten Inhalt dieses Archives KOPIERT ihr auf die SD-Karte. Dazu braucht ihr keine Software (wie unetbootin oder yumi o.Ä.). Das funktioniert nur mit SD-Karten, die eine FAT32 Partition enthalten. Unter Windows ist das immer so, jedoch wird die Installation später die Partitionen verändern, so dass ihr dafür sorgen müsst, dass bei einer evt. neuen Installation nach diesem Prinzip auf eine bereits benutzte SD-Karte wieder nur die eine FAT32 Partition ist.

Die SD-Karte stekt ihr jetzt in den RasPi. Verbindet den RasPI mit eurem LAN. Steckernetzteil anschließen. RasPi bootet.

Die TerraTec Cinergy S2 USB hat eine eigenen Stromversorgung, für diesen Receiver braucht man nicht zwingend einen aktiven USB-Hub.

Der RasPi ist so konfiguriert, dass er per DHCP eine Adresse zugewiesen bekommt. Schaut auf eurem Router nach, welche das ist. Bei einer FritzBox findet ihr das in dem Menu “Heimnetz - Netzwerk”, wenn dort ein PC mit dem Namen “MLD_SERVER” steht, findet ihr seine IP rechts davon.

Damit ihr auf das MLD auf dem RasPi drauf kommt, benutzt ihr jetzt einen SSH-Client (der Zugang via SSH ist auf dem Image bereits voraktiviert), PuTTY ist eine gute Wahl. In der “PuTTY Configuration” braucht ihr nur die IP Adresse in das Feld “Host Name (or IP adress)” eintragen und auf “open” klicken. Bei der ersten Verbindung müsst ihr den Serverkey bestätigen, danach seht ihr im Terminalfenster:

login as:

Der Benutzer, mit dem ihr euch einloggen könnt ist “root”, das Passwort ist auch “root”

login as: root
root@192.168.222.61's password: root
BusyBox v1.22.1 (2014-03-07 14:28:47 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.
MLD>

MLD auf die SD-Karte installieren

Der erste Schritt ist, dass ihr das Image (aktuell läuft das alles aus dem Speicher) auf die SD-Karte installiert. Das macht ihr über das Webinterface oder auf der Kommandozeile mit dem Befehl

MLD> install

start installation
partitioning disk mmcblk0 
format disk mmcblk0p1 
format disk mmcblk0p2 
install system on mmcblk0p2 
write boot files on mmcblk0p1 
Installation completed 

Dann hat alles funktioniert. Also dann Reboot und das neue System starten.

MLD konfigurieren über das Webinterface

Als nächstes verbindet ihr euch auf die Weboberfläche mit http://eure-IP (oder wenn z.B. eine Fritzbox verwendet wird per http://MLD)

Hier stellen wir ein paar Parameter ein, diese werden in der Datei rc.config gespeicher. FIXME Falls jemand weiß, wie ich die Konfiguration über die Kommanozeile neu einlese, soll er das bitte hier dokumentiern, so dass man das WebIf nicht mehr braucht :-)

Schaltet DHCP benutzen aus und gebt dem Raspi eine feste IP-Adresse. Das war es, das WebIf brauchen wir jetzt nicht mehr. Alternativ kann auch in einigen Routern eingestellt werden, dass dem RPI eine Feste IP Adresse zugewiesen werden soll.

Tipp: Um mal schnell eine zweite temporäre IP-Adresse für euer MLD zu benutzen (weil vielleicht das NAS in einem anderen Netz ist) könnt ihr das über die Kommandozeile mit dem Befehl machen:

ifconfig eth0:tempIP 192.168.1.1 up

MLD konfigurieren über das SSH Terminal

Wir brauchen ein paar Pakete und andere fliegen raus:

opkg remove webserver
opkg remove psplash
opkg install tools
opkg install mc
opkg install ntp-client
opkg install dvb
opkg install nfs-client
opkg install vdr
opkg install vdr-plugin-streamdev-server
opkg install vdr-plugin-epgsearch
restart vdr

Wenn ihr VDR installiert, müsst ihr noch die für euch passende Kanalliste aussuchen, ich wähle: DVD-S-S19.2E-Astra-FTA-DE-HD

Wer das OSD benutzen möchte, sollte noch zusätzlich vdr-plugin-control installieren. Das ermöglicht die Ausgabe des OSD auf einem Telnet-Terminal - der Standardport ist 2002.

Optional, wenn ihr einen Monitor und Tastatur an eurem Raspi habt, solltet ihr noch das vdr-plugin-skincurses installieren, dann lässt sich das VDR OSD auf Konsole 5 benutzen.

Das Herunterfahren des VDR kann man verhindern (24 Stundenbetrieb), indem ihr den VDR stoppt und in der Datei /etc/vdr/setup.conf die Werte auf 0 ändert.

MinEventTimeout = 0
MinUserInactivity = 0

Danach den VDR wieder starten.

Konfiguration testen

Zum Streamdev Server testen, gebt ihr die Adresse des RasPi in einen Browser ein und den Port 3000. Dort solltet ihr nun die Kanalliste sehen.

http://meine-IP-Raspi:3000

Klickt mit rechts auf einen Sender und kopiert euch die URL in die Zwischenablage. Mit VLC könnt ihr schon mal schauen, ob ein Fernsehbild gestreamt wird. Dazu öffnet ihr VLC und klickt im Menu auf “Medien” –> “Netzwerkstream öffnen…”, dort fügt ihr die URL aus der Zwischenablage ein. Kommt ein Bild? → Dann ist alles Gut.

Jetzt könnt ihr testen, ob eine Aufnahme auch tatsächlich auf dem NAS gespeichert wird. Dazu könnt ihr temporär die NFS-Freigabe direkt auf das VZ data mounten. Die Freigabe hier im Beispiel heißt “NFS”. “mount IP-Adresse-NAS:/Freigabenamen-NAS /mnt/data/tv” Bsp:

mount 192.168.1.2:/NFS /mnt/data/tv

Dann startet ihr eine Aufnahme, da wir ja keinerlei Frontend haben, machen wir das zum Testen direkt über SVDRP. Dazu könnt ihr auch Putty verwenden. Öffnet eine neue Sitzung. Der Host ist euer RasPi, der Port ist 6419 und das Protokoll RAW.

Mit dem Kürzel: NEWT wird ein neuer Timer erstellt:

1:19:4:2010:2150:51:50:Testaufnahme NAS:

aktiv:Kanalnummer:Tag_des_Monats:Startzeit:Endzeit:Priorität:Dauerhaftigkeit:Titel:

wird die auf dem NAS gespeichert, ist so weit alle OK und wir können das NAS in der /etc/fstab mounten. Dadurch wird das NAS automatisch beim Starten gemounted. Dazu die Zeile ganz unten in der /etc/fstab einfügen (z.B. mit mc und Datei bearbeiten):

192.168.1.2:/NFS /mnt/data/tv nfs rw 0 0

Steuerung des VDR

Momentan benutze ich AndroVDR unter Android - VDR-Manger wäre auch noch möglich, aber da finde ich das Plugin für MLD nicht.

Fernseh schauen mit einem Android Tablet/Handy oder PC

Ihr könnt mit VLC so ziemlich überall Fernsehen, aber am besten ist das geeignet, wenn ihr mit einem Android Tablet schauen wollt. Ich empfehle euch VLC oder meiner Meinung besser, weil stabiler (aber nicht kostenfrei) vPlayer. Aufnahmen könnt ihr euch auch unter Android anschauen. Das Problem ist, dass die meisten Dateimanger die Aufnahmen im Netzwerk herunterladen wollen. Mit dem “Filemanger” könnt ihr sie aber auch streamen (da kommt der Dialog “öffnen mit…”) mit VLC oder vPlayer ;-)

Tuning des Raspberry

Wer möchte, kann sich den Raspi auch übertakten, das bringt noch mal ein bisschen mehr Performance. Ich habe meinen mit 900 MHz und 32 MB GPU RAM laufen. Eigentlich sollte es möglich sein, der GPU nur 16 MB RAM zu zuordnen, funktioniert bei meinem aber nicht. In der Datei /boot/config.txt müssen dazu die Werte für arm_freq, core_freq und sdram_freq hinzugefügt werden und der Wert für gpu_mem angepasst werden. Hier ein Beispiel der config.txt:

#hdmi_mode=20
#hdmi_group=1
sdtv_mode=2
sdtv_aspect=3
disable_splash=1
gpu_mem=32
kernel=kernel
cmdline=cmdline
arm_freq=900
core_freq=450
sdram_freq=450

Auslastung des Raspi mit top

Ein HD-Stream (1280×720 - TerraTec Cinergy S2 USB)

Mem: 167196K used, 311840K free, 0K shrd, 804K buff, 73796K cached
CPU:  15% usr  23% sys  12% nic  24% idle   0% io   0% irq  23% sirq
Load average: 0.71 0.49 0.51 3/87 4665 

Ein SD Stream (720×576 TerraTec Cinergy S2 USB)

Mem: 161528K used, 317508K free, 0K shrd, 804K buff, 73740K cached
CPU:   2% usr   9% sys   2% nic  80% idle   0% io   0% irq   5% sirq
Load average: 0.02 0.23 0.45 2/88 4661

Eine HD Aufnahme (1280×720 TerraTec Cinergy S2 USB)

Mem: 204540K used, 274496K free, 0K shrd, 804K buff, 98084K cached
CPU:  13% usr  42% sys   1% nic  24% idle   0% io   0% irq  18% sirq
Load average: 1.16 0.60 0.53 3/87 4678

Eine SD Aufnahme (720×576 TerraTec Cinergy S2 USB)

Mem: 203788K used, 275248K free, 0K shrd, 804K buff, 97536K cached
CPU:   6% usr  17% sys   2% nic  61% idle   0% io   0% irq  11% sirq
Load average: 1.10 1.10 0.79 2/86 4693

Auslastung im HD Betrieb

1 Stream 2 Streams 1 Stream und 1 Aufnahme 1 Aufnahmen 2 Aufnahmen Bildqualität
USB 1: TerraTec Cinergy S2
USB 2: leer
15% usr 23% sys
12% nic 24% idle
0% io 0% irq 23% sirq
18% usr 25% sys
1% nic 33% idle
0% io 1% irq 18% sirq
sehr gut
USB 1: TerraTec Cinergy S2
USB 2: TerraTec Cinergy S2
bitte ergänzen bitte ergänzen bitte ergänzen bitte ergänzen bitte ergänzen
USB 1: TechoTrend-connect S2-3600
USB 2: leer
21% usr 28% sys
23% nic 2% idle
0% io 0% irq 23% sirq
14% usr 42% sys
2% nic 0% idle
0% io 0% irq 40% sirq
viele Artefakte
USB 1: TechoTrend-connect S2-3600
USB 2: TechoTrend-connect S2-3600
29% usr 23% sys
6% nic 3% idle
0% io 0% irq 36% sirq
33% usr 19% sys
0% nic 0% idle
0% io 0% irq 47% sirq
25% usr 25% sys
0% nic 0% idle
0% io 0% irq 49% sirq
21% usr 47% sys
1% nic 0% idle
0% io 0% irq 29% sirq
31% usr 42% sys
0% nic 0% idle
0% io 0% irq 25% sirq
live TV schlecht
1. Aufn sehr gut

Auslastung im SD Betrieb

1 Stream 2 Streams 1 Stream und 1 Aufnahme 1 Aufnahmen 2 Aufnahmen Bildqualität
USB 1: TerraTec Cinergy S2
USB 2: leer
2% usr 9% sys
2% nic 80% idle
0% io 0% irq 5% sirq
6% usr 17% sys
2% nic 61% idle
0% io 0% irq 11% sirq
sehr gut
USB 1: TerraTec Cinergy S2
USB 2: TerraTec Cinergy S2
bitte ergänzen bitte ergänzen bitte ergänzen bitte ergänzen bitte ergänzen
USB 1: TechoTrend-connect S2-3600
USB 2: leer
18% usr 25% sys
1% nic 33% idle
0% io 1% irq 18% sirq
11% usr 37% sys
1% nic 19% idle
0% io 0% irq 28% sirq
wenig Artefakte
USB 1: TechoTrend-connect S2-3600
USB 2: TechoTrend-connect S2-3600
13% usr 33% sys
17% nic 7% idle
0% io 0% irq 27% sirq
18% usr 38% sys
2% nic 0% idle
0% io 0% irq 40% sirq
15% usr 41% sys
0% nic 0% idle
0% io 0% irq 43% sirq
12% usr 52% sys
3% nic 0% idle
0% io 0% irq 31% sirq
15% usr 44% sys
0% nic 0% idle
0% io 0% irq 40% sirq
live TV Artefakte

Das bittere Ende / ungelöste Probleme

Ich bekomme nicht alle HD Sender mit der TerraTec Cinergy S2 USB zum laufen Siehe Forum

Leider bin ich bis jetzt gescheitert, einen RasPi so einzurichten, dass eine ruckelfreie Benutzung mit mehr als einem Receiver möglich wäre. Dies liegt vermutlich daran, dass beim RasPi der Controller für USB und Ethernet auf einem Chip sind.

Mit der TechoTrend-connect S2-3600 USB sind viele Artefakte im Bild m(

Eure Hilfe ist gefragt, damit es besser funktioniert

Mein Eindruck ist, dass es sehr auf die Hardware (oder besser die Treiber für die Hardware) der verwendeten Receiver ankommt. Die TerraTec Cinergy S2 USB ist wesentlich Ressourcen schonender als die TechoTrend-connect S2-3600 USB. Falls ihr noch andere USB Receiver habt, wäre es klasse, wenn ihr mit ein und zwei Stück hier über die Performance berichten würdet.

mld/tutorials/installation_raspberry_als_server.txt · Last modified: 2015/03/26 19:46 (external edit)