Denon RC-1146 remote with LibreELEC 9
In LibreELEC 9, the IR driver was changed from lircd to in-kernel decoding with ir-keytable.
I'm still using the GPIO IR receiver from this tutorial on my Raspberry Pi.
To activate it, I need to add a dtoverlay.
# mount -o remount,rw /flash
# echo dtoverlay=gpio-ir >> /flash/config.txt
# mount -o remount,ro /flash
I then proceeded along this tutorial.
# systemctl stop kodi
# systemctl stop eventlircd
I get from ir-keytable:
# ir-keytable
Found /sys/class/rc/rc0/ (/dev/input/event2) with:
Name: gpio_ir_recv
Driver: gpio_ir_recv, table: rc-rc6-mce
lirc device: /dev/lirc0
Supported protocols: other lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp
Enabled protocols: lirc nec rc-6
bus: 25, vendor/product: 0001:0001, version: 0x0100
Repeat delay = 500 ms, repeat period = 125 ms
After some trial and error with different protocols, I finally found:
# ir-keytable --protocol sharp --test
Protocols changed to sharp
Testing events. Please, press CTRL-C to abort.
1009.423304: lirc protocol(sharp): scancode = 0x8ac
1009.423341: event type EV_MSC(0x04): scancode = 0x8ac
1009.423341: event type EV_SYN(0x00).
As with all things Linux, documentation is notoriously difficult to come by.
According to ir-keytable --version, LibreELEC-9.0.1 uses v4l-utils-1.14.2.
This is an important detail since v4l-utils have since changed their keytable format to toml!
I could not find any documentation for the old keytable format, so I had a look at the source code of keytable.c.
# in the first line can be followed by table and type keywords specifying the name of the table and what is otherwise known as the protocol, separated by various combinations of whitespace, equal signs, colons and commas.
Otherwise, lines beginning with # are ignored.
The remaining lines may start with an optional keyword "scancode", followed by whitespace, equals sign or colon.
This is followed by the scancode (in a format understood by strtoul(3)) and terminated by whitespace, equals sign or colon.
Finally, there should be a keycode terminated by whitespace, equals sign, colon or an open parenthesis(!).
The keycodes can be ones listed by irrecord --list or, better yet, ones from the devinput section of /usr/share/kodi/system/Lircmap.xml to make sure they are assigned the desired function in Kodi, or in a format suitable for strtol(3).
The rest of the line is ignored and can thus be used for comments.
Since Kodi is connected to the DVD input of my amp, I used the remote's default DVD profile.
Eventually, I ended up with the following /storage/.config/rc_keymaps/denon1146dvd:
# table denon1146dvd, type: sharp 0x6c0 KEY_POWER 0x881 KEY_0 0x882 KEY_1 0x883 KEY_2 0x884 KEY_3 0x885 KEY_4 0x886 KEY_5 0x887 KEY_6 0x888 KEY_7 0x889 KEY_8 0x88a KEY_9 0x88c KEY_SUBTITLE 10+ 0x891 KEY_INFO menu 0x892 KEY_BACK 0x898 KEY_NEXT 0x899 KEY_PREVIOUS 0x89a KEY_FASTFORWARD 0x89b KEY_REWIND 0x89d KEY_PAUSE 0x8a0 KEY_PLAY 0x8a1 KEY_STOP 0x8ac KEY_UP 0x8ad KEY_DOWN 0x8ae KEY_RIGHT 0x8af KEY_LEFT 0x8bb KEY_ENTER 0x8bc KEY_EPG search 0x8bd KEY_MENU top menu
The non-obvious assigments are: the key labelled »menu« on the remote sends a KEY_INFO code since that seems to be the most useful code in Kodi (file info or playing info, respectively). The »top menu« key sends KEY_MENU which takes you to Kodi's main menu and toggles the play menu. I assigned KEY_EPG to the »search« key since KEY_EPG invokes the context menu in the menu and the decoder info while playing. Finally, I cheekily remapped the »10+« key to KEY_SUBTITLE since the former seems to be unused and I use the latter a lot.
Last, I activated it like this:
# echo '* * denon1146dvd' >> /storage/.config/rc_maps.cfg
Thanks! Here is keymap for denon RC-1022
ReplyDelete# table denonRC-1022, type: sharp
0x290 KEY_POWER
0x841 KEY_0
0x842 KEY_1
0x843 KEY_2
0x844 KEY_3
0x845 KEY_4
0x846 KEY_5
0x847 KEY_6
0x848 KEY_7
0x849 KEY_8
0x84a KEY_9
0x84c KEY_SUBTITLE 10+
0x858 KEY_NEXT
0x859 KEY_PREVIOUS
0x85d KEY_PAUSE
0x85c KEY_PLAY
0x85e KEY_STOP
0xcd6 KEY_UP
0xcd5 KEY_DOWN
0x86b KEY_ENTER
0x86a KEY_EPG search
0x45f KEY_MENU top menu
0x453 KEY_INFO menu
0x45e KEY_BACK
0x45c KEY_RIGHT
0x457 KEY_LEFT
0x45a KEY_FASTFORWARD
0x45b KEY_REWIND