IRMP auf STM32 - ein USB-HID-Keyboard IR Empfänger/Sender/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?

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • Sorry, Post hatte sich überschnitten.

    Habe jetzt mit stm32kbdIRconfig_gui.exe

    Code
    repeat_timeout = 15
    repeat_delay = 100
    repeat_period = 100

    gesetzt.

    Und auf mal funktioniert das ganze! *freu*

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • 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

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

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

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

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

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • ...

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

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

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

    Klick für meine Hardware

    vdr1: Rock Pi 4A 4GB | VDR*ELEC LE12 32GB eMMC | Video: 2TB M.2 | 2x WinTV dualHD (DVB-T2/DVB-C) | IRMP RP2350 (Keyb)
    vdr2: Odroid N2+ 4GB | VDR*ELEC CE21-ng 64GB eMMC | Video über USB: 4TB SATA Rec (XFS) + 8TB SATA Archiv (exFAT) | 2x WinTV dualHD (DVB-T2/DVB-C) | IR OnBoard
    vdr3: HP ProDesk 400 G3 SFF (i3) | NVidia Quadro T400 | 2x 8GB | System: Ubuntu 24.02 LTS, yavdr ansible (vdr 2.7.4) auf 30GB mSATA SSD | Video: 3TB SATA (XFS) | 1x WinTV dualHD | IRMP RP2040 Keyb
    TV: Philips 55OLED805

  • 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-re…f70ac5aa4c44743 - 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

    Meine VDRs

    VDR 1: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 24.04 (yavdr-ansible), VDR 2.7.4, CIR-Empfänger
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    Client 1: Raspberry Pi 2, Ubuntu 22.04 (yavdr-ansible), VDR 2.6.1

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

    Yavdr auf Yammy / 2 Kabel Empfänger / Asrock j4105-itx / IRMP KDB

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

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

  • Herrrjeee, wer lesen kann. Sorry.

    Meine VDRs

    VDR1: ASUS H81-GAMER Gaming | Intel® Core™ i3-4130 | GeForce GT 1030 | yaVDR Ansible | Mystique SaTiX-S2 Dual | GraphTFT mit Elecrow 10,1-Zoll-IPS-Monitor | ACPI Wakeup | Atric IR-Einschalter Rev.5
    VDR2: HP DC7700p | GeForce 610 | easyVDR 2.5 - VDR 2.2.0 | TeVii S464 V2.0 | ST-Link v2 IRMP-STM32 WakeUp

    Test VDR: Fujitsu Esprimo D756 E85+ Intel Core i5-6500 | Intel HD Graphics 530 | easyVDR 5 / yaVDR ansible | ST-Link v2 IRMP-STM32 WakeUp | Cine S2 V6.2

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!