IRMP2Keyboard IR Fernbedienung nach PS2/USB Tastatur Konverter

  • Ich habe jetzt mit zwei anderen SMK RC6 MCE 50GB getestet und beide machen ähnliche Fehler. Mal wird als Protokol 0x15 erkannt, mal 0x11, mal 0x17.

    Ich war schon drauf und dran Logging anzustellen und einen Scan zu machen, aber jetzt werden beide Fernbedienungen wieder korrekt erkannt! Der einzige mir bewusste Unterschied: es ist jetzt etwas kühler.

    Ich werde da nicht mehr Zeit investieren und lasse das auf sich beruhen.

    Anbei noch ein Bild des Innenlebens der Fernbedienung.

    vdr-portal.de/index.php?attachment/44483/

  • Wenn die Tastatur von eventlircd eingebunden wird, kann man die Tastendrücke von irexec auswerten lassen. die keymacros.conf bezieht sich auf alle Eingaben, die der VDR sieht und da zählt nur der Tastenname innerhalb des VDR, der über die remote.conf gemappt wird.

    Ok, meine Tastatur funktioniert im VDR inklusive keymacros.conf und in KODI. Einzig in IREXEC kommt nichts an. Das bedeutet ich kann mit der Tastatur nicht zwischen KODI und VDR umschalten.

    Code
    1. /var/lib/vdr/.lircrc begin
    2. prog = irexec
    3. button = KEY_F6
    4. config = frontend-dbus-send switchbetween kodi vdr
    5. end

    Warum ist dies nicht per Default auch eingeschaltet?
    Oder gibt es für Tastaturen einen anderen Weg?

    Wie kann ich es nachträglich einschalten?


    In evtest heißt meine Tastatur /dev/input/event12: Arduino LLC Arduino Micro.

    Code
    1. root@YAVDR:/var/lib/vdr# lsusb
    2. Bus 003 Device 003: ID 2341:8037 Arduino SA
  • Siehst du die Taste KEY_F6 mit irw? Hast du das irexec der User-Session nach der Änderung an der Konfigurationsdatei neu gestartet?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • IRW funktioniert ebensowenig wie IREXEC.

    Da wird nur meine Fernbedienung angezeigt, aber keine USB-Tastatur.
    Funktionieren tun aber alle Tastaturen. Nur IRW und IREXEC nicht.

    Sollte das so sein, habe ich was kaputt konfiguriert oder bin ich auf einem zu alten Stand?


    Wenn das richtig verstehe müsste eine UDEV-Regel für eventlircd erstellt werden.
    Aber sollte es die nicht schon für jede Standard USB-Tastatur geben?
    Wie müsste die UDEV-Regel aussehen?

    Ich hatte oben schon Infos zu meiner speziellen Tastatur angegeben, aber vielleicht kann man die Regel auch allgemein halten, damit sie auf jede Tastatur passt.

  • Wenn das richtig verstehe müsste eine UDEV-Regel für eventlircd erstellt werden.

    Genau.

    Aber sollte es die nicht schon für jede Standard USB-Tastatur geben?

    Nein, denn dann könnte man die Tastatur ja nicht mehr normal verwenden, weil eventlircd sich die exklusiv greift.

    Wie müsste die UDEV-Regel aussehen?

    Vermutlich so:

    Code: /etc/udev/rules.d/77-irmp2keyboard.rules
    1. SUBSYSTEM=="input",ENV{ID_VENDOR_ID}=="2341", ENV{ID_MODEL_ID}=="8037", \
    2. ENV{eventlircd_enable}="true", \
    3. ENV{eventlircd_evmap}="irmp2keyboard.evmap"
    4. ENV{ID_INPUT.tags}="eventlircd"

    Und dazu passend die evmap (wobei man sich überlegen könnte, ob man KEY_F6 nicht auf KEY_HOME umbelegen will):

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Danke für die Hilfe.

    Du schreibst hier /etc/udev und nicht /lib/udev. Was ist der Unterschied?

    Mir kommt das ganze nach ganz schön viel extra Aufwand vor, weil die Tastatur jetzt ja schon überall in VDR und KODI funktioniert.

    Wenn ich da nicht wieder was durcheinanderbringen will, muss meine evmap weiterhin zum bisher genutzten Standard passen.

    Deine evmap sieht wie früher aus. Aktuell wird ja zum Beispiel KEY_HOME für Menü verwendet. Es gibt ja auch Fernbedienungen mit A-Z Tasten.

    Der ganze Aufwand nur für die Umschaltung zu KODI und zurück mit frontend-dbus-send switchbetween kodi vdr.


    Mein Ziel ist es, dass ich ohne Änderungen an irgendwelchen Einstellungen in yaVDR die Fernbedienung nur noch in der Arduino Software konfigurieren muss und meine kleine Logitech K400 soll genauso gehen.

  • Du schreibst hier /etc/udev und nicht /lib/udev. Was ist der Unterschied?

    Dateien in /etc/ gelten für die Paketverwaltung automatisch als Konfigurationsdateien und werden nicht ohne Rückfrage durch gleichnamige Dateien aus Paketen ersetzt. Konfigurationsdateien sollte man daher nach Möglichkeit in /etc/ ablegen.


    Dateien in /etc/udev/rules.d/ übersteuern außerdem gleichnamige Dateien in anderen von udev berücksichtigten Verzeichnissen - vgl. Manpage:

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Bekomme die Tastatur mit eventlircd nicht zum Laufen.

    Habe erstmal mit meiner Logitech K400 getestet.

    Kein IRW, keine Reaktion im VDR, aber evtest läuft trotz eventlircd.

    eventlircd läuft:

    Code
    1. # systemctl status eventlircd
    2. ● eventlircd.service - "eventlircd reads from kernel input devices and generates key presses on a lircd socket"
    3. Loaded: loaded (/lib/systemd/system/eventlircd.service; enabled; vendor preset: enabled)
    4. Active: active (running) since Sat 2020-10-17 16:58:31 CEST; 40min ago
    5. Main PID: 546 (eventlircd)
    6. Tasks: 1 (limit: 4614)
    7. CGroup: /system.slice/eventlircd.service
    8. └─546 /usr/sbin/eventlircd -f --socket=/var/run/lirc/lircd

    syslog sieht unauffällig aus:

  • Läuft denn der X-Server bei yaVDR durch?

    Ja, solange man nicht softhddrm nutzen will. Wenn sich eventlircd die Tastatur schnappt (wobei sich der X-Server sich das Gerät nicht zuerst gegriffen haben darf - eventlircd meckert, wenn es Geräte nicht exklusiv öffnen kann), sehen der VDR und KODI die Tastendrücke auf dessen Lirc-Socket.


    Wenn es nur darum geht der Taste F6 einer x-beliebigen Tastatur eine Funktion zuzuweisen kann man das auch über Openbox machen - aktuell ist das mit Windows-Taste + x belegt, da sollte aber auch sowas wie "F6" funktionieren: https://github.com/yavdr/yavdr…es/openbox/rc.xml.j2#L192 - das expandierte Template landet in /var/lib/vdr/.config/openbox/rc.xml

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Das mit WIN+X war mir nicht bekannt und irmp2keyboard war die WIN-Taste schnell begebracht. Ich musste aber dann doch feststellen, dass der gemeinsame Nenner für Tastaturbedienung bei VDR und KODI doch etwas eingeschränkt ist. Genau deshalb benutzt yaVDR seit 0.6 standardmäßig eventlircd, der dabei hilft die unterschiedlichen Treiber und Eingabegeräte unter einen Hut zu bringen.


    Ich glaube ich habe die Zusammenhänge der vielen verschiedenen Tastencodes jetzt auch endlich begriffen. 8)

    IRMP-Code => config_keybindings.h => HID-Keycode

    HID-Keycode => HID-Treiber => Linux-Keycode

    Linux-Keycode => /etc/eventlircd.d/irmp2keyboard.evmap => LIRC EventCode

    LIRC EventCode => /var/lib/vdr/remote.conf => VDR LIRC Funktion

    LIRC EventCode => /var/lib/vdr/.kodi/userdata/Lircmap.xml => KODI Funktion


    Also habe ich mich doch nochmal mit UDEV und EVMAP auseinandergesetzt und nachdem ich meinen dummen Fehler beim ersten Versuch (idProdukt statt idProduct) :wand gefunden hatte, war das auch kein großes Problem.
    Hier die UDEV-Regel für den Arduino Micro:

    Code: /etc/udev/rules.d/99-irmp2keyboard.rules
    1. SUBSYSTEM=="input", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="8037", \
    2. ENV{eventlircd_enable}="true", \
    3. ENV{eventlircd_evmap}="irmp2keyboard.evmap"
    4. ENV{ID_INPUT.tags}="eventlircd"

    und die passende irmp2keyboard.evmap:

    Bei den Tastencodes bin ich möglichst bei Funktionstasten geblieben, damit auch alphanumerische Fernedienungen ohne große Änderung möglich bleiben.

    Ich habe außerdem alle in yaVDR im Standard in VDR und KODI verwendeten LIRC-Codes verfügbar gemacht.


    So kann ich nun jede beliebige Fernbedienung ohne Änderung an VDR-Konfigurationsdateien verfügbar machen.

    Bei mir habe ich nur noch eine kleine Änderung in /etc/vdr/keymacros.conf für SoftHDdevicePIP und TvGuideNG gemacht.

    Ok, die /etc/udev/rules.d/99-irmp2keyboard.rules und die /etc/eventlircd.d/irmp2keyboard.evmap müssen natürlich reinkopiert werden, aber dass kann ja Ansible übernehmen, denn diese sind ja unabhängig von der Fernbedienung.


    Die Anpassung an die Fernbedienung findet einzig in config_keybindings.h statt, was bequem in der Arduino IDE am Notebook geschehen kann.

    Dafür können die IRMP-Codes mit irmpdump gelesen und in die beigefügte Exceldatei eingefügt werden.

    In dieser Exceldatei habe ich mal Codes (IR, Taste, LIRC, VDR, KODI) für eine einfache Zuordnung gegenübergestellt.

    Außerdem erzeugt sie auch gleich die Zeilen für die config_keybindings.h.

  • seahawk1986 :
    Beim Zusammenführen der Konfigurationsdateien ist mir ein kleiner Schönheitsfehler aufgefallen.

    In https://github.com/yavdr/yavdr…iles/userdata/Lircmap.xml ist der Mute-Befehl in Zeile 44 und Zeile 48 doppelt vorhanden.

  • Danke für den Hinweis, ich habe es gerade im focal-Branch angepasst.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Ich war schon drauf und dran Logging anzustellen und einen Scan zu machen, aber jetzt werden beide Fernbedienungen wieder korrekt erkannt! Der einzige mir bewusste Unterschied: es ist jetzt etwas kühler.

    Ich werde da nicht mehr Zeit investieren und lasse das auf sich beruhen.

    Anbei noch ein Bild des Innenlebens der Fernbedienung.

    vdr-portal.de/index.php?attachment/44483/

    Sorry - da war noch eine offene Frage zu einer MCE Fernbedienung.


    ich habe das Problem mit der MCE RCE nicht weiter verfolgt. Ich habe eine andere Fernbedienung verwendet, die immer sehr gut klappte und andere IR-Empfänger zum Test hatte ich nicht da. Nachdem die SW dann dank M-Reimer funktionierte, habe ich es dabei belassen.

    Im Kühlen habe ich es noch nicht getestet - die Gartenlaube wo der VDR steht ist zwar jetzt kühl, aber quasi "eingewintert".

    My VDRs: