Remote control - linuxu3er

linux
u3er
Direkt zum Seiteninhalt
Remote control
In der Vergangenheit nutze man unter Linux immer LIRC (Linux Infrared Remote Control). Seit der Kernel Version 2.6.33 (2010) gibt es aber auch Treiber für Fernbedienungen direkt vom Kernel und die funktionieren in meinem Fall ganz gut. Im Gehäuse meines MediaPC ist bereits ein Infrarot Empfänger eingebaut. Es handelt sich um ein SoundGraph VF310 Modul bestehend aus einem LCD Display und einem Infrarot Empfänger.

Identifikation erfolgt über:
lsusb
Bus 002 Device 003: ID 15c2:0036 SoundGraph Inc. LC16M VFD Display/IR Receiver

0. Besonderheiten
Beim SoundGraph VF410 Modul handelt es sich um ein Modul das zwei Modi unterstützt einmal den iMon-Standard und einmal den RC6-MCE Standard. Um dies umzustellen ist mir unter Linux eine Methode bekannt, daher hier eine kurze Anleitung unter Windows. Ich habe dazu den iMon Manager benutzt.

Je nachdem für welchen Modi ihr euch entscheidet muss unter Linux nachher ein anderes Modul geladen werden. Ich habe mich für den iMon Standard entschieden.


1. LIRC entfernen
Der LIRC-Dienst bzw. das Programm wird bei einigen Programmen direkt als Abhängigkeit mitinstalliert muss aber für die Nutzung der Kerneltreiber deinstalliert werden, damit sich nicht zwei Dienste daraum streiten wer den jetzt den Tastendruck umsetzt.
sudo apt-get purge lirc
sudo rm -rf /etc/lirc

Nur um ganz sicher zu gehen, wird in der Ubuntu Wiki empfohlen noch folgende Befehle auszuführen. Es sollten überall Fehlermeldungen kommen, dass Linux den Service nicht kennt. Zu guter letzte kann man noch die Datei lirc-blklist.conf entfernen, die das Kernel Modul blockieren würde. Eventuell kommt auch eine Fehlermeldung, dass die Datei nicht vorhanden ist. Anschließen ebenfalls zur sicherheit einen Neustart.
sudo service lirc stop
sudo service inputlirc stop
sudo service eventlircd stop
sudo rm /etc/modprobe.d/lirc-blklist.conf

2. Tasten testen
Falls es nicht schon vorhanden ist muss ir-keytable installiert werden. Damit kann man die Fernbedienung ansprechen und schauen wie sie reagiert, quasi das Äquivalent zu irw unter LIRC mit ein paar Zusatzfunktionen. Der Grundbefehl zeigt dabei erstmal alle Parameter an.
 sudo apt-get install ir-keytable  
 sudo ir-keytable  
/sys/class/rc/rc0/ gefunden mit:
Name: iMON Remote (15c2:0036)
Treiber: imon
Standardschlüsselcodeabbildung: rc-imon-pad
Eingabegerät: /dev/input/event13
LIRC Gerät: /dev/lirc0
Unterstützte Kernel-Protokolle: rc-6 imon
Kernelprotokolle aktivieren: imon
bus: 3, Anbieter/Produkt: 15c2:0036, Version: 0x0003
Wiederholungsverzögerung = 500 ms, Wiederholungsperiode = 125 ms

Mit ir-keytable -t geht es dann ans testen. Der erste Befehl kann man nutzen, wenn man noch nicht weis welches Protokoll unterstützt wird. Den zweiten Befehl brauchen wir, wenn wir die Fernbedienung auf das iMon-Protokoll eingestellt haben. Dann kann man schauen was für Ausgaben erscheinen. Bei mir hat das gut mit der Originalfernbedienung geklappt, habt ihr eine Logitech Harmony könnt ihr gleich zum entsprechenden Artikel unter Punkt 4 springen.


