Alle Beiträge von Holger

SAT-Streamer mit RaspberryPi, MLD und Mac OS X

Ich wollte meinem RaspberryPi immer mal wieder eine neue Aufgabe geben und hatte nie Zeit dafür oder auch keine konkrete Anforderung. Was ich aber immer schon mal vor hatte, war es, die Signale meiner Sat-Anlage ins Netzwerk zu streamen.

Mein Sat-Receiver – ein Kathrein UFS-913 – kann dies schon. Und da er zwei Tuner hat, kann auch ein Teilnehmer fernsehen und ein anderer ein anderes Programm streamen. Je nachdem, welcher Transponder auf dem jeweiligen Tuner aktiv ist, geht sogar noch eine Aufnahme oder ein zweiter Stream.

Meine Sat-Anlage (Astra 19,2E) wird über einen Multischalter in verschiedene Räume verteilt. Natürlich könnte ich jetzt in jedem Raum einen Fernseher mit einem entsprechenden Tuner installieren. Das ist aber nicht mehr zeitgemäß:

Meine Tochter hat nur z.B. noch einen PC mit dem sie ab und zu auf den Stream des UFS-913 zugreift und sonst Streamingdienste nutzt

Bevor ich den UFS-913 gekauft habe, war die zusätzliche Anschaffung eines elgato netstream sat immer mal wieder in der Diskussion. Mir erschien diese Variante aber immer zu teuer.

Was lag nun näher, als dem RaspberryPi die Aufgabe zu geben, die DVB-S2 Signale ins interne Netz zu streamen.

Die Lösung: MLD

Zitat aus der MLD Webseite:

Die MLD bietet eine einfache Möglichkeit einen PC in eine Multimedia Zentrale auf der Basis des Video Disk Recorder (VDR) von Klaus Schmidinger zu verwandeln.

Was bietet dieser digitale Videorekorder auf Linux-Basis:

  • Fernsehen
  • zeitgesteuerte Aufnahmen und
  • zeitversetzte Wiedergabe (Timeshifting)
  • Abspielen von DVDs und MP3s,
  • Programmierung und Konfiguration per Browser,
  • und vieles mehr

Und seit neuestem gibt es vom MLD auch eine Edition für den Raspberry PI

Zunächst einmal fand ich hier eine grundsätzliche Anleitung zur Installation der MLD auf dem Raspberry. Im Wesentlichen konnte ich dieses Vorgehen übernehmen, musste aber an einigen Stellen noch nacharbeiten, doch dazu später mehr.

Neben dem Raspberry PI (den ich schon hatte) braucht man noch einen DVB-S(2) USB Receiver. Im Netz findet man häufig die Receiver von Sundtek, die für linuxtv geeignet sind, mir aber viel zu teuer waren. Ich bin dann nach einiger Recherche auf den DVBSky S960 gestoßen, der beim Amazon bereits für unter 50 EUR zu haben war.

DSC06825
DVBSky S960

Da in der MLD grundsätzlich ein VDR werkelt, der laut dieser Webseite mit dem DVBSky S960 klar kommt, habe ich einfach mal zugeschlagen.

Geliefert wird der DVBSky S960 mit Netzteil (Vorteil, weil man am Raspberry dann nicht noch einen aktiven USB-Hub braucht), USB-Kabel, Fernbedienung (kann ich sicher noch für andere Projekte brauchen) und einer Mini-CD mit Treibern und Software. In dem Zusammenhang: In meinem Haushalt gibt es kein CD-ROM Laufwerk mehr, in dem diese Mini-CDs verwendet werden können. Das hätte man sich als Hersteller auch sparen können. Aber die Herstellerseite bietet auch alles zum Download an. Gut so!

Wir benötigen eine FAT32 formatierte SD-Karte mit einer Größe von mindestens 4GB.  Da ich auf einem Mac arbeite, starte ich das Festplattendienstprogramm und lösche die erkannte Karte mit dem FAT-Dateiformat:

Bildschirmfoto 2014-09-22 um 20.52.15

Dann laden wir die MLD in der Server Version hier herunter

