I just swapped my old Raspi with an Odroid N2+ and struggle to get the built-in IR receiver to work.
When running following commands, there is no output at all:
$ ir-keytable -p ALL -t
$ cat /dev/lirc0
On my Raspi I’m running Libreelec 9.0.2 with an IR receiver connected to GPIO and everything works just fine.
Am I missing something, do I have to enable the built-in IR receiver somehow? Do I have to adjust the device tree?
I found that /etc/lirc/lircd.conf points to /storage/.config/lircd.conf which is not existing. Also I checked that there is no /storage/.config/remote.disable file so it shouldn’t be disabled?
I tried the stable 9.2.5 and nightly builds with same results.
Following are some console outputs that might help:
CoreELEC:~ # systemctl stop kodi
CoreELEC:~ # systemctl stop eventlircd
CoreELEC:~ # ir-keytable -p ALL -t
Protocols changed to unknown other lirc rc-5 rc-5-sz jvc sony nec sanyo mce_kbd rc-6 sharp xmp cec irmp
Testing events. Please, press CTRL-C to abort.
^C
CoreELEC:~ # lsmod
Module Size Used by
ir_irmp_decoder 24576 0
ir_xmp_decoder 16384 0
ir_mce_kbd_decoder 16384 0
ir_sharp_decoder 16384 0
ir_sanyo_decoder 16384 0
ir_sony_decoder 16384 0
ir_jvc_decoder 16384 0
ir_rc5_decoder 16384 0
8021q 36864 0
ir_rc6_decoder 16384 0
ir_nec_decoder 16384 0
ir_lirc_codec 16384 0
lirc_dev 24576 1 ir_lirc_codec
meson_ir 16384 0
rc_core 36864 14 ir_sanyo_decoder,ir_irmp_decoder,ir_rc6_decoder ,ir_nec_decoder,ir_mce_kbd_decoder,ir_xmp_decoder,ir_sony_decoder,ir_lirc_codec, meson_ir,ir_sharp_decoder,lirc_dev,ir_jvc_decoder,ir_rc5_decoder
joydev 24576 0
wireguard 139264 0
ip6_udp_tunnel 16384 1 wireguard
udp_tunnel 16384 1 wireguard
mali_kbase 499712 0
wifi_dummy 16384 0
amvdec_vp9 126976 0
amvdec_vc1 69632 0
amvdec_real 45056 0
amvdec_ports 249856 0
v4l2_common 16384 1 amvdec_ports
videobuf2_dma_contig 20480 1 amvdec_ports
videobuf2_memops 16384 1 videobuf2_dma_contig
v4l2_mem2mem 28672 1 amvdec_ports
videobuf2_v4l2 28672 2 amvdec_ports,v4l2_mem2mem
videobuf2_core 49152 3 amvdec_ports,v4l2_mem2mem,videobuf2_v4l2
amvdec_mpeg4 65536 0
amvdec_mpeg12 110592 0
amvdec_mmpeg4 40960 0
amvdec_mmpeg12 49152 0
amvdec_mmjpeg 36864 0
amvdec_mjpeg 40960 0
amvdec_mh264 172032 0
amvdec_h265 159744 0
amvdec_h264mvc 57344 0
amvdec_h264 151552 0
amvdec_mavs 61440 0
amvdec_avs 69632 0
amvdec_avs2 212992 0
stream_input 208896 12 amvdec_h265,amvdec_mavs,amvdec_mh264,amvdec_h26 4mvc,amvdec_ports,amvdec_real,amvdec_vp9,amvdec_h264,amvdec_avs2,amvdec_mpeg12,a mvdec_avs,amvdec_mmpeg12
decoder_common 196608 18 amvdec_h265,amvdec_mavs,amvdec_mjpeg,amvdec_mh2 64,amvdec_mmpeg4,amvdec_h264mvc,amvdec_mmjpeg,amvdec_ports,amvdec_real,stream_in put,amvdec_vp9,amvdec_h264,amvdec_avs2,amvdec_mpeg12,amvdec_avs,amvdec_vc1,amvde c_mmpeg12,amvdec_mpeg4
firmware 28672 18 amvdec_h265,amvdec_mavs,amvdec_mjpeg,amvdec_mh2 64,amvdec_mmpeg4,amvdec_h264mvc,amvdec_mmjpeg,decoder_common,amvdec_real,stream_ input,amvdec_vp9,amvdec_h264,amvdec_avs2,amvdec_mpeg12,amvdec_avs,amvdec_vc1,amv dec_mmpeg12,amvdec_mpeg4
media_clock 45056 14 amvdec_h265,amvdec_mavs,amvdec_mh264,decoder_co mmon,amvdec_ports,firmware,stream_input,amvdec_vp9,amvdec_h264,amvdec_avs2,amvde c_mpeg12,amvdec_avs,amvdec_vc1,amvdec_mpeg4
amlvideodri 24576 0
videobuf_res 16384 1 amlvideodri
videobuf_core 32768 2 amlvideodri,videobuf_res
videodev 286720 6 amlvideodri,v4l2_common,amvdec_ports,videobuf2_c ore,v4l2_mem2mem,videobuf2_v4l2
media 40960 1 videodev
fbcon 61440 0
bitblit 16384 1 fbcon
softcursor 16384 1 bitblit
font 20480 1 fbcon
CoreELEC:~ # dmesg | grep lirc
[ 12.422331@3] lirc_dev: IR Remote Control driver registered, major 499
[ 12.424993@1] rc rc0: lirc_dev: driver ir-lirc-codec (meson-ir) registered at minor = 0
CoreELEC:~ # dmesg | grep meson
[ 0.000000@0] 77800000 - 78000000, 8192 KB, linux,meson-fb
[ 0.000000@0] irq_meson_gpio: 100 to 8 gpio interrupt mux initialized
[ 0.000000@0] meson_g12a_sdemmc_init: register amlogic sdemmc clk
[ 0.000000@0] meson_g12a_sdemmc_init: register amlogic sdemmc clk
[ 0.000000@0] meson_g12a_gpu_init: register meson gpu clk
[ 0.000000@0] meson_g12a_media_init: register meson media clk
[ 0.000000@0] meson_g12a_misc_init: register amlogic g12a misc clks
[ 0.000000@0] meson_g12a_misc_init: done.
[ 0.000038@0] meson_bc_timer: mclk->mux_reg =ffffff800800c190,mclk->reg =ffffff800800e194
[ 0.337770@0] clkmsr ffd18004.meson_clk_msr: failed to get msr ring reg0
[ 0.342467@0] aml_vdac_config_probe: cpu_id:4, name:meson-g12ab-vdac
[ 0.352231@0] cvbs_out: cvbsout_probe, cpu_id:4,name:meson-g12b-cvbsout
[ 0.571892@2] meson6-dwmac ff3f0000.ethernet: no reset control found
[ 0.578803@5] meson_cpufreq_init: ignor dsu clk!
[ 0.578806@5] meson_cpufreq_init: ignor dsu pre parent clk!
[ 0.578841@5] meson_cpufreq_init:don't find the node <dynamic_gp1_clk>
[ 0.579445@5] dvfs [meson_cpufreq_init] - cluster 0 freq 2016000
[ 0.579456@5] cpu cpu0: meson_cpufreq_init: CPU 0 initialized
[ 0.580871@5] meson_cpufreq_init: ignor dsu clk!
[ 0.580874@5] meson_cpufreq_init: ignor dsu pre parent clk!
[ 0.580926@5] meson_cpufreq_init:don't find the node <dynamic_gp1_clk>
[ 0.581695@5] dvfs [meson_cpufreq_init] - cluster 1 freq 2304000
[ 0.581697@5] dvfs [meson_cpufreq_init] - cluster 1 freq 2400000
[ 0.581704@5] cpu cpu2: meson_cpufreq_init: CPU 2 initialized
[ 0.583130@5] meson_uart ff803000.serial: ==uart0 reg addr = ffffff80083c7000
[ 0.583164@5] ff803000.serial: ttyS0 at MMIO 0xff803000 (irq = 25, base_baud = 1500000) is a meson_uart
[ 0.583179@5] meson_uart ff803000.serial: ttyS0 use xtal(24M) 24000000 change 0 to 115200
[ 0.689171@5] meson-fb meson-fb: assigned reserved memory node linux,meson-fb
[ 0.703493@5] meson-mmc: mmc driver version: 3.02, 2017-05-15: New Emmc Host Controller
[ 0.704922@4] meson-mmc: >>>>>>>>hostbase ffffff8008589000, dmode
[ 0.708132@4] meson-mmc: actual_clock :400000, HHI_nand: 0x80
[ 0.708135@4] meson-mmc: [meson_mmc_clk_set_rate_v3] after clock: 0x1000023c
[ 0.752119@4] meson-mmc: meson_mmc_probe() : success!
[ 0.755415@2] meson-mmc: >>>>>>>>hostbase ffffff80085a3000, dmode
[ 0.755998@2] meson-mmc: gpio_cd = 1ca
[ 0.761235@0] meson-mmc: emmc: resp_timeout,vstat:0x9dff0800,virqc:3fff
[ 0.762546@0] meson-mmc: emmc: err: wait for desc write back, bus_fsm:0x7
[ 0.769325@2] meson-mmc: meson_mmc_irq_thread_v3() 654: set 1st retry!
[ 0.775825@2] meson-mmc: retry cmd 1 the 3-th time(s)
[ 0.781853@0] meson-mmc: emmc: resp_timeout,vstat:0x9dff0800,virqc:3fff
[ 0.787416@0] meson-mmc: emmc: err: wait for desc write back, bus_fsm:0x7
[ 0.794206@2] meson-mmc: retry cmd 1 the 2-th time(s)
[ 0.800110@4] meson-mmc: meson_mmc_probe() : success!
[ 0.800218@0] meson-mmc: emmc: resp_timeout,vstat:0x9dff0800,virqc:3fff
[ 0.864291@0] meson-mmc: emmc: err: wait for desc write back, bus_fsm:0x7
[ 0.871075@2] meson-mmc: retry cmd 1 the 1-th time(s)
[ 0.871852@4] meson ts init
[ 0.872104@4] meson-tsensor ff634800.p_tsensor: More trip points than supported by this tsensor.
[ 0.872106@4] meson-tsensor ff634800.p_tsensor: 2 trip points should be configured in polling mode.
[ 0.872148@4] meson ts init
[ 0.872985@4] meson_wdt ffd0f0d0.watchdog: start watchdog
[ 0.872987@4] meson_wdt ffd0f0d0.watchdog: creat work queue for watch dog
[ 0.873113@4] meson_wdt ffd0f0d0.watchdog: AML Watchdog Timer probed done
[ 0.873650@5] meson-saradc ff809000.saradc: set delay per tick to <1ms> by default.
[ 0.873652@5] meson-saradc ff809000.saradc: set ticks per period to <1> by default.
[ 0.900266@0] meson-mmc: emmc: resp_timeout,vstat:0xa1ff2800,virqc:3fff
[ 0.905806@0] meson-mmc: emmc: err: wait for irq service, bus_fsm:0x8
[ 0.912243@2] meson-mmc: Command retried failed line:676, cmd:1
[ 1.004113@4] meson-mmc: card IN
[ 1.107631@4] meson-mmc: normal card in
[ 1.112000@5] meson_cdev probe
[ 1.112046@5] meson_cdev index: 0
[ 1.115604@5] meson_cdev index: 1
[ 1.115659@5] meson_cdev index: 2
[ 1.115707@5] meson_cdev index: 3
[ 1.115717@5] meson_cdev index: 4
[ 1.115914@5] meson_cdev probe done
[ 1.115974@5] gxbb_pm: enter meson_pm_probe!
[ 1.115981@5] pm-meson aml_pm: Can't get switch_clk81
[ 1.120634@5] gxbb_pm: meson_pm_probe done
[ 1.228162@4] meson-mmc: actual_clock :400000, HHI_nand: 0x80
[ 1.228165@4] meson-mmc: [meson_mmc_clk_set_rate_v3] after clock: 0x1000023c
[ 1.331436@4] meson-mmc: actual_clock :50000000, HHI_nand: 0x80
[ 1.331438@4] meson-mmc: [meson_mmc_clk_set_rate_v3] after clock: 0x10000254
[ 1.427640@1] meson-fb meson-fb: create ion_client ffffffc079c81480, handle=ffffffc0dc7320c0
[ 1.430462@1] meson-fb meson-fb: ion memory(0): created fb at 0x00000000e5800000, size 75 MiB
[ 1.468300@3] meson-fb meson-fb: create ion_client ffffffc079c81480, handle=ffffffc0dc007600
[ 1.471095@3] meson-fb meson-fb: ion memory(1): created fb at 0x00000000ea400000, size 1 MiB
[ 2.797460@5] meson_uart ff803000.serial: ttyS0 use xtal(24M) 24000000 change 115200 to 115200
[ 3.984516@3] meson-mmc: Error: sdio_host is NULL
[ 3.984525@3] meson-mmc: [sdio_reinit] finish
[ 12.379315@1] meson6-dwmac ff3f0000.ethernet eth0: fail to init PTP.
[ 12.419191@2] input: meson-ir as /devices/platform/ff808040.meson-ir/rc/rc0/input3
[ 12.419921@3] rc rc0: meson-ir as /devices/platform/ff808040.meson-ir/rc/rc0
[ 12.424993@1] rc rc0: lirc_dev: driver ir-lirc-codec (meson-ir) registered at minor = 0
[ 12.425041@1] meson-ir ff808040.meson-ir: AO_RTI_PIN_MUX : 0x100011
[ 12.425049@1] meson-ir ff808040.meson-ir: receiver initialized
[ 13.392338@1] meson6-dwmac ff3f0000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[ 14.693623@2] meson-fb meson-fb: create ion_client ffffffc079c81480, handle=ffffffc0d507e0c0
[ 14.693625@2] meson-fb meson-fb: ion memory(2): created fb at 0x00000000ea500000, size 1 MiB
[ 14.703546@2] meson-fb meson-fb: create ion_client ffffffc079c81480, handle=ffffffc0d507e200
[ 14.703549@2] meson-fb meson-fb: ion memory(3): created fb at 0x00000000ea600000, size 8 MiB
[ 100.069808@4] input: MCE IR Keyboard/Mouse (meson-ir) as /devices/virtual/input/input5
CoreELEC:~ # more /etc/lirc/lirc_options.conf
# These are the default options to lircd, if installed as
# /etc/lirc/lirc_options.conf. See the lircd(8) and lircmd(8)
# manpages for info on the different options.
#
# Some tools including mode2 and irw uses values such as
# driver, device, plugindir and loglevel as fallback values
# in not defined elsewhere.
[lircd]
nodaemon = False
driver = default
device = /dev/lirc0
output = /run/lirc/lircd.socket
pidfile = /run/lirc/lircd.pid
plugindir = /usr/lib/lirc/plugins
permission = 666
allow-simulate = No
repeat-max = 600
#effective-user =
#listen = [address:]port
#connect = host[:port]
#loglevel = 6
#release = true
#release_suffix = _EVUP
#logfile = ...
[lircmd]
uinput = False
nodaemon = False
# modinit is not supported in LibreELEC
# [modinit]
# code = /usr/sbin/modprobe lirc_serial
# code1 = /usr/bin/setfacl -m g:lirc:rw /dev/uinput
# code2 = ...
# [lircd-uinput]
# add-release-events = False
# release-timeout = 200
# release-suffix = _EVUP