LIRC - Linux Infrared Remote Control
Keywords: linux remote control, multimedia

## LIRC manpages and user-space drivers overview

LIRC contains a quite large number of tools. This chapter tries to provide an overview.

### User programs

- irsend sends data using lirc from the command line.
- irpty emulates keyboard input from a tty using a remote.
- irrecord can create a new lircd.conf for a remote which isn't available in the database.

### Daemons

- lircd is the main LIRC daemon and runs as a systemd service. It usually reads from a kernel device like /dev/lirc0 or /dev/ttyACM0 and presents the decoded data on an output socket like /var/run/lirc/lircd.
- lircrcd is a helper daemon which coordinates the LIRC state as defined in lircrc in different clients. It's managed, started and stopped by lircd.
- lircmd runs as a systemd service. It reads data from the lircd output socket and generates mouse events, so that a remote can emulate a mouse.
- irexec normally runs as a user daemon in the session. It is used to run arbitrary commands on various button presses.

### Configuration tools

- irdb-get can list, search and download lircd.conf remote configuration files from the remotes database.
- lirc-setup is a GUI tool which can create the different configuration files after some user dialogs.
- lirc-lsplugins lists the plugins and drivers which are actually available in an installation. It also provides info on the drivers, including drivers that can't be loaded.
- lirc-lsremotes can parse lircd.conf configuration files and act as a static checker. It is also used to provide dense, parseable keyword information about remote config files.
- lirc-config-tool can generate a first shot for lircrc configuration file for some applications. It can also be used to sanitize old lircd.conf files which does not use symbols from the official namespace.

### Test and debug tools

- mode2 monitors the data sent from the kernel to lircd. It displays either timing information or, if the hardware decodes the signals, the decoded values.
- irw monitors the data sent from lircd to the applications, normally in the /var/run/lirc/lircd socket.
- ircat connects to same socket as irw. However, it displays the application strings delivered to the application after mapping the lircd output using the lircrc file.
- irpipe works together with the irpipe kernel driver. It can be used to feed data to lircd which it can read on /dev/irpipe0. This device works the same way as /dev/lirc0 as seen from lircd.
- irsimsend can "send" data using a lircd.conf configuration file and store the data (pulse/space durations) in a file. This file can be used with irpipe to send the same data to lircd.
- irsimreceive can "receive" from a file e. g., created by mode2(1) or irsimrecieve(1).
- irtestcase can log the data from a remote together with the decoded symbols. It can also send the data to lircd and check that the decoded symbols matches the logged ones.

### User-space drivers

Note that many drivers lacks documentation. Use lirc-lsplugins to generate the complete list of drivers with some basic info.

- alsa-usb receives IR data over the microphone input, using the alsa drivers.
- atilibusb receives RF data with various hardware using the X10 chip.
- atwf83 receives IR data using Aureal ATWF@83 ESKY chip.
- audio sends IR data using standard audio hardware.
- default sends and receives IR data using any device supported by the kernel.
- devinput receives IR data from any remote supported by ir-keytable(1) with a minimum of configuration.
- file driver logs data (pulse durations) otherwise sent, and can also be used to "receive" simulated data from a file.
- imon-24g handles data from the iMON 2.4G DT/LT remote.
- imon handles data from various iMON remotes.
- iguanair receives and sends IR data using the IguanaIR devices.
- irtoy recieves and sends IR data using the Dangerous Prototypes IrToy device.
- srm7500atilibusb receives RF data using a Philips SRM-7500 capture device.
- tira sends and receives IR data using the Home Electronics Ira/Tira capture device.
- udp receives data over a network UDP port using a specific protocol.

### Devices and data formats

- lirc: data formats and ioctl commands for the /dev/lirc[0-9] devices.
- lircd.conf: the lircd.conf format.