Bildschirmfoto 2014-09-22 um 21.01.27
Das Image für einen Streamingserver

… und entpacken dieses.

Wenn beim RaspberryPi eine MPEG2-Lizenz vorliegt, kann man diese bereits jetzt in die config.txt eintragen in dem die Zeile mit der MPEG2-Lizenz hinzugefügt wird (nur als Beispiel!):

decode_MPG2=0x1a2b3c4d

Alle enthaltenen Dateien markieren wir im Finder und kopieren diese auf die SD-Karte:

Bildschirmfoto 2014-09-22 um 20.56.41
Inhalt der SD-Karte

Mit dieser SD-Karte im RaspberryPi starten wir diesen. MLD bringt in der Server-Version einen SSH-Server und einen DHCP-Client mit. Nun gilt es herauszufinden, welche IP-Adresse der RaspberryPi mit dieser Karte nun hat. Im Falle einer Fritzbox als Router im Heimnetz können wir diese recht einfach über die Weboberfläche der Fritzbox finden. Unter „Heimnetz“ -> „Netzwerk“ finden wir einen Eintrag ähnlich diesem hier

Bildschirmfoto 2014-09-22 um 21.10.00

Wir können den RaspberryPi nun entweder unter seinem DNS-Namen (hier MLD_SERVER) oder seiner IP-Adresse (hier 192.168.178.113) ansprechen und eine SSH-Verbindung aufbauen. Wir starten das Terminal und geben folgendes ein:

ssh -l root MLD_SERVER

Eventuell muss man die SSH-Verbindung noch bestätigen (mit „yes“)

The authenticity of host 'mld_server (192.168.178.113)' can't be established.
RSA key fingerprint is ..............
Are you sure you want to continue connecting (yes/no)? yes
root@mld_server's password:

Das Standardpasswort ist „root“ (kann später geändert werden, wenn der Raspberry mit MLD auch über das Internet erreicht werden soll).

Dann landen wir auf der MLD_SERVER Konsole und können mit „install“ die Installation des MLD auf der SD-Karte durchführen und den RaspberryPi neu starten:

MLD_SERVER> install

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

MLD_SERVER> reboot

Nach dem Reboot und erneuter Verbindung per SSH konfigurieren wir ein paar Pakete mit dem MLD-Package Manager opkg:

MLD_SERVER> opkg update
MLD_SERVER> opkg upgrade
MLD_SERVER> opkg remove webserver
MLD_SERVER> opkg remove psplash
MLD_SERVER> opkg install tools
MLD_SERVER> opkg install mc
MLD_SERVER> opkg install ntp-client
MLD_SERVER> opkg install dvb
MLD_SERVER> opkg install nfs-client
MLD_SERVER> opkg install vdr
MLD_SERVER> opkg install vdr-plugin-streamdev-server
MLD_SERVER> opkg install vdr-plugin-epgsearch

Wichtig sind die ersten zwei Zeilen. Trotzdem gab es bei mir ein paar Fehler (ntp-client z.B. wurde nicht gefunden), die ich aber zunächst ignoriert habe.

Sollte der vdr nun breits laufen, stoppen wir diesen mit

MLD_SERVER> stop vdr

Nun prüfen wir, ob der DVBSky S960 vom Betriebssystem erkannt wurde:

MLD_SERVER> dmesg | grep -i dvb

Die Ausgabe dieses Befehls sollte in etwa so aussehen:

