IRMP auf STM32 - ein USB-HID-Keyboard IR Empfänger+Einschalter mit Wakeup-Timer

  • Das Anlernen und Programmieren hat funktioniert. In Kodi oder auch evtest, muss ich dann aber lange auf Tasten drücke, bis sich was tut.


  • Zeig mal eine evtest Ausgabe.

    Wie ist repeat_delay, repeat_period und repeat_timeout eingestellt?

    Ist das auf einem Clon (CKS CS32) oder auf einem STM32?

  • Es ist ein STM32 Stick. Hier die Ausgabe von evtest:


    Es dauert bis zu drei Sekunden, bis manche Tasten reagieren. Manche gehen etwas schneller. repeat wird in der GUI 250 angezeigt.


  • Wie ist repeat_delay, repeat_period und repeat_timeout eingestellt?

    Erhöhe versuchsweise repeat_timeout auf z.B. 20.

  • Erhöhe versuchsweise repeat_timeout auf z.B. 20.

    EDIT: Doch.... funktioniert. Ich hatte den falschen Timeout erwischt.


    repeat_timeout 20


    sieht sehr gut aus.


    The post was edited 1 time, last by obelix ().

  • Ich habe etwas damit herumgespielt. Eine gute Alternative zu IRMP_STM32 mit irmplircd, wobei ich persönlich irmplircd favorisiere. Gefühlt läuft IRMP_STM32 mit irmplircd geschmeidiger. OK, vielleicht fehlt noch Feintuning aber ich bin IRMP_STM32 gewohnt. Auch das Handling mit der /etc/irmp_stm32.map Datei finde ich angenehm und sehr flexibel.


    Der Vorteil von IRMP_STM32_KBD liegt klar auf der Hand. Unkompliziert ohne weitere Software gemäß Tastatur Standard eine Fernbedienung nutzen.


    Sehr gute Arbeit :respektSchon cool was mit den STM32 Sticks so möglich ist.


    Folgendes ist mir eben passiert: Beim Anlernen drückte ich die Taste für "auf" und da ging mein PC (mit Manjaro) in den Standby. Ich konnte es nicht mehr provozieren.


  • Mir fehlen Infos.

    Was für Boards sind das?

    Was ist mit USBDP?

    Was sagt evtest?

    Wie hast du die repeat timings eingestellt?

    Bei mir waren es die Repeat Timings ...
    Einfach nochmal den KDB Thread durchlesen hätte geholfen. (Sorry & Danke für den Tipp)

    Grillbert

    Cine S2 V6.5 + DuoFlex V4 Apollo-Lake Celeron (Asrock J3355M), ATRIC Einschalter, MLD 5.4 testing

  • Sehr gute Arbeit Schon cool was mit den STM32 Sticks so möglich ist.

    Danke für die Lorbeeren :)


    Was man besser findet, hat sicher auch was mit Gewöhnung zu tun.



    Es gibt neue Firmwares.

  • Man kann jetzt protokollieren, wann der Receiver den VDR gestartet hat.

    Wenn kurz nach den Bootmeldungen ein Eintrag im Receiver-Logfile landet, weiß man dass der VDR vom Receiver gestartet wurde. Wenn der Eintrag im Receiver-Logfile älter ist als die Bootmeldungen wurde per Einschalter am VDR oder per Timer gestartet.

    Das ist nützlich, wenn eine Logitech Fernbedienung auf einen Druck hin den VDR und alle anderen Geräte einschaltet. Wenn der VDR durch einen Timer gestartet wurde, würde er sonst aus gehen, wenn man alle anderen Geräte einschalten will. Durch eine Abfrage im shutdown-Skript kann man das vermeiden.

    Funktioniert jetzt, und ein Beispiel Skript gibt es auch.

  • Für alle die es interessiert - eine kurze Zusammenfassung der "Stolpersteine" die ich mitgenommen habe...

    - "Blue Pill"... man könnte denken (da der Fehler seit Jahren bekannt ist) dass der USB Widerstand inzwischen korrekt ist...
    -> IST ER NICHT!!

    - Maple Mini (Baite) mit Bootloader habe ich nicht dazu überreden können den über DFUUTILS geflashten Code auszuführen.
    (Mit STM32 Stick ohne Bootloader flashen hat dann geklappt)

    Die Timings sind wichtig!!
    Für meine Harmony (KLS 1.6) habe ich
    repeat delay:250
    repeat period:100
    repeat timeout:15

    eingetragen. Mit den voreingestellten Werten kommen nur sehr sporadisch Tastendrücke an.

    USB braucht natürlich Strom im ausgeschalteten Zustand...
    Bei meinem Asrock Board muss man dazu "Deep S5" auf "Auto" stellen - und die "Wake on USB" Einstellungen dazu aktivieren.
    Ich habe aber den Eindruck dass man das Board einmal ganz stromlos machen muss damit die Einstellungen auch aktiv sind.

    Den Pin durchmessen der "Power On" macht klappt natürlich nur wenn man den Maple Mini nicht über einen aktiven USB Port mit Strom versorgt. (Hatte ich in dem langen Thread überlesen...)
    Wenn mann dann (fast) klug ist und statt des PC USB Ports eine Powerbank nimmt, zieht der Maple den Pin natürlich auf die Masse der Powerbank kann man toll mit dem Multimeter messen, interessiert ein Mainboard aber herzlich wenig.
    Wenn dann alles klappt (USB hat im ausgeschalteten Zustand Strom, Power Switch korrekt verdrahtet) klappt es leider immer noch nicht, weil der Maple ein USB Wakeup sendet UND den Power Switch "drückt" ... dann ist das Board direkt wieder aus....

    Wenn ich bei meinem Board USB mit Strom versorge kann man wohl genausogut auch auf Verkabelung zum Power Switch verzichten denke ich.

    Insgesamt trotzdem ein super Projekt ... Danke nochmal an jrie!!


    Cine S2 V6.5 + DuoFlex V4 Apollo-Lake Celeron (Asrock J3355M), ATRIC Einschalter, MLD 5.4 testing

  • Maple Mini (Baite) mit Bootloader habe ich nicht dazu überreden können den über DFUUTILS geflashten Code auszuführen.

    Siehe IRMP auf STM32 - ein USB IR Empfänger/Sender/Einschalter mit Wakeup-Timer


    Die Timings sind wichtig!!
    Für meine Harmony (KLS 1.6) habe ich
    repeat delay:250
    repeat period:100
    repeat timeout:15

    eingetragen. Mit den voreingestellten Werten kommen nur sehr sporadisch Tastendrücke an.

    Die neue Firmware hat bessere voreingestellten Werte drin.


    klappt es leider immer noch nicht, weil der Maple ein USB Wakeup sendet UND den Power Switch "drückt" ... dann ist das Board direkt wieder aus....

    Falls du eines der wenigen Boards hast, die aus S5 auf USB Wakeup reagieren, brauchst du keine Powerkabel. Dann wäre das doppelt gemoppelt.

    Boards die nicht aus S5 auf USB Wakeup reagieren, stört der USB Wakeup nicht.

    Insgesamt trotzdem ein super Projekt ... Danke nochmal an jrie!!

    Danke für das Lob :)

    Schön, dass mehr Leute auch die Keyboard Version benutzen.

  • Hallo,
    ich werde nicht ganz schlau aus dem Keymapping...
    Zunächst habe ich für meinen YaVDR Ansible die Keymap aus dem Template mit meiner Fernbedienung (Harmony, KLS1.6) und stm32kbdIRconfig_gui (Windows) befüllt und es lief ganz OK - allerdings funktionierte die Rote Taste nicht.
    Dann ist mir eingefallen dass YaVDR ja andere Tasten verwendet (F Keys 1-4 für die Farbtasten und habe versucht ein eigenes Mapping auf den Tasten des YaVDR zu erstellen. Das hat (bis auf die Ziffern) so gar nicht geklappt... Nochmal im Thread gelesen und gemerkt dass die Tasten doch mit eventlircd events statt der normalen Tastatur-Tasten gleichzusetzen sind.
    Also auf Basis von https://www.yavdr.org/documentation/0.5/en/ch03s03.html ein weiteres eigenes Template gebaut und einfach mal probiert Keys wie "KEY_PVR" mit zu belegen. Geht nicht - die Fehlermeldung sagt dass nur Keys vom Keyboard belegt werden können (Sinngemäß).

    Dann wieder zurück zum alten Template und hoffen dass es beim ersten Anlauf nicht funktioniert hat weil sich ein Fehler eingeschlichen hat - alle Tasten nochmal angelernt - selbes Ergebnis.

    Muss ich für YaVDR ansible vielleicht irgend etwas beachten? Gibt es Ideen?

    So sieht meine MAP jetzt aus:



    Cine S2 V6.5 + DuoFlex V4 Apollo-Lake Celeron (Asrock J3355M), ATRIC Einschalter, MLD 5.4 testing

  • Eigentlich sollten die Tastennamen über die evmap 03_1209_4445.evmap passend übersetzt werden - die udev-Attribute sollten durch https://github.com/yavdr/yavdr…ventlircd-names.rules#L54 passend gesetzt werden (eventuell weicht der Name bei deinem Empfänger ab).


    Am besten probierst du die folgenden Dinge aus:

    • Bei gestopptem eventlircd (systemctl stop eventlircd.{socket,service}) mit evtest (sudo evtest) nachsehen, welche Tasten vom Empfänger kommen, wenn du die rote Taste auf der Fernbedienung drückst.
    • Mit der von evtest angezeigten Nummer des Input Device kannst du dann seine Udev-Attribute abfragen:
    Code
    1. sudo udevadm info --query=all --attribute-walk --name=/dev/input/event4

    Da wäre wichtig, ob eventlircd_enabled=true gesetzt ist und die oben genannte evmap geladen wird.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

    • Bei gestopptem eventlircd (systemctl stop eventlircd.{socket,service}) mit evtest (sudo evtest) nachsehen, welche Tasten vom Empfänger kommen, wenn du die rote Taste auf der Fernbedienung drückst.
    • Mit der von evtest angezeigten Nummer des Input Device kannst du dann seine Udev-Attribute abfragen:
    Code
    1. Event: time 1565624314.088079, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7004d
    2. Event: time 1565624314.088079, type 1 (EV_KEY), code 107 (KEY_END), value 1
    3. Event: time 1565624314.088079, -------------- SYN_REPORT ------------
    4. Event: time 1565624314.096039, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7004d
    5. Event: time 1565624314.096039, type 1 (EV_KEY), code 107 (KEY_END), value 0
    6. Event: time 1565624314.096039, -------------- SYN_REPORT ------------


    Das ist schon mal ein anderer Key als ich ihn definiert habe.
    Für die grüne Taste funktioniert es interessanterweise korrekt...


    In der Ausgabe von



    Code
    1. Event: time 1565624315.456035, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
    2. Event: time 1565624315.456035, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 1
    3. Event: time 1565624315.456035, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70008
    4. Event: time 1565624315.456035, type 1 (EV_KEY), code 18 (KEY_E), value 1
    5. Event: time 1565624315.456035, -------------- SYN_REPORT ------------
    6. Event: time 1565624315.464029, type 4 (EV_MSC), code 4 (MSC_SCAN), value 700e0
    7. Event: time 1565624315.464029, type 1 (EV_KEY), code 29 (KEY_LEFTCTRL), value 0
    8. Event: time 1565624315.464029, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70008
    9. Event: time 1565624315.464029, type 1 (EV_KEY), code 18 (KEY_E), value 0
    10. Event: time 1565624315.464029, -------------- SYN_REPORT ------------


    Ich vermute die 2 Events kommen für keypress und keyrelease ...

    In der Ausgabe von

    Code
    1. sudo udevadm info --query=all --attribute-walk --name=/dev/input/event1

    finde ich gar keinen Treffer auf "lircd":


    Cine S2 V6.5 + DuoFlex V4 Apollo-Lake Celeron (Asrock J3355M), ATRIC Einschalter, MLD 5.4 testing

  • Das ist schon mal ein anderer Key als ich ihn definiert habe.
    Für die grüne Taste funktioniert es interessanterweise korrekt...

    Wenn es für die grüne Taste funktioniert, sollte die evmap angewendet werden. Dann wäre jetzt also die Herausforderung zu klären, warum der Empfänger die falsche Tastenkombination sendet...

    Ich vermute die 2 Events kommen für keypress und keyrelease ...

    Genau, value 1 ist ein Tastendruck, value 0 ist ein Loslass-Event, value 2 wäre eine Wiederholung einer gedrückt gehaltenen Taste.

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Klicke in die debug messages , kopiere alles und füge es in einen Editor ein und poste das bitte.

    Zusätzlich poste bitte auch das Ergebnis von "get eeprom", "save file".

  • Klicke in die debug messages , kopiere alles und füge es in einen Editor ein und poste das bitte.

    Zusätzlich poste bitte auch das Ergebnis von "get eeprom", "save file".


    Soweit ich es jetzt beurteilen kann habe liegt der Fehler bei mir ...
    Die map die ich oben gepostet habe war nicht identisch zu dem was ich ausgelesen habe.
    Hier waren Codes mehrfach vergeben und es wurde der 1. Eintrag genommen - "Works as Designed".

    Besten Dank für die schnelle Unterstützung!

    Cine S2 V6.5 + DuoFlex V4 Apollo-Lake Celeron (Asrock J3355M), ATRIC Einschalter, MLD 5.4 testing