[PLUGIN] IR Remote Controller feedback thread

Perfect! Thanks a lot! Started to work!
I even have remaped buttons to commands

Hello! For some reason, my Volumio subscription became inactive and the ability to install plugins disappeared. I can install the IR remote plug-in myself, but I don’t have the configuration files for the Microsoft MCE RC6 remote. I would be grateful if someone could give me the lircd.conf and lircrc files for MCE RC6 1039.

I checked on the lirc database, but couldn’t find it, tge only Microsoft remotes there are the xbox ones.

Edit: this might help

Thank you very much! About 2 weeks ago, after reinstalling Volumio, for some reason my subscription became inactive and all plugins from the store disappeared. Before that, I installed the IR remote plugin in the “manage plugins” section on my device. And in the settings of the installed “IR remote” plugin, it was possible to select the MCE USB profile, which worked fine. Now I have manually installed the “ir_controller_3.4.7” plugin from SSH, but unfortunately there is no MCE profile there.

with a free account, you access to all plugins in the store!

I have a registered free account in which my Volimio runs on Raspberry Pi Compute Module 4. But about 2 weeks ago, after a complete clean reinstallation of Volumio, my subscription became inactive in my account and the ability to install plugins from the store disappeared. I can install the plugin manually, but I do not have the lircd.conf and lircrc files for MCE RC6 1039.

Dear Forum members! I express my gratitude to you for your participation. I found the latest version of the IR Remote Controller plugin on my own (including what I needed) here:

Maybe it will be useful to someone in the future.

simply available in the store :wink:

May I have some questions to this plugin.
I use this at an RP4 and it works fine with an Apple remote control. Now I installed Volumio at an RP5, same settings, same plugins and the only thing which does not work ist the remote control.
I am sure it is not a hardware problem. Changed the TSOP4838 back to the RP4 and it works.
Changed the TSOP from the RP4 to RP5 and it does not work. GPIO port 18, settings and the file which will be needed is all the same at both devices. Unfortunate I am not a SW guy.
I get some error message at the RP5 like:

Registered IR keymap rc-rc6-mce
[ 311.874621] rc rc0: gpio_ir_recv as /devices/platform/ir-receiver@17/rc/rc0
[ 311.874768] rc rc0: lirc_dev: driver gpio_ir_recv registered at minor = 0, raw IR receiver, no transmitter
[ 311.874998] input: gpio_ir_recv as /devices/platform/ir-receiver@17/rc/rc0/input2
[ 373.490306] OF: ERROR: memory leak, expected refcount 1 instead of 2, of_node_get()/of_node_put() unbalanced - destroy cset entry: attach overlay node /ir-receiver@17
[ 373.490548] OF: ERROR: memory leak before free overlay changeset, /ir-receiver@17
[ 373.546567] Registered IR keymap rc-rc6-mce
[ 373.546721] rc rc0: gpio_ir_recv as /devices/platform/ir-receiver@12/rc/rc0
[ 373.546883] rc rc0: lirc_dev: driver gpio_ir_recv registered at minor = 0, raw IR receiver, no transmitter
[ 373.547106] input: gpio_ir_recv as /devices/platform/ir-receiver@12/rc/rc0/input3

May some of you have an idea?
Thank you for your help!

Having the same issue with an RPi3. It looks like the the /etc/lirc/lirc_options.conf isn’t actually getting updated. If I manually alter the config and add:

[modinit]
code = /sbin/modprobe meson-ir

Then the meson-ir module isn’t actually available. This seems to be what the plugin is trying to do anyway.

