Infrarot Fernbedienung (z.B. Logitech Harmony) mit WeTek OpenELEC

WeTek OpenELEC ist eine kleine Box mit installiertem OpenELEC, welches wiederum auf Kodi basiert. WeTek OpenELEC enthält je nach Variante bereits einen Tuner (DVB-C/T, DVB-S oder ATSC). Bei mir hat die Box einen Raspberry Pi ersetzt. Zum Lieferumfang gehört eine AirMouse. Das ist eine Fernbedienung die sich durch Bewegungssensoren auch als Maus verwenden lässt. Da ich aber bereits eine Logitech Harmony als Universalfernbedienung verwende, soll diese die Steuerung übernehmen. Bei WeTek OpenELEC handelt es sich um eine Sonderedition von WeTek Play (Unterschiede zwischen WeTek Play und WeTek OpenELEC). Die Einrichtung einer Fernbedienung sollte für WeTek Play also ähnlich sein.

WeTek OpenELEC hat einen Infrarotempfänger eingebaut. Standardmäßig wird dieser jedoch nur zum Ein- und Ausschalten des Geräts verwendet. Die Steuerung der anderen Funktionen ist etwas komplizierter einzurichten. Ich werde zuerst erklären wie man (um sich Arbeit zu sparen) meine Konfiguration übernehmen kann. Danach gibt es mehr Details wie die Vorgehensweise war und die Konfiguration auch für andere Fernbedienungen selbst angepasst werden kann. Die verwendete Fernbedienung muss das NEC Protokoll verwenden.

Steuerung mit Logitech Harmony als Mut@nt HD2400 konfiguriert

Um möglichst viele Tasten der Harmony Fernbedienung nutzen zu können habe ich als Gerät “Mut@nt HD2400” konfiguriert. Wählt man als Gerät WeTek Play aus bleiben leider viele Tasten der Harmony ohne Funktion.

Auswahl des Gerätes “Mut@nt HD2400”

Die Tasten und die jeweilige Aktion werden auf WeTek OpenELEC über die Datei remote.conf gesteuert. Für eine möglichst schnelle Konfiguration stelle ich meine Datei hier bereit.

Es muss also für die Harmony das Gerät Muta@nt HD2400 hinzugefügt (und in gewünschte Aktionen aufgenommen) werden. Danach per Samba (\<IP_des_Geräts>\Configfiles) auf die Box verbinden, eine Sicherheitskopie der remote.conf anlegen und sie danach durch meine Version ersetzen. Nach einem Neustart sollte sich WeTek OpenELEC mit der Harmony steuern lassen.

Zusätzlich habe ich noch einige weitere Tasten konfiguriert:

Extra Tasten

Sie sind in der remote.conf auf die Tasten M, S, L, Z, T und V gemappt. T und L sind in der Standardkonfiguration von Kodi den Aktionen “Untertitel umschalten” und “Videotext” zugeordnet. Die anderen Tasten können über eine eigene Keymap (Datei keymap.xml) Aktionen zugeordnet werden. In meinem Fall sind dies M = “Ansicht Filme”, S = “Ansicht Serien”, L = “Audiospur umschalten” und Z = “TV”. Des Weiteren enthält die Keymap die Tasten zur Navigation im Videotext (red, green, yellow, blue). Die keymap.xml wird unter \<IP_des_Geräts>\Userdata\keymaps abgelegt.

Codes für beliebige (NEC) Fernbedienung ermitteln

Wie kann man selbst eine beliebige Fernbedienung für WeTek OpenELEC konfigurieren? Als erstes muss der SSH Zugang zu der Box in den Einstellungen aktiviert werden. Das Standardpasswort für den Benutzer root lautet openelec. Jetzt kann eine beliebige Taste auf der Fernbedienung gedrückt werden. Mit dmesg -c | grep custom erhält man den Factory Code für seine Fernbedienung:

OpenELEC:~ # dmesg -c | grep custom
[ 1657.693666@0] Wrong custom code is 0xe21d1f00

Dieser muss in die Datei remote.conf eingetragen werden. Entweder man editiert die Datei direkt in der SSH Sitzung (z.B. vi /storage/.config/remote.conf) oder mit einem beliebigen Editor über die Freigabe \<IP_des_Geräts>\Configfiles. In der Datei muss der ermittelte Code in die Zeile die mit “factory_code” beginnt eingetragen werden. Dabei müssen die ersten 4 Zeichen nach “factory_code = 0x” mit den letzten 4 Zeichen der Ausgabe mit “Wrong custom code” ersetzt werden. Aus 0xff000001 (Wert bei Auslieferung) wird bei diesem Beispiel also 0x1f000001.

OpenELEC:~ # head -n 15 /storage/.config/remote.conf
# WeTek Play NEC remote
factory_code    = 0x1f000001
work_mode   = 1
repeat_enable   = 1
release_delay   = 150
debug_enable    = 1
reg_control = 0xfbe40

key_begin
; Code    = IR keycode
; Linux   = Linux keycode
; Android = Android keycode
; Button  = Description button on Logitech remote
; KODI    = Action in KODI (focus on video playback)
;           Further info: http://kodi.wiki/view/Keyboard_controls

Damit die Änderung an der remote.conf aktiv wird, muss das System entweder neu gestartet oder der Befehl remotecfg /storage/.config/remote.conf ausgeführt werden. Danach kommt der aufwendige Teil: Für jede Taste muss der Code ermittelt werden. Dafür muss zuerst die gewünschte Taste auf der Fernbedienung gedrückt und danach der empfangene Code ausgelesen werden:

OpenELEC:~ # dmesg -c | grep scan
[ 3135.540356@0] scancode is 0x002b, invalid key is 0x0000.
[ 3135.812065@0] scancode is 0x002b, invalid key is 0x0000.

OpenELEC:~ # dmesg -c | grep scan
[ 3163.433223@0] scancode is 0x0028, invalid key is 0x0000.
[ 3163.702069@0] scancode is 0x0028, invalid key is 0x0000.

Jedem empfangenen Code (scancode) wird ein Keycode zugeordnet, der wiederum eine Aktion in Kodi auslöst. Meine remote.conf enthält bereits die wichtigsten Keycodes wie z.B. 114 und 115 zum Verändern der Lautstärke (siehe Erklärung der Funktion in der Spalte “Kodi”). Einige der gültigen Keycodes können dieser Liste entnommen werden.

Die Tasten werden im Bereich zwischen “key_begin” und “key_end” definiert. Die bereits vorhandenen können einfach geändert werden. Dafür muss der Wert in der ersten Spalte “Code” auf die Codes der eigenen Fernbedienung angepasst werden. Nicht benötigte Zeilen werden mit ; oder # auskommentiert. Für die Codes aus dem Beispiel könnte das wie folgt aussehen:

key_begin
  0x2b    114      # Vol -
  0x28    115      # Vol +
key_end

Wenn alle Codes in der remote.conf eingetragen wurden kann die neue Konfiguration mit remotecfg /storage/.config/remote.conf aktiviert werden.

Die Vorgehensweise wird auch in diesem Foreneintrag erläutert.