[    9.519312] 	v4l-dvb-saa716x: dfd91ae70d2d6350c04162f8ac32074be14947e1 saa716x_ff: Align block data on 32 bytes for firmware 0.5.0 and up
[    9.577000] 	v4l-dvb-saa716x: dfd91ae70d2d6350c04162f8ac32074be14947e1 saa716x_ff: Align block data on 32 bytes for firmware 0.5.0 and up
[    9.721303] usb 1-1.3: dvb_usb_v2: found a 'DVBSky S960/S860' in warm state
[    9.730878] usb 1-1.3: dvb_usb_v2: will pass the complete MPEG2 transport stream to the software demuxer
[    9.731882] DVB: registering new adapter (DVBSky S960/S860)
[    9.733336] dvbsky_usb MAC address=00:18:42:54:96:0c
[    9.733375] usb 1-1.3: dvb_usb_v2: MAC address: 00:18:42:54:96:0c
[   10.161739] dvbsky_m88ds3103_load_firmware: Waiting for firmware upload (dvb-fe-ds3103.fw)...
[   10.191291] dvbsky_m88ds3103_load_firmware: Waiting for firmware upload(2)...
[   11.291209] usb 1-1.3: DVB: registering adapter 0 frontend 0 (Montage DS3103/TS2022)...
[   11.341001] Registered IR keymap rc-dvbsky
[   11.345532] input: DVBSky S960/S860 as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/rc/rc0/input0
[   11.346369] rc0: DVBSky S960/S860 as /devices/platform/bcm2708_usb/usb1/1-1/1-1.3/rc/rc0
[   11.346418] usb 1-1.3: dvb_usb_v2: schedule remote query interval to 300 msecs
[   11.346448] usb 1-1.3: dvb_usb_v2: 'DVBSky S960/S860' successfully initialized and connected
[   11.348535] usbcore: registered new interface driver dvb_usb_dvbsky

Die Standard Installation des vdr bringt ein paar vordefinierte Kanallisten mit. Diese sind im Verzeichnis /etc/vdr/channels/ zu finden.

Wir bearbeiten die /etc/rc.config und ändern die Kanalliste:

MLD_SERVER> nano -w /etc/rc.config
...
# Kanalliste die verwendet werden soll (verfügbare Listen stehen unter /etc/vdr/channels)
VDR_CHANNELLIST="DVD-S-S19.2E-Astra-FTA-DE-HD"
...

Dann starten wir den vdr

MLD_SERVER> start vdr

Jetzt rufen wir am Mac folgende URL auf:

https://MLD_SERVER:3000/channels.html

Dann sollte folgendes Bild erscheinen

Bildschirmfoto 2014-09-22 um 22.58.12
Funktionierender Streamdev-Server

Wenn das erfolgreich ist, kann der Spaß weitergehen: Im zweiten Teil zu diesem Thema.

Making of LiquidClock Part 2

Hier kommt nun der zweite Teil des Making Of LiquidClock. Besonders viel ist nicht mehr passiert, außer dass ich dank DHL etwas länger auf die Frontfolie warten musste.

Ich hatte früher auf meinem R4 ein orangenes Tape auf dem Stand:

„Nicht werfen, vor Nässe schützen!“

Vielleicht sollte man das bei DHL wieder einführen, damit die sorgsamer mit meinem Eigentum umgehen.

Wie versprochen, hier ein paar Fotos und auch ein Video der fertigen LiquidClock.

Hier kann man noch einmal schön die weggeklappte PE-Platte sehen.
Hier kann man noch einmal schön die weggeklappte PE-Platte sehen
Hier die Uhr im Nachtmodus
Hier die Uhr im Nachtmodus
Girlie style: Die Stunden sind lila, die Minuten orange und die Sekunden gelb.
Girlie style: Die Stunden sind lila, die Minuten orange und die Sekunden gelb.

Die Uhr habe ich meiner Tochter zum 18. Geburtstag geschenkt.

Herzlichen Glückwunsch vom Papa!

Making of LiquidClock Part 1

Erstes Projekt: Die LiquidClock!

Aufgeschnappt habe ich das Projekt von Christian Aschoff, der schon die QlockTwo als Nachbau einer berühmten Wortuhr entworfen hat.

Die LiquidClock zeigt die Zeit mit Hilfe von WS2812B LED-Stripes an, die über einen ATMEGA328 angesteuert werden.

Christian hat dazu eine kleine Steuerplatine namens BBRTCAD (BareBonesRealTimeClockArduinoDing) entworfen, die alle notwendigen Module für die Steuerung von Uhrenprojekten anhält und mit Hilfe der Arduino-IDE programmiert werden kann:

  • Eine Arduino kompatible Steuerplatine
  • Eine RealTimeClock auf Basis eines DS 1307
  • Ein DCF-77 Modul, um die Uhr in eine funkgesteuerte  Variante zu verwandeln

