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.
- lircd-uinput connects to the lircd output socket and forwards the decoded button presses to the kernel uinput device. This makes the lirc events available to other applications in the same way as events from other input devices.
- lircd-setup is a small, one-shot program which runs commands as root before starting lircd .

### 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.
- lirc-make-devinput can generate a site-specific devinput.lircd.conf configuration file.

### 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.
- irtext2udp converts regular, printable timing data to the binary format used by the udp driver

### 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.
- ftdi and ftdix supports hardware based on the FTDI chip.
- girs driver receives and sends IR data using a serially connected remote device compliant with the Girs standard (for example for usage with the Arduino).
- 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.

There is also External plugins documentation.

### Devices and data formats

- lirc(4) data formats and ioctl commands for the /dev/lirc[0-9] devices. This manpage has been upstreamed to the linux manpages project.
- lircd.conf: the lircd.conf format.