Skip to content

Instantly share code, notes, and snippets.

@Quacky2200
Last active February 4, 2018 09:53
Show Gist options
  • Save Quacky2200/c57d138faad5a43873a9891809670f69 to your computer and use it in GitHub Desktop.
Save Quacky2200/c57d138faad5a43873a9891809670f69 to your computer and use it in GitHub Desktop.

First install with package manager apt install lirc kodi inputlirc ir-keytable

Get all input devices cat /proc/bus/input/devices

Get more information about infrared device udevadm info -a -p $(udevadm info -q path -n /dev/input/event6)

Test to see input from remote (must make sure lirc is not running and both devices set to none with dpkg-reconfigure lirc) ir-keytable -t --device=/dev/input/event6

Symlink infrared to udev rules so that it's setup to be used on each restart echo 'KERNEL=="event*",ATTRS{name}=="Nuvoton w836x7hg Infrared Remote Transceiver",SYMLINK="input/remoteir"' > /etc/udev/rules.d/10-persistent-ir.rules

Either reboot or restart udev at this point!

Restart udev /etc/init.d/udev reload

Trigger udev rules to be used? udevadm trigger

Kill lirc if still there pkill lirc

Copy the kodi rules to be customized as part of user cp /usr/share/kodi/system/Lircmap.xml ~/.kodi/userdata/Lircmap.xml

Edit linux-input-layer section to contain below after cx23885_remote altname:

<altname>devinput</altname>
<altname>/dev/input/remoteir</altname>

Use ir-keytable to get each scancode per event (helps to write what button to press, press enter and then press the button so you can identify each to put into config file) ir-keytable -t --device=/dev/input/remoteir

A good example below:

Up
1517726018.161573: event type EV_MSC(0x04): scancode = 0xeac219
1517726018.161573: event type EV_SYN(0x00).
1517726018.325310: event type EV_MSC(0x04): scancode = 0xeac299
1517726018.325310: event type EV_SYN(0x00).
Down
1517726025.364441: event type EV_MSC(0x04): scancode = 0xeac233
1517726025.364441: event type EV_SYN(0x00).
1517726025.528193: event type EV_MSC(0x04): scancode = 0xeac2b3
1517726025.528193: event type EV_SYN(0x00).
Left
1517726034.321656: event type EV_MSC(0x04): scancode = 0xeac21e
1517726034.321656: event type EV_SYN(0x00).
1517726034.485427: event type EV_MSC(0x04): scancode = 0xeac29e
1517726034.485427: event type EV_SYN(0x00).
Right
1517726038.083472: event type EV_MSC(0x04): scancode = 0xeac22d
1517726038.083472: event type EV_SYN(0x00).
1517726038.247177: event type EV_MSC(0x04): scancode = 0xeac2ad
1517726038.247177: event type EV_SYN(0x00).
Back
1517726045.138338: event type EV_MSC(0x04): scancode = 0xeac266
1517726045.138338: event type EV_SYN(0x00).
1517726045.302086: event type EV_MSC(0x04): scancode = 0xeac2e6
1517726045.302086: event type EV_SYN(0x00).
Home
1517726052.314062: event type EV_MSC(0x04): scancode = 0xeac203
1517726052.314062: event type EV_SYN(0x00).
1517726052.477839: event type EV_MSC(0x04): scancode = 0xeac283
1517726052.477839: event type EV_SYN(0x00).
Ok
1517726057.168215: event type EV_MSC(0x04): scancode = 0xeac22a
1517726057.168215: event type EV_SYN(0x00).
1517726057.331952: event type EV_MSC(0x04): scancode = 0xeac2aa
1517726057.331952: event type EV_SYN(0x00).
Rewind
1517726066.951828: event type EV_MSC(0x04): scancode = 0xeac234
1517726066.951828: event type EV_SYN(0x00).
1517726067.115592: event type EV_MSC(0x04): scancode = 0xeac2b4
1517726067.115592: event type EV_SYN(0x00).
Play/Pause
1517726074.540006: event type EV_MSC(0x04): scancode = 0xeac24c
1517726074.540006: event type EV_SYN(0x00).
1517726074.703656: event type EV_MSC(0x04): scancode = 0xeac2cc
1517726074.703656: event type EV_SYN(0x00).
Fast-forward
1517726081.498476: event type EV_MSC(0x04): scancode = 0xeac255
1517726081.498476: event type EV_SYN(0x00).
1517726081.662213: event type EV_MSC(0x04): scancode = 0xeac2d5
1517726081.662213: event type EV_SYN(0x00).
Star
1517726087.294886: event type EV_MSC(0x04): scancode = 0xeac261
1517726087.294886: event type EV_SYN(0x00).
1517726087.458666: event type EV_MSC(0x04): scancode = 0xeac2e1
1517726087.458666: event type EV_SYN(0x00).
NowTV
1517726098.082492: event type EV_MSC(0x04): scancode = 0xeac204
1517726098.082492: event type EV_SYN(0x00).
1517726098.246172: event type EV_MSC(0x04): scancode = 0xeac284
1517726098.246172: event type EV_SYN(0x00).
Sky Store
1517726104.231820: event type EV_MSC(0x04): scancode = 0xeac218
1517726104.231820: event type EV_SYN(0x00).
1517726104.395577: event type EV_MSC(0x04): scancode = 0xeac298
1517726104.395577: event type EV_SYN(0x00).

Clean the ir keytable for the devinput device before new rules are going to be used: ir-keytable -c --device=/dev/input/remoteir

Edit your new remote control file: nano /etc/lirc/remoteir.cfg

Enter each scancode rule to each KEY_[FUNC] (brackets optional, comments can be included for any needed and unclear reference to buttons) like so (find KEY_ combinations from devinput section in ~/.kodi/userdata/Lircmap.xml if required): scancode 0x800f044d = KEY_SUBTITLE (0x172)

So that eventually it contains the full scancodes such as the ones for a Now TV Remote (Roku Remote):

scancode 0xeac29e = KEY_LEFT
scancode 0xeac2ad = KEY_RIGHT
scancode 0xeac299 = KEY_UP
scancode 0xeac2b3 = KEY_DOWN
scancode 0xeac22a = KEY_OK
scancode 0xeac283 = KEY_HOME
scancode 0xeac2e6 = KEY_ESC #Back
scancode 0xeac234 = KEY_REWIND
scancode 0xeac2cc = KEY_PLAYPAUSE
scancode 0xeac255 = KEY_FORWARD
scancode 0xeac261 = KEY_MUTE #Star
scancode 0xeac284 = KEY_INFO #Now TV (AKA display NOW/info)
scancode 0xeac298 = KEY_SUBTITLE #Sky Store (AKA SUBTITLE STORE)

Configure the keytable to use the configuration we just created, for the devinput remoteir: ir-keytable --device=/dev/input/remoteir --write=/etc/lirc/remoteir.cfg

Test the device in either kodi or irw

You should now see codes come through when using the remote control (w/ irw), for example...

6c 0 KEY_DOWN /dev/input/remoteir
6c 0 KEY_DOWN /dev/input/remoteir
67 0 KEY_UP /dev/input/remoteir
67 0 KEY_UP /dev/input/remoteir
67 0 KEY_UP /dev/input/remoteir
67 0 KEY_UP /dev/input/remoteir
69 0 KEY_LEFT /dev/input/remoteir
69 0 KEY_LEFT /dev/input/remoteir

or a useable interface on Kodi!

"Jobs done!"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment