Ich habe mich die letzte Woche massiv mit dem Thema beschäftigt und habe für mich erstmal eine brauchbare Lösung gefunden Hyperion mit HDR zu nutzen. Ganz unter dem Motto "sharing is caring" teile ich meine Erkenntnis mit euch. Das Tut ist für die Recalbox und setzt ein bereits funktionierendes Hyperion / Ambilight voraus. Bei Bedarf mache ich dazu ein separates Tutorial. Die Lösung sollte sich auch mit etwas Modifikation auch auf andere OS wie LibreElec anwenden lassen. Wenn Zeit ist mache ich dazu auch nochmal ein Test / Tutorial.
Was ihr braucht:
- Ein IR-Modul z.B. TSOP4838 (ab ~ 0,80 Euro)
- Jumper Kabel um den Empfänger anzuschließen, Alternativ geht auch Löten
- Einen Raspberry PI mit Recalbox und konfiguriertem Hyperion
- Eine Fernbedienung, wenn möglich eine die Ihr nicht mehr braucht
Idee hier ist die Verwendung von zwei verschiedenen Konfigurationsdateien, welche per Fernbedienung aktiviert werden.
1. IR Modul
Empfänger Modul wie den TSOP4838 wird benötigt. Angeschlossen wird das ganze so:
Solltet ihr wie ich die PINs 1 und 6 bereits belegt haben. Zum Beispiel für eine aktiven Kühler, dann müsst ihr für die Stromzufuhr (3,3V und GND) alternative PINs belegen. Hilfe dazu bietet dieses Schema:
2. config.txt
Als nächstes muss die config.txt angepasst werden. Der Eintrag dtoverlay=lirc-rpi muss ggf nur auskommentiert werden. Damit aktivieren wir das IR-Modul und der PI ist in der Lage Infrarotsignale zu empfangen. Mit der Ergänzung gpio_in_pin=17 wird der GPIO festgelegt an dem das Signal eingeht. Man könnte hier auch einen anderen GPIO festlegen.
3. Signaltest
Mit einer beliebigen Fernbedienung welche auf 38 kHz sendet, kann man prüfen ob am PI etwas ankommt. Dazu folgenden Befehl ausführen und beliebige Tasten auf eurer Fernbedienung drücken. Info: Die meisten gebräuchlichen Fernbedienungen für Fernseher DVD-Player usw. senden auf 38 kHz.
Sollte euer PI was aufschnappen sieht das ganze etwa so aus:
Mit STRG + C könnt ihr den Test beenden.
4. Tasten anlernen
Wenn wir wissen, dass der PI Signale bekommt, müssen wir Ihm noch beibringen diese Tasten zu erlernen. Damit wir mit diesem Input auch etwas anfangen können. Mit dem Befehl # irrecord --list-namespace könnt ihr die möglichen Tastenbezeichnungen anzeigen lassen, welche erlernt werden sollen. Für das Aktivieren der HDR-Konfig habe ich KEY_1 und für die SDR-Konfig KEY_2 verwendet. Ihr könnt aber auch andere Tastenbezeichnungen aus der Liste verwenden.
Mit nachstehenden Befehlen können wir die Codes der Fernbedienung aufzeichnen. Erst den Dienst lirc beenden, dann die Codes aufzeichnen. Dazu den Anweisungen in der Konsole folgen.
Euer aufgezeichneter Remote Code könnte dann so aussehen:
# Please take the time to finish this file as described in
# https://sourceforge.net/p/lirc-remotes/wiki/Checklist/
# and make it available to others by sending it to
# <lirc@bartelmus.de>
#
# This config file was automatically generated
# using lirc-0.10.1(default) on Sun Sep 22 21:42:32 2019
# Command line used: -d /dev/lirc0 -f /recalbox/share/system/HDR.lircd.conf
# Kernel version (uname -r): 4.14.62-v7
#
# Remote name (as of config file): HDR
# Brand of remote device, the thing you hold in your hand:
# Remote device model nr:
# Remote device info url:
# Does remote device has a bundled capture device e. g., a
# usb dongle? :
# For bundled USB devices: usb vendor id, product id
# and device string (use dmesg or lsusb):
# Type of device controlled
# (TV, VCR, Audio, DVD, Satellite, Cable, HTPC, ...) :
# Device(s) controlled by this remote:
begin remote
name HDR
flags RAW_CODES|CONST_LENGTH
eps 30
aeps 100
gap 108125
begin raw_codes
name KEY_1
8929 4582 478 644 477 643
478 1764 478 1764 478 652
469 1764 478 1764 478 643
478 643 478 643 478 643
480 1761 479 642 479 1763
491 1751 479 642 479 655
466 1763 479 1763 508 613
479 1763 479 683 437 1764
479 642 479 1766 476 643
478 642 479 1763 479 642
479 1763 479 642 479 1764
478
name KEY_2
8927 4585 478 644 476 642
479 1763 480 1762 479 642
480 1783 459 1762 479 642
487 634 528 593 479 642
480 1799 442 643 478 1763
479 1763 479 642 479 642
479 642 479 1763 479 642
479 1763 479 642 479 1763
479 642 479 1762 480 1763
503 617 480 1763 479 645
477 1762 479 642 479 1763
479
end raw_codes
end remote
Alles anzeigen
Nun verschieben (oder kopieren) wir noch die Datei, damit lirc diese findet und etwas damit anfangen kann und starten den Dienst neu.
#ggf mount -o remount rw, /recalbox/share/system/.config/lirc
mv /HDR.lircd.conf /recalbox/share/system/.config/lirc/lircd.conf
/etc/init.d/S25lircd restart
Mit dem Befehl irw können wir testen ob die gelernten Tasten funktionieren.
Der erfolgreiche Test könnte dann so aussehen:
0000000000ff30cf 00 KEY_1 /recalbox/share/system/.config/lirc/lircd.conf
0000000000ff18e7 00 KEY_2 /recalbox/share/system/.config/lirc/lircd.conf
5. Befehle an die Tasten binden
Wenn ihr irexec ohne Optionen oder Parameter ausführt, wird es nach einer Konfiguration suchen und diesen Pfad ausgeben. Bei Recalbox ist das /recalbox/share/system/.lircrc. Also lege ich diese Datei an und lege fest was beim Druck der Tasten KEY_1 und KEY_2 passieren soll.
Im Vorfeld habe ich bereits zwei Konfigurationen für Hyperion angelegt (HDR_hyperion.config.json / SDR_hyperion.config.json). Eine für HDR und eine für SDR. Beide Dateien liegen mit der aktiven Konfiguration im selben Verzeichnis. Wenn ich KEY_1 auf meiner Fernbedienung drücke soll die HDR Konfig und bei KEY_2 die SDR Konfig aktiviert werden. Dazu kopiere ich beim Tastendruck die jeweilige Datei auf den Namen hyperion.config.json und starte den Dienst neu. Mir ist bewusst, dass ich den Neustart mit restart auch umsetzen kann. So war es aber zuverlässiger.
begin
button = KEY_1
prog = irexec
config = cp /recalbox/share/system/configs/hyperion/HDR_hyperion.config.json /recalbox/share/system/configs/hyperion/hyperion.config.json;/etc/init.d/S25hyperion stop;/etc/init.d/S25hyperion start
end
begin
button = KEY_2
prog = irexec
config = cp /recalbox/share/system/configs/hyperion/SDR_hyperion.config.json /recalbox/share/system/configs/hyperion/hyperion.config.json;/etc/init.d/S25hyperion stop;/etc/init.d/S25hyperion start
end
Alles anzeigen
6. irexec als Daemon
Damit die Befehle bei Tastendruck ausgeführt werden, muss das Programm irexec laufen. Man kann es in der Konsole starten und schonmal testen ob alles funktioniert. Aber es soll ja immer im Hintergrund ausgeführt werden. Also brauchen wir noch einen Daemon bzw Service.
Auf der Recalbox liegen diese unter /etc/init.d. Diese werden in alphanumerischer Reihenfolge abgearbeitet. Für lirc und hyperion gibt es bereits einen Daemon. irexec soll nach den beiden gestartet werden. Ich habe mich für den Namen S85irexec enschieden.
Inhalt der S85irexec:
#!/bin/sh
#
# Start irexec
#
# Support for irexec, config file in /recalbox/share/system/.lircrc
#
test -f /usr/bin/irexec || exit 0
case "$1" in
start)
echo -n "Starting lircexec daemon: irexec"
start-stop-daemon --start --quiet --exec /usr/bin/irexec -- -d /recalbox/share/system/.lircrc
echo "."
;;
stop)
echo -n "Stopping lircexec daemon: irexec"
start-stop-daemon --stop --quiet --exec /usr/bin/irexec
echo "."
;;
restart|force-restart)
echo -n "Stopping lircexec daemon: irexec"
start-stop-daemon --stop --quiet --exec /usr/bin/irexec
sleep 1
echo -n "Starting lircexec daemon: irexec"
start-stop-daemon --start --quiet --exec /usr/bin/irexec -- -d /recalbox/share/system/.lircrc
echo "."
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
Alles anzeigen
Zum Schluss noch die Dateirechte anpassen.
Beim nächsten Neustart sollte eure Recalbox die Hyperion Konfig per Fernbedienung umschalten können.
TIPPS / TRICKS:
Eine Konfiguration für HDR zu bauen ist eigentlich das Selbe wie für SDR. Man muss nur in der Lage sein die Testbilder in HDR auszugeben und auf dieser Basis dann die Konfiguration von Hyperion vornehmen, genau wie die meisten es bereits für SDR gemacht haben.
Ich habe dazu den Amazon 4K FireTV Stick benutzt. Dieser lässt sich auf HDR einstellen, sodass sämtliche Inhalte darüber in HDR ausgegeben werden. Dann habe ich 4K-Testbilder in meine Cloud geladen und diese dann per Web im Silk-Browser des Fire-TV aufgerufen. Mit Hypercon hab ich dann die Konfiguration erstellt und als HDR_hyperion.config.json gespeichert.
Anmerkung:
Wenn es meine Zeit erlaubt und es gewünscht ist, werde ich noch ein Tutorial für LibreElec machen. Aber vielleicht hilft ja diese Anleitung schon dem Ein oder Anderen. Eventuell gibt es ja noch einen schöneren Weg die Konfiguration zu wechseln. Vielleicht auch komplett automatisch. Freue mich auf euer Feedback und Anregungen!
Meine SDR_hyperion.config.json (Auszug)
// Automatically generated configuration file for Hyperion ambilight daemon
// Notice: All values are explained with comments at our wiki: wiki.hyperion-project.org (config area)
// Generated by: HyperCon (The Hyperion deamon configuration file builder)
// Created with HyperCon V1.03.3 (22.10.2017)
{
// DEVICE CONFIGURATION
"device" :
{
"name" : "MyHyperionConfig",
"type" : "apa102",
"output" : "/dev/spidev0.0",
"rate" : 1000000,
"colorOrder" : "bgr"
},
// COLOR CALIBRATION CONFIG
"color" :
{
"channelAdjustment" :
[
{
"id" : "default",
"leds" : "*",
"pureRed" :
{
"redChannel" : 230,
"greenChannel" : 0,
"blueChannel" : 0
},
"pureGreen" :
{
"redChannel" : 120,
"greenChannel" : 180,
"blueChannel" : 0
},
"pureBlue" :
{
"redChannel" : 40,
"greenChannel" : 0,
"blueChannel" : 180
}
}
],
"temperature" :
[
{
"id" : "default",
"leds" : "*",
"correctionValues" :
{
"red" : 255,
"green" : 255,
"blue" : 255
}
}
],
"transform" :
[
{
"id" : "default",
"leds" : "*",
"hsl" :
{
"saturationGain" : 0.8500,
"luminanceGain" : 1.0000,
"luminanceMinimum" : 0.0000
},
"red" :
{
"threshold" : 0.0000,
"gamma" : 2.4000
},
"green" :
{
"threshold" : 0.1000,
"gamma" : 2.6000
},
"blue" :
{
"threshold" : 0.1000,
"gamma" : 2.6000
}
}
],
// SMOOTHING CONFIG
"smoothing" :
{
"type" : "linear",
"time_ms" : 250,
"updateFrequency" : 100.0000,
"updateDelay" : 1
}
},
Alles anzeigen
Meine HDR_hyperion.config.json (Auszug)
// Automatically generated configuration file for Hyperion ambilight daemon
// Notice: All values are explained with comments at our wiki: wiki.hyperion-project.org (config area)
// Generated by: HyperCon (The Hyperion deamon configuration file builder)
// Created with HyperCon V1.03.3 (22.10.2017)
{
// DEVICE CONFIGURATION
"device" :
{
"name" : "MyHyperionConfig",
"type" : "apa102",
"output" : "/dev/spidev0.0",
"rate" : 1000000,
"colorOrder" : "bgr"
},
// COLOR CALIBRATION CONFIG
"color" :
{
"channelAdjustment" :
[
{
"id" : "default",
"leds" : "*",
"pureRed" :
{
"redChannel" : 180,
"greenChannel" : 0,
"blueChannel" : 0
},
"pureGreen" :
{
"redChannel" : 0,
"greenChannel" : 180,
"blueChannel" : 0
},
"pureBlue" :
{
"redChannel" : 30,
"greenChannel" : 0,
"blueChannel" : 180
}
}
],
"temperature" :
[
{
"id" : "default",
"leds" : "*",
"correctionValues" :
{
"red" : 255,
"green" : 255,
"blue" : 255
}
}
],
"transform" :
[
{
"id" : "default",
"leds" : "*",
"hsl" :
{
"saturationGain" : 1.8000,
"luminanceGain" : 1.0000,
"luminanceMinimum" : 0.0000
},
"red" :
{
"threshold" : 0.2000,
"gamma" : 2.5000
},
"green" :
{
"threshold" : 0.2000,
"gamma" : 3.0000
},
"blue" :
{
"threshold" : 0.2000,
"gamma" : 3.0000
}
}
],
// SMOOTHING CONFIG
"smoothing" :
{
"type" : "linear",
"time_ms" : 250,
"updateFrequency" : 100.0000,
"updateDelay" : 1
}
},
Alles anzeigen
Quellen:
https://www.recalbox.com/de/diyrecalbox/
https://tutorials-raspberrypi.…rry-pi-ir-remote-control/
http://www.vishay.com/docs/82459/tsop48.pdf
https://tutorials-raspberrypi.…oads/TSOP4838-180x135.png
https://tutorials-raspberrypi.…-Steckplatine-440x500.png
https://indibit.de/wp-content/…GPIO-Belegung-616x800.png
http://git.openembedded.org/op…/lirc/files/lircexec.init
http://lirc.org/html/