In der Ausgabe erkennt man das Protokoll, in diesem Fall imon und auch das zum Scancode 289515b7 schon ein KEY-Event KEY_DOWN hintelegt ist. Dies lässt darauf schließen, dass die richtige oder eine passende Keymap hinterlegt ist. Sollte dort kein KEY-Event auftauschen kann mit nach dem Scancode suchen und schauen, ob in irgendeiner Vorlage der Scancode enthalten ist.
1. sudo ir-keytable -v -t -p rc-5,rc-5-sz,jvc,sony,nec,sanyo,mce_kbd,rc-6,sharp,xmp
2. sudo ir-keytable -v -t -p imon
1316.283417: Linux-Infrarotfernbedienungsprotokoll(imon): Scancode = 0x289515b7
1316.283435: Ereignistyp EV_MSC(0x04): Scancode = 0x289515b7
1316.283435: Ereignistyp EV_KEY(0x01) key_runter: KEY_DOWN(0x006c)
1316.283435: Ereignistyp EV_SYN(0x00).
^[[B1316.524608: Ereignistyp EV_KEY(0x01) key_hoch: KEY_DOWN(0x006c)
1316.524608: Ereignistyp EV_SYN(0x00).
grep -iH '0x4001' /lib/udev/rc_keymaps/*

Hoffentlich habt ihr eine passenden Keymap identifiziert, bei mir ist es die Keymap imon_pad.toml im iMon-Protokoll Modus bzw. imon_mce.toml im MCE-Protokoll Modus.
Diese kopiert ihr dann in das passende Verzeichnis und schreibt die Keymap auf das Gerät.
sudo cp /lib/udev/rc_keymaps/imon_pad.toml /etc/rc_keymaps/
sudo ir-keytable -c -w /etc/rc_keymaps/imon_pad.toml

Mit ir-keytable -r könnt ihr anschließend kontrollieren, ob die Keymap hinterlegt ist und mit ir-keytable -t nochmal schauen, ob nun KEY-Events den Tasten zugeordnet sind.
sudo ir-keytable -r
Scancode 0x2ba515b7 = KEY_RIGHT (0x6a)
Scancode 0x29a515b7 = KEY_LEFT (0x69)
Scancode 0x289515b7 = KEY_DOWN (0x6c)
Scancode 0x2aa515b7 = KEY_UP (0x67)
...
Scancode 0x29b195b7 = KEY_EJECTCD (0xa1)
Scancode 0x29b715b7 = KEY_DASHBOARD (0xcc)
Scancode 0x2a8115b7 = KEY_PLAY (0xcf)
Scancode 0x2a8195b7 = KEY_REWIND (0xa8)
Scancode 0x2a8315b7 = KEY_PLAY (0xcf)
Scancode 0x2a8515b7 = KEY_NUMERIC_8 (0x208)
Scancode 0x2a8595b7 = KEY_NUMERIC_4 (0x204)
Scancode 0x2a9115b7 = KEY_PAUSE (0x77)
...
Aktivierte Kernelprotokolle: imon
Damit die Keymap nicht nach jedem Start gelöscht wird muss man den Treiber mit der neuen Keymap verknüpfen und wird in der Datei rc_maps.cf gemacht.
 sudo nano /etc/rc_maps.cf  
driver table                    file
imon   rc-imon-pad              /etc/rc_keymaps/imon_pad
*      rc-adstech-dvb-t-pci     adstech_dvb_t_pci
*      rc-alink-dtu-m           alink_dtu_m
*      rc-anysee                anysee
Dann einmal neu starten und in den Konsole kontrollieren, ob die richtige Keymap imon_pad mit dem richtigen Protokoll imon hinterlegt ist. Es sollten nach dem Neustart die KEY-Events erkannt werden. Wenn das soweit funktioniert, könnt ihr in Kodi schauen, ob bereits Tasten gehen. Bei mir gingen das Steuerkreuz, die OK und Zurück Taste. In meinen Fall gab es keine Sprünge oder Verzögerungen, wenn ich eine Taste auf der Originalfernbedienung gedrückt habe. Die Media Tasten, wie Play, Pause, Stop funktionierten nicht.

3. Gnome bändigen
Ich starte Kodi als Programm unter einem vollwertigen Destop Environment in diesem Fall Gnome. Gnome hat eine eigentlich nützliche Funktion, die verhindert, dass die Media Tasten in Kodi funktionieren. Gnome erkennt alle Media Tasten und versucht diese an Programme wie Totem, VLC, Browser, Rythmbox weiterzuleiten, dies müssen wir unterbinden wenn wir die Tasten unter Kodi nutzen wollen.

Dazu kann man manuell im dconf-editor unter /org/gnome/settings-daemon/plugins/media-keys die Standard Einstellungen löschen bzw. durch [''] ersetzten. Die Standardfunktionen fangen alle mit X86... an. Eine genaue Anleitung findet ihr hier oder ihr könnt das ganze automatisch durch ein Startskript für Kodi von chrisjbillington machen. Ich habe mich für die Skript Version mit dem DElauncher4Kodi 1.2 entschieden. Das Skript macht zwei Sachen die Übernahme der Tasten durch Gnome stoppen und die Gnome Lautstärke auf 100% stellen, wird alles im Forum erklärt. Für die Installation benötigen wir Python PIP. Es wird dann ein Menüeintrag erstellt den man Nutzen kann. Ich habe meinen Kodi Autostart entsprechend abgewandelt und folgenen Befehl eingegeben "python3 -m DElauncher4Kodi kodi -fs". Nach einem Neustart haben dann auch die Media Tasten funktioniert.
sudo apt install python3-pip
sudo pip3 install DElauncher4Kodi

4. Logitech Harmony
Mit einer Logitech Harmony Fernbedienung könnt ihr Kodi über Bluetooth steuern. Dies kann man mit der Android App konfigurieren. Wenn man will kann man vorher mal in der Gerätekompatibilitätsliste von Logitech schauen, welche Geräte unterstützt werden. Auch wenn ich keine technische Erklärung habe war es bei mir wichtig, dass der Logitech Hub und das Android Konfigurationsgerät im 2,4 Ghz WLAN Netz waren und nicht eines im 5 GHz WLAN.

Zuerst kümmern wir um das Profil für die Originalfernbedienung, dazu den Hersteller "SoundGraph" und den Typ "iMon Pad" wählen, dann erhält man das Profil „SoundGraph Multimedia-Player“. Dieses Profil wird nur genutzt um den Rechner anzuschalten, die restlichen Funktionen gehen nicht wirklich. Logitech empfiehlt im iMon Manager auf das MCE-Protokoll zu wechseln, leider konnte ich die Logitech Harmony, so aber nicht zum Laufen bringen.

Als zweites Profil nutzen wir ein spezielles Kodi-Profil, dazu den Hersteller "Microsoft" und den Typ "Kodi" wählen, dann erhält man das Profil "Microsoft Multimedia-Player". Dieses Profil baut eine Verbindung über Bluetooth auf und meldet sich unter Gnome als "Harmony Keyboard". Unter den Gnome-Einstellungen / Bluetooth muss man dazu die Geräte pairen.



Anschließend kann man eine Aktion erstellen z.B. Media PC in der man den TV als Ausgabemedium, bei mir Sonos als Lautsprecher nutzt und den Microsoft Multimedia-Player als Steuergerät. Der SoundGraph Multimedia-Player muss ebenfalls in der Aktion eingebaut werden, da man über Bluetooth den Media PC nicht anschalten kann. Wenn ihr wollt könnt ihr noch die Reihenfolge ändern sodass zuerst der Media PC angeschaltet wird und dann erst die anderen Geräte.

Wenn alles gut gegangen ist habt ihr jetzt die selbe Funktionalität wie mit der Originalfernbedienung bzw. läuft es noch besser, weil ihr keine Sichtverbindung mehr zum Gehäusedisplay braucht und alle Tasten funktionieren.

5. Kodi Keymap Editor
In Kodi gibt es ein Addon um die Keymap für einzelene Tasten anzupassen. Falls ihr mit irgendeiner Taste Probleme habt könnt ihr das Verhalten vielleicht mit dem Editor verändern. Dort konnte ich im Global Menü die Funktion finden und mit den gewünschten Taste von der Fernbedienung belegen.



Zurück zum Seiteninhalt