Jan 20 07:30:02 dining-room volumio[883]: info: CoreCommandRouter::executeOnPlugin: ir_controller , saveGpioOptions 
Jan 20 07:30:02 dining-room sudo[10266]:  volumio : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/dtoverlay -r 0 
Jan 20 07:30:02 dining-room sudo[10266]: pam_unix(sudo:session): session opened for user root by (uid=0) 
Jan 20 07:30:02 dining-room kernel: OF: ERROR: memory leak, expected refcount 1 instead of 2, of_node_get()/of_node_put() unbalanced - destroy cset entry: attach overlay node /ir-receiver@1a 
Jan 20 07:30:02 dining-room kernel: OF: ERROR: memory leak before free overlay changeset,  /ir-receiver@1a 
Jan 20 07:30:02 dining-room sudo[10266]: pam_unix(sudo:session): session closed for user root 
Jan 20 07:30:02 dining-room volumio[883]: info: ir_controller: Overlay gpio-ir gpio_pin=26 gpio_pull=up removed. 
Jan 20 07:30:02 dining-room sudo[10282]:  volumio : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/dtoverlay gpio-ir gpio_pin=26 gpio_pull=down 
Jan 20 07:30:02 dining-room sudo[10282]: pam_unix(sudo:session): session opened for user root by (uid=0) 
Jan 20 07:30:02 dining-room kernel: Registered IR keymap rc-rc6-mce 
Jan 20 07:30:02 dining-room kernel: rc rc0: gpio_ir_recv as /devices/platform/ir-receiver@1a/rc/rc0 
Jan 20 07:30:02 dining-room kernel: rc rc0: lirc_dev: driver gpio_ir_recv registered at minor = 0, raw IR receiver, no transmitter 
Jan 20 07:30:02 dining-room kernel: input: gpio_ir_recv as /devices/platform/ir-receiver@1a/rc/rc0/input19 
Jan 20 07:30:02 dining-room sudo[10282]: pam_unix(sudo:session): session closed for user root 
Jan 20 07:30:02 dining-room volumio[883]: info: ir_controller: Overlay gpio-ir gpio_pin=26 gpio_pull=down loaded. 
Jan 20 07:30:02 dining-room sudo[10294]:  volumio : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/systemctl restart lircd.service 
Jan 20 07:30:02 dining-room sudo[10294]: pam_unix(sudo:session): session opened for user root by (uid=0) 
Jan 20 07:30:02 dining-room lircd[10156]: lircd-0.10.1[10156] Notice: caught signal 
Jan 20 07:30:02 dining-room lircd-0.10.1[10156]: Notice: caught signal 
Jan 20 07:30:02 dining-room systemd[1]: Stopping Flexible IR remote input/output application support... 
Jan 20 07:30:02 dining-room systemd[1]: lircd.service: Main process exited, code=killed, status=15/TERM 
Jan 20 07:30:02 dining-room systemd[1]: lircd.service: Succeeded. 
Jan 20 07:30:02 dining-room systemd[1]: Stopped Flexible IR remote input/output application support. 
Jan 20 07:30:02 dining-room systemd[1]: irexec.service: Succeeded. 
Jan 20 07:30:02 dining-room systemd[1]: Starting lircd(8) initialization helper tool... 
Jan 20 07:30:02 dining-room systemd-udevd[10274]: Process '/usr/sbin/th-cmd --socket /var/run/thd.socket --passfd --udev' failed with exit code 1. 
Jan 20 07:30:02 dining-room systemd-logind[554]: Watching system buttons on /dev/input/event0 (gpio_ir_recv) 
Jan 20 07:30:03 dining-room lircd-setup[10297]: modprobe: FATAL: Module meson-ir not found in directory /lib/modules/6.1.58-v7+ 
Jan 20 07:30:03 dining-room lircd-setup[10297]: /usr/sbin/lircd-setup:37: DeprecationWarning: The SafeConfigParser class has been renamed to ConfigParser in Python 3.2. This alias will be removed in future versions. Use ConfigParser directly instead. 
Jan 20 07:30:03 dining-room lircd-setup[10297]:   parser = configparser.SafeConfigParser() 
Jan 20 07:30:03 dining-room lircd-setup[10297]: Cannot execute: /bin/sh -c /sbin/modprobe meson-ir 
Jan 20 07:30:03 dining-room lircd-setup[10297]: Command '['/bin/sh', '-c', '/sbin/modprobe meson-ir']' returned non-zero exit status 1. 
Jan 20 07:30:03 dining-room systemd[1]: lircd-setup.service: Succeeded. 
Jan 20 07:30:03 dining-room systemd[1]: Started lircd(8) initialization helper tool. 
Jan 20 07:30:03 dining-room systemd[1]: Starting Flexible IR remote input/output application support... 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Info: lircd:  Opening log, level: Info 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Version: lircd 0.10.1 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: System info: Linux dining-room 6.1.58-v7+ #1690 SMP Tue Oct 17 15:35:01 BST 2023 armv7l GNU/Linux 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Info: Initial device: /dev/lirc0 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: 'lirc' written to protocols file /sys/class/rc/rc0/protocols 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Info: Initial device: /dev/lirc0 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Info: [lirc] protocol is enabled 
Jan 20 07:30:03 dining-room lircd[10305]: lircd-0.10.1[10305] Info: lircd:  Opening log, level: Info 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: driver: default 
Jan 20 07:30:03 dining-room lircd[10305]: lircd-0.10.1[10305] Warning: Running as root 
Jan 20 07:30:03 dining-room lircd[10305]: lircd-0.10.1[10305] Info: Using remote: TEAC_RC-1091_TEAC_RC-957. 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: output: /var/run/lirc/lircd 
Jan 20 07:30:03 dining-room lircd[10305]: lircd-0.10.1[10305] Notice: /etc/lirc/lircd.conf: TEAC_RC-1091_TEAC_RC-957: Multiple definitions of: KEY_SLEEP 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: nodaemon: 1 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: plugindir: /usr/lib/arm-linux-gnueabihf/lirc/plugins 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: logfile: syslog 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: immediate-init: 0 
Jan 20 07:30:03 dining-room lircd[10305]: lircd-0.10.1[10305] Notice: lircd(default) ready, using /var/run/lirc/lircd 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: permission: 666 
Jan 20 07:30:03 dining-room systemd[1]: Started Flexible IR remote input/output application support. 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: driver-options: 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: pidfile: /var/run/lirc/lircd.pid 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: listen: 0 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: connect: (null) 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: userelease: 0 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: effective_user: (null) 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: release_suffix: _EVUP 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: allow_simulate: 0 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: repeat_max: 600 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: configfile: /etc/lirc/lircd.conf 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Options: dynamic_codes: (null) 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Current driver: default 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Driver API version: 3 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Driver  version: 0.10.0 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: Driver  info: See file:///usr/share/doc/lirc/plugindocs/default.html 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Info: lircd:  Opening log, level: Info 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Warning: Running as root 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Info: Using remote: TEAC_RC-1091_TEAC_RC-957. 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: /etc/lirc/lircd.conf: TEAC_RC-1091_TEAC_RC-957: Multiple definitions of: KEY_SLEEP 
Jan 20 07:30:03 dining-room volumio[883]: info: ir_controller: systemctl restart lircd.service succeeded. 
Jan 20 07:30:03 dining-room lircd-0.10.1[10305]: Notice: lircd(default) ready, using /var/run/lirc/lircd 

