Ambilight mit Raspberry Pi

Im Internet kursieren reichlich Anleitungen wie man mit einem Raspberry Pi das von Philips TVs bekannte Ambilight nachbauen kann. Ich habe anfangs Boblight probiert, aber feststellen müssen das dies scheinbar nur mit bzw. auf XBMC/Kodi läuft. Den nächsten Versuch habe ich dann mit AmbiTV gestartet. Dort aber war die Last auf den RPi so hoch, da a) nichts anderes auf dem RPi möglich war und b) das Ambilight nicht schön lief.
Für mich war die Suche nach dem „Heiligen Gral“ dann beendet als ich „Hyperion“ fand. Die erste Anleitung war recht lang und es mussten einige Schritte erledigt werden. Inzwischen ist die Installation aber schön knackig kurz und relativ einfach.

Hyperion

Hyperion bietet eigentlich alles was man von einem Ambilight-Nachbau erwartet und noch etwas mehr. Neben dem klassischen Ambiente der 3. Generation von Philips bietet Hyperion eine App für Android/iOS, sowie diverse hübsche Farbeffekte.

Hardware

Raspberry Pi A/A+/B/B+/2B/3B (bei mir ein RPi2) ~35 €
– min. 8GB SD-Karte SDHC Class 10 ~10 €
– USB Video-Grabber (STK oder Fushicai Chipsatz) ~20 €
– LEDs (WS2801 oder diverse andere einzeln steuerbare LEDs, bei mir 50 Stück) ~36 $ je nach Kurs ~30 €
HDMI zu Composite Video AV Konverter ~20 €
HDMI Splitter (4zu2 bei mir) ab ~10 €
MicroUSB Netzteil 5V 4A ~15 €

Gesamtkosten ca. 150 €

Wie die Hardware zusammengebaut wird, erfährt man hier.

Installation

Zunächst mal benötigen wir die aktuellste Raspbian Version (bei mir aktuell von 31.01.2015). Beim ersten Boot startet der Pi automatisch in die „raspi-config“. Hier müssen wir folgendes erledigen:
– Dateisystem erweitern
– in die Shell booten lassen
– SPI aktivieren

Nach dem Reboot einloggen und erst mal das System Updaten.

sudo apt-get update
sudo apt-get upgrade

Dann benötigen wir folgende Softwarekomponenten…

sudo apt-get install libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 libprotobuf7 ca-certificates mplayer python-dev

Nun wechseln wir ins /tmp Verzeichnis, laden das Installationsscript für Hyperion runter und installieren Hyperion.

cd /tmp
wget -N raw.github.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
sudo chmod +x install_hyperion.sh
sudo ./install_hyperion.sh

Prinzipiell ist Hyperion nun installiert. Nun muss man noch die Config bearbeiten. Dafür lädt man sich die HyperCon.jar herunter. Um diese auszuführen benötigt man JAVA auf seinem PC. Mit diesem Tool kann man nun die Anzahl der LEDs, den Chip der LEDs etc. einstellen.
Ich habe 50 LEDs wie folgt verteilt: 14 Links, 14 Rechts und 22 Oben. Unten habe ich keine LEDs verteilt.

Nachdem die Config-Datei erstellt wurde, muss diese noch einmal per Hand bearbeitet werden. Am Ende der Datei wird vor „endOfJson“ : „endOfJson“folgendes eingefügt.

/// Configuration for the embedded V4L2 grabber
///  * device          : V4L2 Device to use [default="/dev/video0"]
///  * input           : V4L2 input to use [default=0]
///  * standard        : Video standard (no-change/PAL/NTSC) [default="no-change"]
///  * width                : V4L2 width to set [default=-1]
///  * height               : V4L2 height to set [default=-1]
///  * frameDecimation      : Frame decimation factor [default=2]
///  * sizeDecimation       : Size decimation factor [default=8]
///  * priority             : Hyperion priority channel [default=800]
///  * mode                 : 3D mode to use 2D/3DSBS/3DTAB (note: no autodetection) [default="2D"]
///  * cropLeft             : Cropping from the left [default=0]
///  * cropRight            : Cropping from the right [default=0]
///  * cropTop              : Cropping from the top [default=0]
///  * cropBottom           : Cropping from the bottom [default=0]
///  * redSignalThreshold   : Signal threshold for the red channel between 0.0 and 1.0 [default=0.0]
///  * greenSignalThreshold : Signal threshold for the green channel between 0.0 and 1.0 [default=0.0]
///  * blueSignalThreshold  : Signal threshold for the blue channel between 0.0 and 1.0 [default=0.0]
"grabber-v4l2" :
{
"device" : "/dev/video0",
"input" : 0,
"standard" : "PAL",
"width" : 640,
"height" : 480,
"frameDecimation" : 2,
"sizeDecimation" : 8,
"priority" : 1000,
"mode" : "2D",
"cropLeft" : 15,
"cropRight" : 15,
"cropTop" : 20,
"cropBottom" : 20,
"redSignalThreshold" : 0.1,
"greenSignalThreshold" : 0.1,
"blueSignalThreshold" : 0.1
},

Die Werte für „cropLeft“ etc. müssen ggf. angepasst werden. Da muss man ein wenig mit rumspielen. Dazu sollte man auf dem TV ein Standbild machen um die Grenzen des Bildausschnittes zu erfassen. Optimalerweise hat das Standbild am Rand nirgendwo schwarz, damit man das Ende erkennen kann.

Dann kann man auf der Shell folgenden Befehl eingeben um einen Screenshot vom aktuellen Bild zu erstellen. Der Screenshot wird dort erstellt wo man den Befehl ausführt. Der Dienst „Hyperion“ muss laufen!

hyperion-v4l2 --width 640 --height 480 --screenshot --crop-left 15 --crop-right 15 --crop-top 20 --crop-bottom 20

Mit den Werten solange rumspielen bis man keinen schwarzen Rand mehr auf dem Screenshot sieht. Dann die ermittelten Werte in die „hyperion.config.json“ übertragen.

2 Kommentare

  1. Dein Beitrag war echt hilfreich, dankeschön!

    1. Ist aber nicht mehr up to date. Hyperion hat sich deutlich vereinfacht. Im Prinzip reicht es HyperCon herunterzuladen und darüber kann man Hyperion installieren und konfigurieren. Das kann man von einem anderen PC mit installiertem Java tun. In HyperCon kann man die IP und Zugangsdaten des Pi hinterlegen und so die Installation und die Übertragung der Config durchführen.

Schreibe einen Kommentar

Your email address will not be published.