Spended even more time into investigation, trying to debug, why that udev rule (/lib/udev/rules.d/60-ir-keytable.rules) part of the "ir-keytable" package is not issued correctly or even at all not with kernels version > 5.4.0-48.
Unfortunately I still don't find an answer, but maybe someone else do find it and will post it here.
Above mentioned workaround is for my taste to specific, to tailored, not flexible enough. But mapping something into systemd is a good base/idea.
The IMHO root causing udev rule does contain that:
Code:
htpc1-user:/home/user> cat /lib/udev/rules.d/60-ir-keytable.rules
# Automatically load the proper keymaps after the Remote Controller device
# creation.
# The keycode tables rules should be at /etc/rc_maps.cfg
ACTION=="add", SUBSYSTEM=="rc", RUN+="/usr/bin/ir-keytable -a /etc/rc_maps.cfg -s $name"
Command can be called everytime manually after HTPC is up and running, to provide correct mapping on the fly:
Code:
htpc1-user:/home/user> sudo /usr/bin/ir-keytable -a /etc/rc_maps.cfg
alte Schlüsseltabelle geleert
45 Schlüsselcode(s) wurden in den Treiber geschrieben.
Protokolle geändert in rc-6
To make that happen on every reboot, I created a systemd service:
Code:
htpc1-user:/home/user> cat /etc/systemd/system/my_ir_keytable_load.service
[Unit]
Description="Reload of my custom ir_keytable due to broken udev rule."
After=udev.service lircd.service inputlirc.service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/ir-keytable -a /etc/rc_maps.cfg
[Install]
WantedBy=multi-user.target
Enabled it:
Code:
htpc1-user:/home/user> sudo systemctl enable my_ir_keytable_load.service
After calling it manually or after next reboot:
Code:
htpc1-user:/home/user> sudo systemctl status my_ir_keytable_load.service
● my_ir_keytable_load.service - "Reload of my custom ir_keytable due to broken udev rule."
Loaded: loaded (/etc/systemd/system/my_ir_keytable_load.service; enabled; vendor preset: enabled)
Active: active (exited) since Wed 2021-03-10 12:01:07 CET; 43s ago
Process: 661 ExecStart=/usr/bin/ir-keytable -a /etc/rc_maps.cfg (code=exited, status=0/SUCCESS)
Main PID: 661 (code=exited, status=0/SUCCESS)
Mär 10 12:01:07 htpc1 systemd[1]: Starting "Reload of my custom ir_keytable due to broken udev rule."...
Mär 10 12:01:07 htpc1 ir-keytable[661]: alte Schlüsseltabelle geleert
Mär 10 12:01:07 htpc1 ir-keytable[661]: 45 Schlüsselcode(s) wurden in den Treiber geschrieben.
Mär 10 12:01:07 htpc1 ir-keytable[661]: Protokolle geändert in rc-6
Mär 10 12:01:07 htpc1 systemd[1]: Started "Reload of my custom ir_keytable due to broken udev rule.".
Proof you key mapping using:
Code:
htpc1-user:/home/user> sudo ir-keytable -r
Implemented that way it doesn't depend on a very specific configuration, it does work with any later change in "rc_maps.cfg" and/or key mappings.
It also doesn't harm if the UDEV rule "/lib/udev/rules.d/60-ir-keytable.rules" will work again one day in the future ...
Bookmarks