Skip to content

Instantly share code, notes, and snippets.

@coaxial
Last active July 1, 2023 05:42
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save coaxial/575fec33fcb10f69586e419b97927eb8 to your computer and use it in GitHub Desktop.
Save coaxial/575fec33fcb10f69586e419b97927eb8 to your computer and use it in GitHub Desktop.
How to setup an infrared remote on LibreELEC/Kodi on RPI

Using a simple IR receiver such as IR5040 or TSOPxxxxx and a Raspberry Pi running LibreELEC + Kodi

Enable lirc in Kodi

Edit the file at /flash/config:

  • mount -o remount,rw /flash
  • vi /flash/config
  • append device_tree_overlay=lirc-rpi
  • mount -o remount,ro /flash

Connect the receiver

Check pinout on datasheet; use 3.3V rail, any GND, and data to GPIO #18/pin 12 (cf https://learn.adafruit.com/assets/5909)

IR5040 datasheet: http://www.tme.eu/en/Document/54a544ab7820a97322a14fb463e54018/ir5040.pdf

When looking at the component, flat side parallel to the ground plane, legs towards you, leg further from the other to the right:

  • pin 1: GND
  • pin 2: VCC (2.7~5.0V)
  • pin 3: OUT

Reboot the PI

Check that the IR receiver works

  • ssh root@mykodi
  • dmesg | grep lirc (should give something like "lirc_rpi: auto-detected active low receiver on GPIO pin 18")
  • killall lircd && mode2 -d /dev/lirc0 to check if it receives anything when pressing any button on the remote

Map the IR codes to specific keys

In /storage/.config:

  • irrecord -d /dev/lirc0 to start the recording wizard, use brand-remote-model pattern to name file
  • record at least the following keys:
    • KEY_UP
    • KEY_DOWN
    • KEY_LEFT
    • KEY_RIGHT
    • KEY_PLAY (will play/pause)
    • KEY_PAUSE (optional, will do the same as KEY_PLAY)
    • KEY_STOP
    • KEY_VOLUMEUP
    • KEY_VOLUMEDOWN
    • KEY_INFO
    • KEY_EPG (contextual menu)
    • KEY_EXIT (back)

Symlink the remote file

lircd will look for a file named lircd.conf: If the remote doesn't have any effect but the receiver is working (as verified with mode2), then double check the remote config file is named lircd.conf.

  • ln -s "$(pwd)/myremote.lircd.conf" "$(pwd)/lircd.conf"

Check if lirc works

  • irw /rub/lirc/lircd-lirc0 and press remote buttons. Should see the keymaps as the buttons are pressed.

Troubleshooting

Check if lircd works at all

  • killall lircd
  • /usr/sbin/lircd --nodaemon --loglevel=debug --driver=default --device=/dev/lirc0 --output=/run/lirc/lircd-lirc0 --pidfile=/run/lirc/lircd-lirc0.pid --release=_LIRCUP /storage/.config/lircd.conf in one terminal
  • /usr/sbin/lircd-uinput --loglevel=debug --release=_LIRCUP /run/lirc/lircd-lirc0 in another
  • press keys, see if there is any output

If keys configured successfully, try

  • irw -d /dev/lirc0 and press buttons. If it registers, check that /storage/config/lircd.conf exists; file must be lircd.conf and not other name.

Helpful threads:

# Please take the time to finish this file as described in
# https://sourceforge.net/p/lirc-remotes/wiki/Checklist/
# and make it available to others by sending it to
# <lirc@bartelmus.de>
#
# This config file was automatically generated
# using lirc-0.9.4c(default) on Sat May 6 19:04:25 2017
# Command line used: -d /dev/lirc0 lircd.conf
# Kernel version (uname -r): 4.9.13
#
# Remote name (as of config file): sony-rmt-d109a
# Brand of remote device, the thing you hold in your hand:
# Remote device model nr: rmt-d109a
# Remote device info url:
# Does remote device has a bundled capture device e. g., a
# usb dongle? : no
# For bundled USB devices: usb vendor id, product id
# and device string (use dmesg or lsusb):
# Type of device controlled
# (TV, VCR, Audio, DVD, Satellite, Cable, HTPC, ...) :
# Device(s) controlled by this remote: tv/dvd
begin remote
name sony-rmt-d109a
bits 12
flags SPACE_ENC|CONST_LENGTH
eps 30
aeps 100
header 2387 601
one 1191 604
zero 590 604
post_data_bits 8
post_data 0x92
gap 44916
toggle_bit_mask 0x0
frequency 38000
begin codes
KEY_VOLUMEUP 0x06B
KEY_VOLUMEDOWN 0xCCB
KEY_UP 0x9EB
KEY_DOWN 0x5EB
KEY_LEFT 0xDEB
KEY_RIGHT 0x3EB
KEY_OK 0xD0B
KEY_PLAY 0x4CB
KEY_PAUSE 0x9CB
KEY_STOP 0x1CB
KEY_EXIT 0x70B
KEY_INFO 0x2AB
KEY_EPG 0xD8B
end codes
end remote
@jpingouix
Copy link

Me again ....
Most of my problems have been resolved now, but one : irw is well responding the name of the key I have pressed on the remote, but irexec do nothing. I have put a .lircrc file in /storage, but it seems it is never read...
Since my last message, I try to register to libreelec.tv forum, but they never send the registration code, so I cannot ask any question in the forum.

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