Ich habe mir auf Christians Seite Liquid-Clock die Aufbauanleitung angesehen und kam dabei auf die Idee, den kompletten Stripe und alle verwendeten Bauteile in eine Schaumpolsterplatte einzuarbeiten. Nachdem es bei PlottFlott bereits fertige Frontfolien gab und ich nicht – wie andere – über Werkzeuge verfüge, mit denen ich ein randloses Gehäuse anfertigen kann, habe ich mich dazu entschlossen, den Aufbau in einem Rahmen eines schwedischen Möbelhauses durchzuführen. Allerdings wollte ich die Komplettfolie von PlottFlott verwenden, um diese auch einmal austauschen zu können. Durch die PE-Platte liegt die Frontfolie – ohne sie verkleben zu müssen – plan an der Glasscheibe an und die Glasscheibe wird wie vorgesehen im Rahmen gehalten.

Die PE-Platte füllt den Rahmen komplett aus.
Die PE-Platte füllt den Rahmen komplett aus.

Wie der Aufbau von statten ging, habe ich hier einmal dokumentiert.

Zunächst musste ich eine geeignete PE-Platte finden. Sie sollte weiß sein, mindestens 25 mm stark und natürlich in den Rahmen passen. Da eine Niederlassung der Firma ratioform direkt in meiner Nähe ist, habe ich dort mal nach Bezugsmöglichkeiten gefragt. Freundlicherweise konnte ich ein Muster von ratioform erhalten. Dafür möchte ich mich noch einmal recht herzlich bedanken.

Die von mir gewählte PE-Platte ist eine spa2 in den Maßen 60 x 60 cm von Ratioform
Die von mir gewählte PE-Platte ist eine spa2 in den Maßen 600 x 600 x 25 mm von ratioform.

Bearbeiten kann man PE-Platten relativ leicht. Sie lassen sich schneiden oder fräsen, so dass ich die gewünschten Formen und Einschnitte mit meinen vorhandenen Werkzeugen durchführen konnte.

Die PE-Platte musste zunächst mal auf die Maße des Rahmens zugeschnitten werden
Die PE-Platte musste zunächst mal auf die Maße des Rahmens zugeschnitten werden.

Der Zuschnitt der Platte auf 500 x 500 mm kann am besten mit Hilfe einer Stichsäge mit Metall-Sägeblatt vorgenommen werden.

Mit dem Rest des Zuschnitts habe ich etwas experimentiert, bevor ich mich an die eigentliche Bearbeitung gewagt habe.

Dann ging es an das Ausfräsen des Kreises. Den habe ich zunächst mit einem Zirkel angezeichnet und dann mit dem schmalen Fräser von Hand ausgefräst. Da der verwendete LED-Strip 1 m ( = 100 cm) lang ist, kann man mit Hilfe der Formel U = 2π r den passenden Radius ausrechnen: r = 100 cm / ( 2π ) ≈ 15,9 cm (genauer 15,9154946 cm, aber das ist bei den verwendeten Werkzeugen ziemlich irrelevant).

Anschließend wird der Bereich für den Anschluss des LED-Strips noch ausgefräst. Dazu habe ich den breiten Fräser genommen. Hier kommt es auch nicht unbedingt auf den Millimeter an.

Um zu prüfen, ob man beim Kreis fräsen sauber gearbeitet hat, zeichnet man die 12, 3, 6 und 9 Uhr Positionen mit einem Edding, legt den Stripe in die Kerbe und prüft, ob die LED im Stripe auf der korrekten Position sind. Die Erste LED des Strips muss genau auf der 12-Uhr Position liegen.

Dabei ist mir aufgefallen, dass ich beim Fräsen des Kreises teilweise auf der mit dem Zirkel angezeichneten Linie gefräst habe. Es hängt natürlich davon ab, wie man den Kreis angezeichnet hat: Eher großzügig oder eher knapp bemessen. Je nachdem muss man also entweder auf der Linie, innen an der Linie oder außen der Linie entlang fräsen. Wenn man den LED-Strip in eine Rundung bringt, muss man daran denken, dass die LED’s auf dem Strip natürlich auch noch etwa 1,5 mm auftragen. Entscheidend ist, dass der Klebestreifen des LED-Strips im Kreisumfang möglichst genau einen Meter lang ist, wenn man den Strip in die Aussparung legt. Für Perfektionisten ist dieser Hinweis eventuell wichtig!

