This is an old revision of the document!
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:
Da der Raspberry im Speicher betriben 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.
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.
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.
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:
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>
Der erste Schritt ist, dass ihr das Image (aktuell läuft das alles aus dem Speicher) auf die SD-Karte installiert. Das macht ihr 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.
Als nächstes verbindet ihr euch auf die Weboberfläche mit http://eure-IP
Hier stellen wir ein paar Parameter ein, diese werden in der Datei rc.config gespeicher.
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.
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
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
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.
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
Momentan benutze ich AndroVDR unter Android - VDR-Manger wäre auch noch möglich, aber da finde ich das Plugin für MLD nicht.
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 stabieler (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
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
Ein HD-Stream (3Sat HD 1280×720):
Mem: 188996K used, 290040K free, 0K shrd, 804K buff, 96376K cached// CPU: 8% usr 27% sys 37% nic 0% idle 0% io 0% irq 25% sirq// Load average: 2.07 1.47 0.79 3/88 3948//
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 verutlich daran, dass beim RasPi der Controller für USB und Ethernet auf einem Chip sind.
Bisher ist es auf diese Weise möglich HD-Fernsehen im LAN anzuschauen oder aufzuzeichnen. Natürlich fehlt auch noch eine Oberfläche das alles zu bedienen. vdradmin-am ist nicht gut für den Raspi geeignet, hier suche ich noch eine alternative
Das Problem scheint zu sein, sobald der Ethernet Controler / USB Hub zu stark belastet wird (dort hängen ja die Receiver per USB dran und das Netzwerk. Was bedeutet, die Daten kommen per USB an, werden verarbeitet und gehen über Ethernet raus), kommt es zu Aussetzern.
Wenn ihr den RasPi ausschalten wollt, macht ihr das über das SSH Terminal mit dem Befehl: poweroff