====== Installation Raspberry Pi als Headless-Server ====== ===== 04.2014 eingeschränkter Erfolg ===== Die Fragen, die während der Projektphase aufgetreten sind findet ihr im [[http://www.minidvblinux.de/forum/index.php/topic,5716.0.html|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 [[http://www.tt-downloads.de/update/Manuals_PC/specs_deu/TechSpec_S2-3600_de.pdf|Datenblatt]] [[http://www.linuxtv.org/wiki/index.php/TechnoTrend_TT-connect_S2-3600|info Hardware]] * TerraTec Cinergy S2 USB [[http://www.linuxtv.org/wiki/index.php/TerraTec_Cinergy_S2|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 ==== * [[http://www.amazon.de/dp/B008PT4GGC|Raspberry Pi RBCA000 Mainboard]] (ARM 1176JZF-S, 512MB RAM, HDMI, 2x USB 2.0, 3,5 Watt) * [[http://www.amazon.de/dp/B002WE6CTU|Transcend Extreme-Speed SDHC 4GB]] Class 10 Speicherkarte * [[http://www.amazon.de/dp/B00FA2V318|Steckernetzteil Micro USB 5V 1200 mA]] * [[http://www.amazon.de/dp/B0097NPQ8W|Stabiles Gehäuse Box Case für Raspberry PI Plexiglas]] (zum Schutz vor Bugs und Spiders im Speicher) * [[http://www.amazon.de/dp/B00HU0KRNI|3er Set passive Alu Kühlkörper]] (Vielleicht auch unnötig - aber im Speicher wird es im Sommer so wie so heiß - also besser mit) * [[http://www.amazon.de/dp/B003EC4HF0|LogiLink 4-Port Hub USB 2.0 mit Netzteil]] * [[http://www.amazon.de/dp/B001HDB4VS|2 x TECHNOTREND TT-connect S2-3600 USB HDTV]] * [[http://www.amazon.de/dp/B003APB3TE|TerraTec Cinergy S2 USB]] * [[http://www.amazon.de/dp/B003MVMTDA|Transcend StoreJet M3 500GB]] (NFS Fritzbox) ==== 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 * 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 [[http://www.vdr-wiki.de/wiki/index.php/SVDRP|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 (1280x720 - 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 (720x576 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 (1280x720 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 (720x576 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 [[http://www.minidvblinux.de/forum/index.php/topic,5724.0.html|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.