Odroid N2+ built-in IR receiver not working [Solved]

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

That is the guide I followed (meason-ir). It says after stopping the two services to run
ir-keytable -p NEC,RC-5,RC-6,JVC,SONY -t
then press all buttons and write down all scan codes. However, there is no output.
I have an XBox One Media remote control by the way.

xbox remote works out of the box. If it really doesn’t produce any output I guess its a hardware fault. Maybe try to use official Hardkernel Ubuntu then try to rma it

Thank you for your help. Just tried the Ubuntu image and also no output. I will try to rma it.

Is your remote even working? Try pressing buttons while you watch LED with a phone through camera (you should see red blinks).

I know it sounds stupid but sometimes we focus on wrong things and forgot on basics. Like dead batteries :smiley:

1 Like

Yes good idea it could be a broken remote.

My remote is working using my Pi so it has to be the Odroid. Just sent it back today to my local reseller, I’ll give an update once my new one arrives.

Got my new Odroid today. XBox remote now works out of the box. So it was indeed a faulty hardware.
Thanks for the help.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.