[media] v4l-with-ir.rst: update it to reflect the current status

This document were really old. Update it to reflect the current
status of the IR drivers for TV.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
Mauro Carvalho Chehab 2016-07-17 22:34:51 -03:00
parent 31cae7ca8d
commit 2e97d6d301
1 changed files with 39 additions and 41 deletions

View File

@ -1,31 +1,34 @@
infrared remote control support in video4linux drivers
Infrared remote control support in video4linux drivers
======================================================
Author: Gerd Hoffmann
.. note::
This section is outdated.
Authors: Gerd Hoffmann, Mauro Carvalho Chehab
Basics
------
Current versions use the linux input layer to support infrared
remote controls. I suggest to download my input layer tools
from http://bytesex.org/snapshot/input-<date>.tar.gz
Most analog and digital TV boards support remote controllers. Several of
them have a microprocessor that receives the IR carriers, convert into
pulse/space sequences and then to scan codes, returning such codes to
userspace ("scancode mode"). Other boards return just the pulse/space
sequences ("raw mode").
Modules you have to load:
The support for remote controller in scancode mode is provided by the
standard Linux input layer. The support for raw mode is provided via LIRC.
saa7134 statically built in, i.e. just the driver :)
bttv ir-kbd-gpio or ir-kbd-i2c depending on your
card.
In order to check the support and test it, it is suggested to download
the `v4l-utils <https://git.linuxtv.org/v4l-utils.git/>`_. It provides
two tools to handle remote controllers:
ir-kbd-gpio and ir-kbd-i2c don't support all cards lirc supports
(yet), mainly for the reason that the code of lirc_i2c and lirc_gpio
was very confusing and I decided to basically start over from scratch.
Feel free to contact me in case of trouble. Note that the ir-kbd-*
modules work on 2.6.x kernels only through ...
- ir-keytable: provides a way to query the remote controller, list the
protocols it supports, enable in-kernel support for IR decoder or
switch the protocol and to test the reception of scan codes;
- ir-ctl: provide tools to handle remote controllers that support raw mode
via LIRC interface.
Usually, the remote controller module is auto-loaded when the TV card is
detected. However, for a few devices, you need to manually load the
ir-kbd-i2c module.
How it works
------------
@ -36,40 +39,35 @@ layer, i.e. you'll see the keys of the remote as normal key strokes
Using the event devices (CONFIG_INPUT_EVDEV) it is possible for
applications to access the remote via /dev/input/event<n> devices.
You might have to create the special files using "/sbin/MAKEDEV
input". The input layer tools mentioned above use the event device.
The udev/systemd will automatically create the devices. If you install
the `v4l-utils <https://git.linuxtv.org/v4l-utils.git/>`_, it may also
automatically load a different keytable than the default one. Please see
`v4l-utils <https://git.linuxtv.org/v4l-utils.git/>`_ ir-keytable.1
man page for details.
The input layer tools are nice for trouble shooting, i.e. to check
The ir-keytable tool is nice for trouble shooting, i.e. to check
whenever the input device is really present, which of the devices it
is, check whenever pressing keys on the remote actually generates
events and the like. You can also use the kbd utility to change the
keymaps (2.6.x kernels only through).
events and the like. You can also use any other input utility that changes
the keymaps, like the input kbd utility.
Using with lircd
================
The cvs version of the lircd daemon supports reading events from the
linux input layer (via event device). The input layer tools tarball
comes with a lircd config file.
The latest versions of the lircd daemon supports reading events from the
linux input layer (via event device). It also supports receiving IR codes
in lirc mode.
Using without lircd
===================
XFree86 likely can be configured to recognise the remote keys. Once I
simply tried to configure one of the multimedia keyboards as input
device, which had the effect that XFree86 recognised some of the keys
of my remote control and passed volume up/down key presses as
XF86AudioRaiseVolume and XF86AudioLowerVolume key events to the X11
clients.
Xorg recognizes several IR keycodes that have its numerical value lower
than 247. With the advent of Wayland, the input driver got updated too,
and should now accept all keycodes. Yet, you may want to just reasign
the keycodes to something that your favorite media application likes.
It likely is possible to make that fly with a nice xkb config file,
I know next to nothing about that through.
Have fun,
Gerd
--
This can be done by setting
`v4l-utils <https://git.linuxtv.org/v4l-utils.git/>`_ to load your own
keytable in runtime. Please read ir-keytable.1 man page for details.