lirc
mysteriously stopped working when I upgraded to kernel 4.19.66-v7+ on my Raspberry Pi a while back. After an initial battle that lead to no success, I let it collect dust until this fateful night when she returned to her full functionality.
tl;dr
The kernel module lirc_rpi
has been replaced with two modules: gpio_ir_recv
(for receiving) and gpio_ir_tx
(for sending, naturally). There are handful of configurations that need to point to and load the new modules.
My setup
- GPIO 22 for IR transmission.
- lircd 0.9.4c
- kernel 4.19.66-v7+
- Raspbian GNU/Linux 9 (stretch)
/boot/config.txt
Replace lirc-rpi with gpio-ir-tx. Take note that gpio_out_pin is now gpio_pin (see /boot/overlays/README
for more info [search for gpio-ir-tx]).
dtoverlay=lirc-rpi,gpio_out_pin=22
dtoverlay=gpio-ir-tx,gpio_pin=22
/etc/lirc/hardware.conf
Replace loading of lirc_rpi with gpio_ir_tx.
MODULES="lirc_rpi"
MODULES="gpio_ir_tx"
/etc/modules
Remove lirc_* in /etc/modules (or comment out).
lirc_dev
lirc_rpi gpio_out_pin=22
/etc/lirc/lircd.conf
I had my remote configurations in lircd.conf and the upgrade to kernel 4.19. These were blown away, unfortunately. Fortunately, I had copies elsewhere. The new lircd.conf
contains a single line that loads in all .conf
files in /etc/lirc/lircd.conf.d/
. I copied my remote conf files here and called it good (just in case another update blows things away =]
/etc/lirc/lirc.conf.d/devinput.lircd.conf
This file was unnecessary for my setup so I renamed it so it would not be loaded. See /etc/lirc/lircd.conf.d/README.conf.d
for more info.
mv devinput.lircd.conf devinput.lircd.conf.dist
Extra Help:
- If you need IR receive functionality, the
dtoverlay
will be gpio-ir
(and not gpio-ir-recv
, like the module). See /boot/overlays/README
for more information. Also see modinfo gpio-ir-recv
and modinfo gpio-ir-tx
for more info.