Provided by: lirc_0.10.1-6.3ubuntu1_amd64 bug

NAME

       lircd - Decode infrared signals and provide them on a socket.

SYNOPSIS

       lircd [options] [config file]

DESCRIPTION

       The  main  task  of  lircd  is to decode the infrared signals and provide an uniform interface for client
       applications. Clients can connect to lircd through a Unix domain socket, by default  /var/run/lirc/lircd.
       Using this socket they will get the infrared codes received by lircd and they can send commands to lircd.

ARGUMENTS

       config file
           The  configuration  file,  by  default  /etc/lirc/lircd.conf.  A  relative  path  is interpreted from
           /etc/lirc. The default configuration file includes all files in /etc/lircd.conf.d.

           Each remote which should be decoded by lircd usually requires that a specific file is used e. g.,  by
           copying  it to /etc/lirc/lirc.conf.d/.  The format is described in lircd.conf(5). Configuration files
           could be found using irdb-get(1) or lirc-setup(1). It's also possible to generate a config file using
           irrecord(1)

OPTIONS

       Common options:

       -d, --device <device>
           Select the character device which lircd should read from. The default is currently /dev/lirc0 on most
           systems.

           Some drivers, including the default devinput driver, supports the auto device which picks  the  first
           usable device found for the actual driver.

           When  using  the  devinput  driver name=STRING or phys=STRING can be used to select the device; lircd
           will look in /dev/input to find a device with a matching description.  This is  useful  in  case  the
           device  name  isn't  fixed.  STRING  may  contain  the  '*' and '?' wildcards and '\' to mark them as
           literal.  Use mode2 --driver devinput --list-devices to list the actual devices.

       -H, --driver <driver>
           The driver to use.  Using --driver help lists all available drivers, see DRIVER LOADING below.

       -h, --help
           Displays short help message.

       Other options:

       -a, --allow-simulate
           Enable the SIMULATE command which can be issued using irsend(1) or the client API.  This  will  allow
           simulating  arbitrary  IR  events from the command line. Use this option with caution because it will
           give all users with access to the lircd socket wide control over  the  system.   E.g.,  if  you  have
           configured  your system to shut down by a button press on your remote control, everybody will be able
           to shut down your system from the command line.

       -c, --connect [host[:port]][,[host[:port]]]
           Connects to other lircd servers that provide a network socket at the given host and port number  (see
           --listen). The number of such connections is currently limited to 100.  The connecting lircd instance
           will receive IR events from the lircd instance it connects to. To connect to  multiple  servers,  add
           them as a comma separated list.

       -e, --effective-user <uid>
           If started as user root, lircd drops it privileges and runs as user <uid> after opening files etc.

       -i, --immediate-init
           Lircd normally initializes the driver when the first client connects. If this option is selected, the
           driver is instead initialized immediately at start.

       -A, --driver-options key:value[|key:value...]
           Set one or more options for the driver. The argument is a list of key:value pairs delimited  by  '|'.
           The  key can not contain spaces, but such are allowed in the value part. Certain characters including
           '#' and ';' are used as comment markers in the config file and are not allowed anywhere.

       -Y, --dynamic-codes  [EXPERIMENTAL]
           Allows use of codes which have been decoded for one remote but are not defined  in  lircd.conf.   New
           codes  are  dynamically created  with a default name. This feature is experimental and subject to all
           sorts of changes. It has not ben tested thoroughly.

       -l, --listen [[address:]port]]
           Let lircd listen for network connections on the given address/port. The default address  is  0.0.0.0,
           which  means  that connections on all network interfaces will be accepted.  The address must be given
           in dotted numerical form.  Port defaults to  8765.  The listening lircd instance  will  send  all  IR
           events to the connecting lircd instances without any security checks.

           On non-glibc platforms the address:port argument is mandatory, but can be given as an empty string e.
           g. --listen= which then defaults to 0.0.0.0:8765.

       -L, --logfile <logfile path>
           Select the lircd daemon log file. logfile is either the string  'syslog'  indicating  that  syslog(1)
           should be used or a log file path. The default is to use syslog.

       -D, --loglevel [level]
           Determine  the amount of logging information. level can be a symbolic syslog level: 'error','warning,
           'info', 'notice' or  'debug'.  lircd also defines  three  additional  levels  'trace',  'trace1'  and
           'trace2'  which  gives  even  more  messages ('trace2' bringing the most).  However, in the log these
           messages are marked as 'debug'.

           On non-glibc platforms the level argument is mandatory, but can be given as an  empty  string  e.  g.
           --loglevel= which then defaults to debug.

           The level can also be an integer in the range 3 (almost no messages) to 10.

       -O, --options-file <path>
           File  containing  default  values  for  all  options.  A  relative  path  is interpreted from current
           directory. See [FILES] below.

       -o, --output <output socket>
           Select Unix domain socket, which lircd will write remote key codes  to.   The  default  currently  is
           /var/run/lirc/lircd.

       -p, --permission <perm>
           Gives  the  file permission of the output socket if it has to be created in octal representation. See
           chmod(1).  If no --permission option is given when the socket is initially created the default is  to
           give  all  users  read  and  write  permissions (0666 in octal representation). If the socket already
           exists this option has no effect.

       -p, --pidfile <path>
           Select the lircd daemon pid file, defaults to /var/run/lirc/lircd.pid.

       -U --plugindir <path>
           Sets the directory from which lircd loads it's userspace drivers. These are *.so  files,  by  default
           found as described under DRIVER LOADING. The argument is a :-separated search path.

       -r, --release [suffix]
           This  option  is  deprecated  and  will  be removed in an upcoming release. See lircd-uinput(8) for a
           replacement.

           Enables automatic generation of release events for each button press.  lircd will  append  the  given
           suffix  to  the  button  name  for  each  release  event. If no suffix is given the default suffix is
           '_EVUP'.

           Note the suffix _UP, which was used by lircd prior to 0.10.0, is used by the linux kernel  for  other
           purposes since 4.7.

       -R, --repeat-max <limit>
           Sets  an  upper  limit  to the number of repeats when sending a signal. The current default is 600. A
           SEND_START request will repeat the signal this many times. Also,  if  the  number  of  repeats  in  a
           SEND_ONCE request exceeds this number, it will be replaced by this number.

