.\" Copyright (c) 2015-2016, Alec Leamas
.\" Copyright (c) 2018, Sean Young <sean@mess.org>
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" <http://www.gnu.org/licenses/>.
.\" %%%LICENSE_END
.TH LIRC 4 2019-03-06 "Linux" "Linux Programmer's Manual"
.SH NAME
lirc \- lirc devices
.SH DESCRIPTION
The
.I /dev/lirc*
character devices provide a low-level
bidirectional interface to infra-red (IR) remotes.
Most of these devices can receive, and some can send.
When receiving or sending data, the driver works in two different modes
depending on the underlying hardware.
.PP
Some hardware (typically TV-cards) decodes the IR signal internally
and provides decoded button presses as scancode values.
Drivers for this kind of hardware work in
.BR LIRC_MODE_SCANCODE
mode.
Such hardware usually does not support sending IR signals.
Furthermore, such hardware can only decode a limited set of IR protocols,
usually only the protocol of the specific remote which is
bundled with, for example, a TV-card.
.PP
Other hardware provides a stream of pulse/space durations.
Such drivers work in
.BR LIRC_MODE_MODE2
mode.
Sometimes, this kind of hardware also supports
sending IR data.
Such hardware can be used with (almost) any kind of remote.
This type of hardware can also be used in
.BR LIRC_MODE_SCANCODE
mode, in which case the kernel IR decoders will decode the IR.
These decoders can be written in extended BPF (see
.BR bpf (2))
and attached to the
.B lirc
device.
.PP
The \fBLIRC_GET_FEATURES\fR ioctl (see below) allows probing for whether
receiving and sending is supported, and in which modes, amongst other
features.
.\"
.SS Reading input with the LIRC_MODE_MODE2 mode
In the \fBLIRC_MODE_MODE2 mode\fR, the data returned by
.BR read (2)
provides 32-bit values representing a space or a pulse duration.
The time of the duration (microseconds) is encoded in the lower 24 bits.
The upper 8 bits indicate the type of package:
.TP 4
.BR LIRC_MODE2_SPACE
Value reflects a space duration (microseconds).
.TP 4
.BR LIRC_MODE2_PULSE
Value reflects a pulse duration (microseconds).
.TP 4
.BR LIRC_MODE2_FREQUENCY
Value reflects a frequency (Hz); see the
.B LIRC_SET_MEASURE_CARRIER_MODE
ioctl.
.TP 4
.BR LIRC_MODE2_TIMEOUT
Value reflects a space duration (microseconds).
The package reflects a timeout; see the
.B LIRC_SET_REC_TIMEOUT_REPORTS
ioctl.
.\"
.SS Reading input with the LIRC_MODE_SCANCODE mode
In the \fBLIRC_MODE_SCANCODE\fR
mode, the data returned by
.BR read (2)
reflects decoded button presses, in the struct \fIlirc_scancode\fR.
The scancode is stored in the \fIscancode\fR field, and the IR protocol
is stored in \fIrc_proto\fR.
This field has one the values of the \fIenum rc_proto\fR.
.\"
.SS Writing output with the LIRC_MODE_PULSE mode
The data written to the character device using
.BR write (2)
is a pulse/space sequence of integer values.
Pulses and spaces are only marked implicitly by their position.
The data must start and end with a pulse, thus it must always include
an odd number of samples.
The
.BR write (2)
function blocks until the data has been transmitted by the
hardware.
If more data is provided than the hardware can send, the
.BR write (2)
call fails with the error
.BR EINVAL .
.SS Writing output with the LIRC_MODE_SCANCODE mode
The data written to the character devices must be a single struct
\fIlirc_scancode\fR.
The \fIscancode\fR and \fIrc_proto\fR fields must
filled in, all other fields must be 0.
The kernel IR encoders will
convert the scancode to pulses and spaces.
The protocol or scancode is invalid, or the
.B lirc
device cannot transmit.
.SH IOCTL COMMANDS
The LIRC device's ioctl definition is bound by the ioctl function
definition of
.IR "struct file_operations" ,
leaving us with an
.IR "unsigned int"
for the ioctl command and an
.IR "unsigned long"
for the argument.
For the purposes of ioctl portability across 32-bit and 64-bit architectures,
these values are capped to their 32-bit sizes.
.PP
.nf
#include <linux/lirc.h>    /* But see BUGS */
int ioctl(int fd, int cmd, ...);
.fi
.PP
The following ioctls can be used to probe or change specific
.B lirc
hardware settings.
Many require a third argument, usually an
.IR int ,
referred to below as
.IR val .
.\"
.SS Always Supported Commands
\fI/dev/lirc*\fR devices always support the following commands:
.TP 4
.BR LIRC_GET_FEATURES " (\fIvoid\fP)"
Returns a bit mask of combined features bits; see FEATURES.
.PP
If a device returns an error code for
.BR LIRC_GET_FEATURES ,
it is safe to assume it is not a
.B lirc
device.
.\"
.SS Optional Commands
Some
.B lirc
devices support the commands listed below.
Unless otherwise stated, these fail with the error \fBENOTTY\fR if the
operation isn't supported, or with the error \fBEINVAL\fR if the operation
failed, or invalid arguments were provided.
If a driver does not announce support of certain features, invoking
the corresponding ioctls will fail with the error
.BR ENOTTY .
.TP
.BR LIRC_GET_REC_MODE " (\fIvoid\fP)"
If the
.B lirc
device has no receiver, this operation fails with the error
.BR ENOTTY .
Otherwise, it returns the receive mode, which will be one of:
.RS
.TP
.BR LIRC_MODE_MODE2
The driver returns a sequence of pulse/space durations.
.TP
.BR LIRC_MODE_SCANCODE
The driver returns struct
.I lirc_scancode
values, each of which represents
a decoded button press.
.RE
.TP
.BR LIRC_SET_REC_MODE " (\fIint\fP)"
Set the receive mode.
.IR val
is either
.BR LIRC_MODE_SCANCODE
or
.BR LIRC_MODE_MODE2 .
If the
.B lirc
device has no receiver, this operation fails with the error
.B ENOTTY.
.TP
.BR LIRC_GET_SEND_MODE " (\fIvoid\fP)"
Return the send mode.
.BR LIRC_MODE_PULSE
or
.BR LIRC_MODE_SCANCODE
is supported.
If the
.B lirc
device cannot send, this operation fails with the error
.B ENOTTY.
.TP
.BR LIRC_SET_SEND_MODE " (\fIint\fP)"
Set the send mode.
.IR val
is either
.BR LIRC_MODE_SCANCODE
or
.BR LIRC_MODE_PULSE .
If the
.B lirc
device cannot send, this operation fails with the error
.BR ENOTTY .
.TP
.BR LIRC_SET_SEND_CARRIER " (\fIint\fP)"
Set the modulation frequency.
The argument is the frequency (Hz).
.TP
.BR LIRC_SET_SEND_DUTY_CYCLE " (\fIint\fP)"
Set the carrier duty cycle.
.I val
is a number in the range [0,100] which
describes the pulse width as a percentage of the total cycle.
Currently, no special meaning is defined for 0 or 100, but the values
are reserved for future use.
.IP
.TP
.BR LIRC_GET_MIN_TIMEOUT " (\fIvoid\fP)", " "\
LIRC_GET_MAX_TIMEOUT " (\fIvoid\fP)"
Some devices have internal timers that can be used to detect when
there has been no IR activity for a long time.
This can help
.BR lircd (8)
in detecting that an IR signal is finished and can speed up the
decoding process.
These operations
return integer values with the minimum/maximum timeout that can be
set (microseconds).
Some devices have a fixed timeout.
For such drivers,
.BR LIRC_GET_MIN_TIMEOUT
and
.BR LIRC_GET_MAX_TIMEOUT
will fail with the error
.BR ENOTTY .
.TP
.BR LIRC_SET_REC_TIMEOUT " (\fIint\fP)"
Set the integer value for IR inactivity timeout (microseconds).
To be accepted, the value must be within the limits defined by
.BR LIRC_GET_MIN_TIMEOUT
and
.BR LIRC_GET_MAX_TIMEOUT .
A value of 0 (if supported by the hardware) disables all hardware
timeouts and data should be reported as soon as possible.
If the exact value cannot be set, then the next possible value
.I greater
than the given value should be set.
.TP
.BR LIRC_GET_REC_TIMEOUT " (\fIvoid\fP)"
Return the current inactivity timeout (microseconds).
Available since Linux 4.18.
.TP
.BR LIRC_SET_REC_TIMEOUT_REPORTS " (\fIint\fP)"
Enable
.RI ( val
is 1) or disable
.RI ( val
is 0) timeout packages in
.BR LIRC_MODE_MODE2 .
The behavior of this operation has varied across kernel versions:
.RS
.IP * 3
Since Linux 4.16: each time the
.B lirc device is opened,
timeout reports are by default enabled for the resulting file descriptor.
The
.B LIRC_SET_REC_TIMEOUT
operation can be used to disable (and, if desired, to later re-enable)
the timeout on the file descriptor.
.IP *
In Linux 4.15 and earlier:
timeout reports are disabled by default, and enabling them (via
.BR LIRC_SET_REC_TIMEOUT )
on any file descriptor associated with the
.B lirc
device has the effect of enabling timeouts for all file descriptors
referring to that device (until timeouts are disabled again).
.RE
.TP
.BR LIRC_SET_REC_CARRIER " (\fIint\fP)"
Set the upper bound of the receive carrier frequency (Hz).
See
.BR LIRC_SET_REC_CARRIER_RANGE .
.TP
.BR LIRC_SET_REC_CARRIER_RANGE " (\fIint\fP)"
Sets the lower bound of the receive carrier frequency (Hz).
For this to take affect, first set the lower bound using the
.BR LIRC_SET_REC_CARRIER_RANGE
ioctl, and then the upper bound using the
.BR LIRC_SET_REC_CARRIER
ioctl.
.TP
.BR LIRC_SET_MEASURE_CARRIER_MODE " (\fIint\fP)"
Enable
.RI ( val
is 1) or disable
.RI ( val
is 0) the measure mode.
If enabled, from the next key press on, the driver will send
.BR LIRC_MODE2_FREQUENCY
packets.
By default, this should be turned off.
.TP
.BR LIRC_GET_REC_RESOLUTION " (\fIvoid\fP)"
Return the driver resolution (microseconds).
.TP
.BR LIRC_SET_TRANSMITTER_MASK " (\fIint\fP)"
Enable the set of transmitters specified in
.IR val ,
which contains a bit mask where each enabled transmitter is a 1.
The first transmitter is encoded by the least significant bit, and so on.
When an invalid bit mask is given, for example a bit is set even
though the device does not have so many transmitters,
this operation returns the
number of available transmitters and does nothing otherwise.
.TP
.BR LIRC_SET_WIDEBAND_RECEIVER " (\fIint\fP)"
Some devices are equipped with a special wide band receiver which is
intended to be used to learn the output of an existing remote.
This ioctl can be used to enable
.RI ( val
equals 1) or disable
.RI ( val
equals 0) this functionality.
This might be useful for devices that otherwise have narrow band
receivers that prevent them to be used with certain remotes.
Wide band receivers may also be more precise.
On the other hand, their disadvantage usually is reduced range of
reception.
.IP
Note: wide band receiver may be implicitly enabled if you enable
carrier reports.
In that case, it will be disabled as soon as you disable carrier reports.
Trying to disable a wide band receiver while carrier reports are active
will do nothing.
.\"
.SH FEATURES
the
.BR LIRC_GET_FEATURES
ioctl returns a bit mask describing features of the driver.
The following bits may be returned in the mask:
.TP
.BR LIRC_CAN_REC_MODE2
The driver is capable of receiving using
.BR LIRC_MODE_MODE2 .
.TP
.BR LIRC_CAN_REC_SCANCODE
The driver is capable of receiving using
.BR LIRC_MODE_SCANCODE .
.TP
.BR LIRC_CAN_SET_SEND_CARRIER
The driver supports changing the modulation frequency using
.BR LIRC_SET_SEND_CARRIER .
.TP
.BR LIRC_CAN_SET_SEND_DUTY_CYCLE
The driver supports changing the duty cycle using
.BR LIRC_SET_SEND_DUTY_CYCLE .
.TP
.BR LIRC_CAN_SET_TRANSMITTER_MASK
The driver supports changing the active transmitter(s) using
.BR LIRC_SET_TRANSMITTER_MASK .
.TP
.BR LIRC_CAN_SET_REC_CARRIER
The driver supports setting the receive carrier frequency using
.BR LIRC_SET_REC_CARRIER .
Any
.B lirc
device since the drivers were merged in kernel release 2.6.36
must have
.BR LIRC_CAN_SET_REC_CARRIER_RANGE
set if
.BR LIRC_CAN_SET_REC_CARRIER
feature is set.
.TP
.BR LIRC_CAN_SET_REC_CARRIER_RANGE
The driver supports
.BR LIRC_SET_REC_CARRIER_RANGE .
The lower bound of the carrier must first be set using the
.BR LIRC_SET_REC_CARRIER_RANGE
ioctl, before using the
.BR LIRC_SET_REC_CARRIER
ioctl to set the upper bound.
.TP
.BR LIRC_CAN_GET_REC_RESOLUTION
The driver supports
.BR LIRC_GET_REC_RESOLUTION .
.TP
.BR LIRC_CAN_SET_REC_TIMEOUT
The driver supports
.BR LIRC_SET_REC_TIMEOUT .
.TP
.BR LIRC_CAN_MEASURE_CARRIER
The driver supports measuring of the modulation frequency using
.BR LIRC_SET_MEASURE_CARRIER_MODE .
.TP
.BR LIRC_CAN_USE_WIDEBAND_RECEIVER
The driver supports learning mode using
.BR LIRC_SET_WIDEBAND_RECEIVER .
.TP
.BR LIRC_CAN_SEND_PULSE
The driver supports sending using
.BR LIRC_MODE_PULSE
or
.BR LIRC_MODE_SCANCODE
.\"
.SH BUGS
Using these devices requires the kernel source header file
.IR lirc.h .
This file is not available before kernel release 4.6.
Users of older kernels could use the file bundled in
.UR http://www.lirc.org
.UE .
.\"
.SH SEE ALSO
\fBir\-ctl\fP(1), \fBlircd\fP(8),\ \fBbpf\fP(2)
.PP
https://www.kernel.org/doc/html/latest/media/uapi/rc/lirc-dev.html
