ir-ctl - a swiss-knife tool to handle raw IR and to set lirc options
ir-ctl [
OPTION]...
ir-ctl [
OPTION]...
--features
ir-ctl [
OPTION]...
--send [
file to send]
ir-ctl [
OPTION]...
--scancode [
protocol and scancode to
send]
ir-ctl [
OPTION]...
--keycode [
keycode to send]
ir-ctl [
OPTION]...
--receive [
save to file]
ir-ctl is a tool that allows one to list the features of a lirc device, set its
options, receive raw IR, and send IR.
IR can be sent as the keycode of a keymap, or using a scancode, or using raw IR.
Note: You need to have read or write permissions on the /dev/lirc device for
options to work.
-
-d, --device=DEV
- lirc device to control, /dev/lirc0 by default
-
-f, --features
- List the features of the lirc device.
-
-r, --receive[=FILE]
- Receive IR and print to standard output if no file is
specified, else save to the filename.
-
-s, --send=FILE
- Send IR in text file. It must be in the format described
below. If this option is specified multiple times, send all files in-order
with a 125ms gap between them. The gap length can be modified with
--gap.
-
-S, --scancode=PROTOCOL:SCANCODE
- Send the IR scancode in the protocol specified. The
protocol must one of the protocols listed below, followed by a colon and
the scancode number. If this option is specified multiple times, send all
scancodes in-order with a 125ms gap between them. The gap length can be
modified with --gap.
-
-K, --keycode=KEYCODE
- Send the KEYCODE from the keymap which must be
specified with --keymap. If this option is specified multiple
times, send all keycodes in-order with a 125ms gap between them. The gap
length can be modified with --gap.
-
-k, --keymap=KEYMAP
- The rc keymap file in toml format. The format is described
in the rc_keymap(5) man page. This file is used to select the
KEYCODE from.
-
-1, --oneshot
- When receiving, stop receiving after the first message,
i.e. after a space or timeout of more than 19ms is received.
- --mode2
- When receiving, output IR in mode2 format. One line per
space or pulse.
-
-w, --wideband
- Use the wideband receiver if available on the hardware.
This is also known as learning mode. The measurements should be more
precise and any carrier frequency should be accepted.
-
-n, --narrowband
- Switches back to the normal, narrowband receiver if the
wideband receiver was enabled.
-
-R, --carrier-range=RANGE
- Set the accepted carrier range for the narrowband receiver.
It should be specified in the form 30000-50000.
-
-m, --measure-carrier
- If the hardware supports it, report what the carrier
frequency is on receiving. You will get the keyword carrier
followed by the frequency. This might use the wideband receiver although
this is hardware specific.
-
-M, --no-measure-carrier
- Disable reporting of the carrier frequency. This should
make it possible to use the narrowband receiver. This is the default.
-
-t, --timeout=TIMEOUT
- Set the length of a space at which the receiver goes idle,
specified in microseconds.
-
-c, --carrier=CARRIER
- Sets the send carrier frequency.
-
-D, --duty-cycle=DUTY
- Set the duty cycle for sending in percent if the hardware
support it.
-
-e, --emitters=EMITTERS
- Comma separated list of emitters to use for sending. The
first emitter is number 1. Some devices only support enabling one emitter
(the winbond-cir driver).
-
-g, --gap=GAP
- Set the gap between scancodes or the gap between files when
multiple files are specified on the command line. The default is 125000
microseconds.
-
-?, --help
- Prints the help message
- --usage
- Give a short usage message
-
-v, --verbose
- Verbose output; this prints the IR before sending.
-
-V, --version
- print the v4l2-utils version
When sending or receiving raw IR, two formats can be used. The first is a list
of integers representing pulse and space values. A pulse value can be prefixed
with + and a space with -, but this is optional. The rc-5 scancode 0x1e01 is
encoded so:
+889 -889 +1778 -1778 +889 -889 +889 -889 +889 -889 +1778 -889 +889 -889 +889
-889 +889 -889 +889 -889 +889 -1778 +889
The other format mimics the mode2 tool. This produces one line per space or
pulse. For receiving it can selected by specifying
--mode2. Here is the
same message as above, now encoded in mode2:
carrier 36000
pulse 940
space 860
pulse 1790
space 1750
pulse 880
space 880
pulse 900
space 890
pulse 870
space 900
pulse 1750
space 900
pulse 890
space 910
pulse 840
space 920
pulse 870
space 920
pulse 840
space 920
pulse 870
space 1810
pulse 840
Note that in this format, the carrier can also be specified. This can only by
done with a separate
--carrier=38000 command line option with the first
format.
Rather than specifying just the raw IR, in this format you can also specify the
scancode and protocol you want to send. This will also automatically set the
correct carrier. The above can be written as:
scancode rc5:0x1e01
If multiple scancodes are specified in a file, a gap is inserted between
scancodes if there is no space between them (see
--gap). One file can
only have one carrier frequency, so this might cause problems if different
protocols are specified in one file if they use different carrier frequencies.
Note that there are device-specific limits of how much IR can be sent at a time.
This can be both the length of the IR and the number of different lengths of
space and pulse.
A scancode with protocol can be specified on the command line or in the pulse
and space file. The following protocols are supported:
rc5,
rc5x_20,
rc5_sz,
jvc,
sony12,
sony15,
sony20,
nec,
necx,
nec32,
sanyo,
rc6_0,
rc6_6a_20,
rc6_6a_24,
rc6_6a_32,
rc6_mce,
sharp,
imon,
rc_mm_12,
rc_mm_24,
rc_mm_32. If the scancode starts with 0x it will be
interpreted as a hexadecimal number, and if it starts with 0 it will be
interpreted as an octal number.
Most IR receivers have a narrowband and wideband receiver. The narrowband
receiver can receive over longer distances (usually around 10 metres without
interference) and is limited to certain carrier frequencies.
The wideband receiver is for higher precision measurements and when the carrier
frequency is unknown; however it only works over very short distances (about 5
centimetres). This is also known as
learning mode.
For most drivers, enabling
carrier reports using
-m also enables
the wideband receiver.
All the options which can be set for lirc devices are maintained until the
device is powered down or a new option is set.
On success, it returns 0. Otherwise, it will return the error code.
To list all capabilities of /dev/lirc2:
ir-ctl -f -d /dev/lirc2
To show the IR of the first button press on a remote in learning mode:
ir-ctl -r -m -w
Note that
ir-ctl -rmw would receive to a file called
mw.
To restore the normal (longer distance) receiver:
ir-ctl -n -M
To send the pulse and space file
play on emitter 3:
ir-ctl -e 3 --send=play
To send the rc-5 hauppauge '1' scancode:
ir-ctl -S rc5:0x1e01
To send the rc-5 hauppauage '1' key from the hauppauge keymap:
ir-ctl -k hauppauge.toml -K KEY_NUMERIC_1
Report bugs to
Linux Media Mailing List
<[email protected]>
Copyright (c) 2016 by Sean Young.
License GPLv2: GNU GPL version 2 <
http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it. There is NO
WARRANTY, to the extent permitted by law.
To display decoded IR, or set IR decoding options, see
ir-keytable(1).
The keymap format is described in
rc_keymap(5).