The “meson-ir” is not the module to be used on a Pi but on certain Odroid devices.

Please post the output of

cat /etc/lirc/lirc_options.conf

when the file hasn’t been modified manually.

Also post the output of

journalctl --no-tail | grep ir_controller

journalctl --no-tail | grep gpio_ir

and

journalctl --no-tail | grep lirc

after the system has booted.

BTW: What is your Volumio version? Do you have other hardware connected?

Hi, i’ve found the issue. There’s no case for “pi” to update the /etc/lircs/lircs_options.conf file. The file never gets modified unless i manually do it. I’ve added the below and now the config file gets updated. However I’m no good with nodejs so I don’t know how to populate the variables for gpioInPin and activeLow. They don’t seem to be used anywhere when writing the config, so unsure how it’s supposed to work with gpio on the pi?

        data = data.replace(new RegExp('^#? *driver *=.*$', 'm'), 'driver          = default')
          .replace(new RegExp('^#? *device *=.*$', 'm'), 'device          = /dev/lirc0');
        switch (device) {
          case 'odroidc1':
          case 'odroidc2':
          case 'odroidc4':
          case 'odroidn2':
            data = data.replace(new RegExp('^#? *\\[modinit]$', 'm'), '[modinit]')
              .replace(new RegExp('^#? *code *=.*$', 'm'), 'code = /sbin/modprobe meson-ir');
            break;
          case 'pi':
            data = data.replace(new RegExp('^#? *\\[modinit]$', 'm'), '[modinit]')
              .replace(new RegExp('^#? *code *=.*$', 'm'), '/sbin/modprobe gpio-ir-recv gpio_nr=' + gpioInPin + ' active_low=' + activeLow);
        }
      }