SOCKET BROADCAST MESSAGES FORMAT

       When  decoding  a  button  press or receiving a SIGHUP signal lircd.conf lircd broadcasts messages to all
       connected clients.

       For each decoded button press a package is made available on the socket. This is printable data formatted
       as:
               <code> <repeat count> <button name> <remote control name>

       e.g.,
               0000000000f40bf0 00 KEY_UP ANIMAX

       The fields are:

       code
           A  16  hexadecimal digits number encoding of the IR signal.  It's usage in applications is deprecated
           and it should be ignored.

       repeat count
           shows how long the user has been holding down a button. The counter will start  at  0  and  increment
           each time a new IR signal has been received.

       button name
           is the name of a key defined in the lircd.conf file.

       remote control name
           is the mandatory name attribute in the lircd.conf config file.

       These  packets  are  broadcasted  to  all  clients. The only other situation when lircd broadcasts to all
       clients is when it receives the SIGHUP signal and successfully re-reads its config  file.  Then  it  will
       send  a  SIGHUP  packet  to its clients indicating that its configuration might have changed.  The sighup
       packet is three lines

               BEGIN
               SIGHUP
               END

SOCKET COMMAND INTERFACE

       Applications can also send commands to lircd over the socket interface. The most common task  is  sending
       data,  but  there  are  also  other commands.  Each command is a single printable line, terminated with a
       newline. For each command, lircd replies with a reply package.

       Supported commands:

       SEND_ONCE <remote control> <button name> [repeats]
           Tell lircd to send the IR signal associated with the given remote control and button name,  and  then
           repeat  it  repeats  times.  repeats is a decimal number between 0 and repeat_max.  The latter can be
           given as a --repeat-max command line argument to lircd, and defaults  to  600.   If  repeats  is  not
           specified  or is less than the minimum number of repeats for the selected remote control, the minimum
           value will be used.

       SEND_START <remote control name> <button name>
           Tell lircd to start repeating the given button until it receives a SEND_STOP command.   However,  the
           number  of  repeats  is  limited  to repeat_max. lircd won't accept any new send commands while it is
           repeating.

       SEND_STOP <remote control name> <button name>
           Tell lircd to abort a SEND_START command.

       LIST [remote control]
           Without arguments lircd replies with a list of all defined remote controls.  Given a  remote  control
           argument, lircd replies with a list of all keys defined in the given remote.

       SET_INPUTLOG [path]
           Given a path, lircd will start logging all received data on that file.  The log is printable lines as
           defined in mode2(1) describing pulse/space durations.  Without a path, current logfile is closed  and
           the logging is stopped.

       DRV_OPTION key value
           Make  lircd invoke the drvctl_func(DRVCTL_SET_OPTION, option) with option being made up by the parsed
           key and value.  The return package reflects the outcome of the drvctl_func call.

       SIMULATE key data
           Given key data, instructs lircd to send this to all clients i.  e., to simulate  that  this  key  has
           been  decoded.   The  key data must be formatted exactly as the packet described in [SOCKET BROADCAST
           MESSAGES FORMAT], notably is the number of digits in code and repeat count hardcoded.   This  command
           is only accepted if the --allow-simulate command line option is active.

       SET_TRANSMITTERS transmitter mask
           Make  lircd  invoke  the  drvctl_func(LIRC_SET_TRANSMITTER_MASK,  &channels),  where  channels is the
           decoded value of transmitter mask. See lirc(4) for more information.

       VERSION
           Tell lircd to send a version packet response.

       The protocol guarantees that broadcasted messages won't interfere with reply packets. But broadcasts  may
       appear at any point between packets.  The only exception are SIGHUP packages. These may appear just after
       you have sent a command to lircd, so you have to make sure you don't confuse them with replies.

       The format of the reply packet is

         BEGIN
         <command>
         [SUCCESS|ERROR]
         [DATA
         n
         n lines of data]
         END

       If the command was successful, data is only sent for the commands that return some information. Note that
       a packet containing 0 lines of data can be a valid reply.