Da  nun der Strip versenkt ist und auch eine Aussparung in der PE-Platte für den Anschluss gemacht ist, geht’s  nun weiter mit der Anschlussbuchse für das Netzteil, dem LDR und den Tasten.

Die Anschlussbuchse habe ich unten, mittig und zentriert in den Rahmen gesetzt. Da das Gewinde etwa 8mm Durchmesser hat, habe ich in den Rahmen zunächst ein 8 mm Loch gebohrt. Ein Holzbohrer ist am besten und wichtig ist: Von außen nach innen bohren, evtl. erst mit einem kleineren Bohrer vorbohren! Danach habe ich auf der Innenseite des Rahmens die Anschlussbuchse noch etwas tiefer versenkt (15 mm Forstnerbohrer, nicht zu tief!). Das ganze sollte dann so aussehen:

Den LDR kann man mit 5 mm ∅ bohren. Was passiert, wenn man zu schnell bohrt, sieht man hier.

immer langsam bohren, sonst gibt’s Fransen!

Nun zu den Tasten: Hier handelt es sich um sogenannte Print-Taster. Diese gibt es mit unterschiedlich langen Stiften. Da ich bei meinem örtlichen Elektronik-Händler 2 verschiedene Längen erhalten habe, musste ich die Versenkungen unterschiedlich tief machen. Dazu aber später noch mehr.

Zunächst brauchen wir 3 Löcher mit einem 4 mm ∅ Bohrer an geeigneter Stelle. Ich habe diese Bohrungen an der Seite des Rahmens gemacht. Da die 3 Tasten die Funktionen

  • Moduswechsel (Mode)
  • Stunden (H+)
  • Minuten (M+)

haben, habe ich diese mit etwas Abstand angeordnet, so dass die Taste für Mode etwas weiter von den anderen Tasten weg ist.

Nach den 4 mm Bohrungen muss man auf der Rahmeninnenseite die Tasten entsprechend der Stiftlänge mit dem 15 mm Forstnerbohrer versenken. Um die richtige Tiefe zu erhalten, schneidet man sich aus dem Passepartoutkarton des Rahmens zwei Streifen ab und legt diese untern den Rahmen. Dieser Abstand ist wichtig, damit man die Tasten von Außen auch gut drücken kann. Ein paar Bilder sagen hier mehr als Worte.

Wir brauchen 4 Kabel für die Tasten: 3 mal Signal, einmal gemeinsame Masse. Wie man diese Kabel am sichersten an die Print-Taster anlötet, sieht man hier.

Danach werden die Tasten mit Heißkleber vergossen. Wichtig dabei ist, dass man den Heißkleber nicht zu dick aufträgt, da man ja noch die Glasscheibe einsetzen muss. Ist im Bild nicht zu sehen, hat mich aber eine Menge Nerven gekostet, die Scheibe einzusetzen. Die Kabel sollte man so lang lassen, dass man die PE-Platte noch um mindestens 180° zur Seite wegklappen kann. Auch hier wieder ein paar Bilder, die mehr sagen als… (lassen wir das):

Im letzten Bild sieht man auch die Kabelführung in der PE-Platte.

Noch ein paar Aussparungen in die Platte gemacht für den DCF-Empfänger (ich nehme immer den von Conrad bei meinen Projekten) und den BBRTCAD, dann ist man mit dem mechanischen Aufbau eigentlich schon fertig.

Jetzt noch gemäß des Anschlussplans alle Kabel an den BBRTCAD anschließen, dann sind wir fertig.

In die Rückwand kommen jetzt noch ein paar Bohrungen zum Aufhängen der Uhr.

3 Löcher zum Aufhängen
3 Löcher zum Aufhängen

Wie das Endergebnis aussieht zeige ich euch dann demnächst, wenn auch die Frontfolie geliefert ist. Evtl. auch mit Video.