Search code examples
lirc

LIRC driver option - default vs devinput


By default, the options in /etc/lirc/lirc_options.conf are as follows:

driver = devinput
device = auto

Article https://learn.pi-supply.com/make/ir-remote-control-support-on-raspbian-buster-justboom/ suggests the following:

driver = default
device = /dev/lirc0

The suggested options do work for me. However, I am wondering if the original settings are also the equivalent.

Also, is there a way to dump current lircd options? For example, which "device" is auto actually resolving to?


Solution

  • They are not the same. The devinput driver uses the kernel decoder, and feeds these decoded events to the lircd fifo. This fifo is what clients read from.

    The default driver reads raw timing data from the kernel and makes it's own decoding using lircd.conf.

    In general, if the devinput driver works it could safely be used and is a simpler setup. The default driver is useful in contexts where the kernel decoding doesn't work for example when a remote isn't supported by the kernel or there is a need to send (blast) ir signals -- the latter cannot be done using the devinput driver.

    More info: https://www.lirc.org/html/configuration-guide.html

    There is no way to dump the options as such. However, by setting the loglevel to debug and inspect the logs using for example journalctl the values are visible.

    EDIT: /dev/lirc0 and friends provides the raw, unencoded data from the kernel. The devinput driver reads from a /dev/input/eventXX device. In both cases 'auto' make lircd to use the first found usable device which works as long as there is only one remote connected.