RUNNING AS REGULAR USER

       Traditionally  lircd  has  been running as root since accessing kernel devices like /dev/lirc0 by default
       requires root privileges.  However, running a long-running service like this is a major security issue.

       The lirc distribution contains example udev rules which makes /dev/lirc[0-9] ,  USB  and  serial  devices
       accessible  by the lirc user.  Using these rules, it is possible to run lircd as a regular user and group
       such as lirc.

FILES

       /etc/lirc/lircd.conf
           Main config file, see lircd.conf(5).

       /etc/lirc/lirc_options.conf
           The options file. lircd handles the values under the [lircd] section in this file. The  location  can
           be  changed  using  the  -O/--options-file  command-line  option  or  using  the environment variable
           LIRC_OPTIONS_PATH.  The values here are used as defaults for any option not present on command line.

ENVIRONMENT

       LIRC_OPTIONS_PATH
           Options file path, see FILES.

       LIRC_PLUGINDIR
           Plugin load path, se DRIVER LOADING.

       LIRC_DEBUG_OPTIONS
           If set, enables debugging in early stages when the --debug option is yet not parsed.

DRIVER LOADING

       Drivers are loaded dynamically. This is done  from  a  traditional  *ux  ´:´-separated  path  where  each
       component in the path is searched (leading part first, trailing last).

       The path used for this is determined by (falling priority):

       - The --plugindir option.

       - The 'plugindir' entry in  the [lircd] section of the lirc_options.conf file.

       - The environment variable LIRC_PLUGINDIR.

       - A hardcoded default (/usr/lib/x86_64-linux-gnu/lirc/plugins).

SIGNALS

       HUP On  receiving SIGHUP lircd re-reads the lircd.conf configuration file (but not lirc_options.conf) and
           adjusts itself if the file has changed.

       USR1
           On receiving SIGUSR1 lircd makes a clean exit.

DAEMONS

       lircd  is a daemon.  It should be started in some system-dependent init script.  By default,  lirc  ships
       with systemd files enabling user to control the lircd service.

SEE ALSO

       irdb-get(1)
       lirc-setup(1)
       lircd.conf(5)
       irrecord(1)
       lirc(4)
       lircd-uinput(8)