That’s intentional (i did write the code). The file should not (needed to be) modified for Pi - at least it wasn’t necessary in the past.

Please post the logs and information I requested.

Thanks @gvolt . I’ve resolved this now by adding the overlay config to /boot/userconfig.txt and reverting the manual change to lircd_options.conf. I’ve actually got 2x IR sensors (one built into the DAC and an external one), so added the following to get 2x lirc devices.

dtoverlay=gpio-ir,gpio_pin=25
dtoverlay=gpio-ir,gpio_pin=6

Oh, I see. The plugin is not designed for the configuration of two IR receivers.

@domb84 @gvolt - ok - then it may work to use 2 diodes and connect the 2 receivers to 1 GPIO port

receiver1 output -------->|—──┐
|
receiver2 output -------->|-------┴-------GPIO port

I only use 1. Maybe there’s some documentation I’ve missed around adding the config to the userconfig.txt file. That was my missing piece. Changing the order of the overlay means I can switch round lirc0 and lirc1 so the device I need working is at lirc0.

Hi, regarding my error I did try a few things, but so far it does not work. I am using an Apple A1294 remote control. At the RP4, same settings, same IR receiver, everything works fine.

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 = /var/run/lirc/lircd
pidfile = /var/run/lirc/lircd.pid
plugindir = /usr/lib/arm-linux-gnueabihf/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 = …
#driver-options = …

[lircmd]
uinput = False
nodaemon = False

[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

Jan 21 11:49:57 volumio-hifi volumio[1054]: info: Loading plugin “ir_controller”…
Jan 21 11:49:57 volumio-hifi volumio[1054]: info: Applying required configuration parameters for plugin ir_controller
Jan 21 11:49:58 volumio-hifi volumio[1054]: info: ir_controller: File permissions successfully set on /etc/lirc/*.
Jan 21 11:49:58 volumio-hifi volumio[1054]: error: ir_controller: Error copying configurations: Error: Missing “lircrc” and / or “lircd.conf” files.
Jan 21 11:49:58 volumio-hifi volumio[1054]: info: ir_controller: HAT already loaded /proc/device-tree/ir_receiver!

Jan 21 11:49:36 volumio-hifi kernel: rc rc0: gpio_ir_recv as /devices/platform/ir-receiver@12/rc/rc0
Jan 21 11:49:36 volumio-hifi kernel: rc rc0: lirc_dev: driver gpio_ir_recv registered at minor = 0, raw IR receiver, no transmitter
Jan 21 11:49:36 volumio-hifi kernel: input: gpio_ir_recv as /devices/platform/ir-receiver@12/rc/rc0/input0
Jan 21 11:49:37 volumio-hifi systemd-logind[639]: Watching system buttons on /dev/input/event0 (gpio_ir_recv)

Jan 21 11:49:36 volumio-hifi kernel: rc rc0: lirc_dev: driver gpio_ir_recv registered at minor = 0, raw IR receiver, no transmitter
Jan 21 11:49:37 volumio-hifi systemd[1]: Listening on lircd.socket.
Jan 21 11:49:58 volumio-hifi sudo[1231]: volumio : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/bin/chmod -R a+rwX /etc/lirc/irexec.lircrc /etc/lirc/lirc_options.conf /etc/lirc/lircd.conf /etc/lirc/lircd.conf.d /etc/lirc/lircmd.conf /etc/lirc/lircrc
Jan 21 11:49:58 volumio-hifi volumio[1054]: info: ir_controller: File permissions successfully set on /etc/lirc/*.
Jan 21 11:49:58 volumio-hifi volumio[1054]: error: ir_controller: Error copying configurations: Error: Missing “lircrc” and / or “lircd.conf” files.

Add your custom config.txt options to this file, which will be preserved during updates
dtoverlay=gpio-ir

Thank you for your help!

If all works as intended there shoud be no need to modify “/boot/userconfig.txt” but the necessary overlay should be loaded on the plugin’s start.

If this should still not work (i.e. with no manually added overlay to “/boot/userconfig.txt”) I can only ask again to provide the information requested in post #372.

1 Like

@Heuboda Please post the output of

ls -al /data/plugins/system_hardware/ir_controller/configurations/