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

  • Wie/wo komme ich an diese Werte?

    Wenn du auf den Dropdown-Keil rechts neben repeat delay klickst, kannst du die anderen beiden auswählen.

    Auslesen mit get, setzen mit set (vorher Wert ins Feld eintragen).

  • Ok, wie setze ich die Werte?


    Mein Testsystem ist ein Ubuntu 18.04.2 LTS mit yavdr ansible.

    Geht das nicht mit stm32kbdIRconfig_gui.exe unter Windows?

  • Sorry, Post hatte sich überschnitten.


    Habe jetzt mit stm32kbdIRconfig_gui.exe

    Code
    1. repeat_timeout = 15
    2. repeat_delay = 100
    3. repeat_period = 100

    gesetzt.


    Und auf mal funktioniert das ganze! *freu*

  • Vielen Dank an alle Beteiligten!


    Die Unart sich an ein Themen dranzuhängen und Es dann Seitenweise zuzumüllen - muss ich mir noch abgewöhnen.

    Immer ein eigenes Thema aufmachen. Eventl. kann das ja jetzt ein Moderator absplitten.

    So oder so, hilft das Geschriebene.


    Munter bleiben, Rossi

  • Bin noch etwas am Finetuning....


    Wie kann ich Tasten belegen, die im template.map nicht gelistet sind?

    Mir geht es z.B. um KEY_TIME, KEY_PVR oder KEY_CHANNEL

    Das muss sich dann doch in der evmap fortführen/wiederfinden.


    Würde das nicht Sinn machen gleich alle LIRC bzw. VDR Möglichkeiten abzubilden? In template.map und evmap?

    Damit jeder nach seinem Geschmack belegen kann.


    Ausserdem ist mir das Scrollen im VDR OSD noch etwas langsam - im Vergleich zu meinem Produktiv VDR mit der "alten" irmplircd Geschichte.

    An dem repeat_delay Wert drehen, macht es schneller?

  • Wie kann ich Tasten belegen, die im template.map nicht gelistet sind?

    Second method


    Das muss sich dann doch in der evmap fortführen/wiederfinden.

    Einfach passend ergänzen.


    Würde das nicht Sinn machen gleich alle LIRC bzw. VDR Möglichkeiten abzubilden? In template.map und evmap?

    Ich glaube schon. Was sind denn "alle LIRC bzw. VDR Möglichkeiten"?

    Ausserdem ist mir das Scrollen im VDR OSD noch etwas langsam - im Vergleich zu meinem Produktiv VDR mit der "alten" irmplircd Geschichte.

    An dem repeat_delay Wert drehen, macht es schneller?

    Das bekommt man genauso schnell wie mit der "alten" irmplircd Geschichte.

    Benutzt du stm32kbd2uinput?

    Wenn ja, kannst du im Quelltext delay und period anpassen. Wenn ich mal Zeit habe, mache ich das konfigurierbar. Aber sicher nicht in den nächsten paar Tagen, keine Zeit momentan.

    Wenn nein in stm32kbdIRconfig_gui.

  • Alles klar, wer lesen kann ist klar im Vorteil. Bastel mir da jetzt mal was passendes zusammen.


    Die mögliche VDR Belegung ist der remote.conf zu entnehmen -> http://www.vdr-wiki.de/wiki/index.php/Remote.conf

    Viele Tasten fehlt nicht im Template. Musste vorhin an die ur Fernbedienungslösung LIRC denken, welche sich ja auch daran halten muss.


    Was die Schnelligkeit angeht, setze es ohne stm32kbd2uinput ein.

    Probiere jetzt mit unterschiedlichen Werten über stm32kbdIRconfig_gui...

  • ...

    Und dann braucht es noch eine udev-Regel, die dafür sorgt, dass sich eventlircd das Gerät schnappt (danach den Empfänger einmal ab- und wieder anstecken):

    Code: /etc/udev/rules.d/69-irmp-kbd.rules
    1. ACTION=="add", KERNEL=="event[0-9a-f]*", SUBSYSTEM=="input", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="4445", SYMLINK+="irmp_stm32", ENV{eventlircd_enable}="true", ENV{eventlircd_evmap}="03_1209_4445.evmap", TAG+="uaccess"


    Wenn das für dich klappt, kann ich das gerne ins Paket aufnehmen.

    Da passt was nicht.


    Muss die Datei nicht dahin: /lib/udev/rules.d/69-irmp-kbd.rules ?

    Abgesehen davon, er (yavdr ansible) zieht sich trotzdem immer diese Map /etc/eventlircd.d/STM32_IRMP.evmap


    Ausserdem muss man kapiert haben, dass die Tasten im template.map quasi festgenagelt sind.

    Bedeutet man muss darin z.B. KEY_F14, F15 usw. mit Code belegen und die eigentliche Zuweisung erfolgt über die *.evmap -> KEY_F14=KEY_CHANNEL, KEY_F15=KEY_TIME usw.

    Sonst tut man sich mit Methode zwei schwer :-)


    Um ein Shell Befehl auf Taste zu legen, benutze ich weiter lircrc.conf ?


    Eine schnelle Bedienung funktioniert mit

    repeat_delay und repeat_period = 200

    ganz gut.

  • Ausserdem muss man kapiert haben, dass die Tasten im template.map quasi festgenagelt sind.

    Bedeutet man muss darin z.B. KEY_F14, F15 usw. mit Code belegen und die eigentliche Zuweisung erfolgt über die *.evmap -> KEY_F14=KEY_CHANNEL, KEY_F15=KEY_TIME usw.

    Sonst tut man sich mit Methode zwei schwer

    Nein. Du kannst beide Methoden kombinieren, und das auch wild durcheinander. Du kannst Zeilen löschen (im eeprom map der gui). Du kannst irdata oder keys ändern. Es gibt da eigentlich keine Beschränkungen. Außer dass man lieber den Editor in der gui nimmt statt einen externen, und dass man die Original template nimmt - es sei denn man weiß genau , was man tut.


    Was yavdr ansible betrifft, kann dir hoffentlich seahawk1986 helfen.

  • Aha.

    Leider scheitere ich an Methode zwei.

    Habe es nicht hinbekommen eine Zeile z.B mit Code und KEY_TIME zu hinterlegen.

  • Muss die Datei nicht dahin: /lib/udev/rules.d/69-irmp-kbd.rules ?

    Eigene Anpassungen gehören nach /etc, das andere Verzeichnis bekommt seinen Inhalt aus Paketen.

    Abgesehen davon, er (yavdr ansible) zieht sich trotzdem immer diese Map /etc/eventlircd.d/STM32_IRMP.evmap

    Ah stimmt, die Regel hatte ich vor einiger Zeit angelegt: https://github.com/yavdr/yavdr…6428b5e880f70ac5aa4c44743 - die überschreibt dann das Attribut, das in der 69-irmp-kbd.rules gesetzt wurde (das muss so früh passieren, wenn man den uaccess-Tag setzen will).


    Bedeutet man muss darin z.B. KEY_F14, F15 usw. mit Code belegen und die eigentliche Zuweisung erfolgt über die *.evmap -> KEY_F14=KEY_CHANNEL, KEY_F15=KEY_TIME usw.

    Da liegt daran, dass der Empfänger als Keyboard agiert und Tastencodes > 255 kann ein Keybard nicht (dafür bräuchte es ein Consumer Input Device).


    Um ein Shell Befehl auf Taste zu legen, benutze ich weiter lircrc.conf ?

    Wenn der Befehl keine Root-Rechte erfordert (wie z.B. der Wechsel zwischen VDR und KODI) am besten die /var/lib/vdr/.lircrc

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Leider scheitere ich an Methode zwei.

    Habe es nicht hinbekommen eine Zeile z.B mit Code und KEY_TIME zu hinterlegen.

    Da liegt daran, dass der Empfänger als Keyboard agiert und Tastencodes > 255 kann ein Keybard nicht (dafür bräuchte es ein Consumer Input Device).

    Ja, daran habe ich nicht gedacht. Die möglichen Keys stehen in usb_hid_keys.h. Andere sind nicht möglich, bzw. man muss dann über die evmap übersetzen (hast du ja schon gemerkt).

    Da müsste ich vielleicht mal eine Fehlermeldung einbauen, damit klar ist, warum das nichts wird.

  • 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.


    README

    Problem


    Wenn ich wieder Zeit habe, kommt das auch in die Version ohne Keyboard.

  • Das geht aber nicht zuverlässig, weil das Gerät weggeschnappt wird.


    Mir fehlt etwas, mit dem ich die speziellen Keys ein Skript starten lasse.

    Fragt sich nur wie.

    Hat jemand eine Idee?


    Also immer wenn ein KEY_REFRESH vom Empfänger ankommt, soll ein Skript ausgeführt werden.

    Auf einer Konsole geht das mit bind, aber ich bin ja nicht auf einer Konsole.

  • Hallo,

    ich habe das ganze jetzt mal auf einem Testboard gebaut - und inzwischen auch eine gelötete Version fertig.

    Beide verhalten sich am "normalen" PC - sowohl unter WIN als auch unter Linux identisch: Tastendrücke werden nur sehr sporadisch erkannt.

    Die Tasten sind korrekt angelernt, aber ich muss eine ganze Weile die "1" auf der Fernbedienung drücken bis z.B. auf der Konsole mal eine "1" ausgegeben wird.

    Ist das normales Verhalten?

    Die LED auf dem Maple Mini blinkt dagegen zuverlässig sobald etwas ankommt...

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

  • Mir fehlen Infos.

    Was für Boards sind das?

    Was ist mit USBDP?

    Was sagt evtest?

    Wie hast du die repeat timings eingestellt?

  • Hi,

    ich habe mir mal einen Stick mal geflasht. Stick wird erkannt und /dev/hidraw2 wird angelegt. Allerdings will stm32IRconfig_gui nicht. Braucht man eine bestimmte Version von stm32IRconfig_gui?



  • Herrrjeee, wer lesen kann. Sorry.