/usr/share/doc/lirc/html/devinput.html is in lirc 0.9.0~pre1-1.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>LIRC - Linux Infrared Remote Control</TITLE>
<LINK REL=stylesheet TYPE="text/css" HREF="../lirc.css">
<LINK REL="shortcut icon" HREF="../favicon.ico">
<META NAME="description" CONTENT="LIRC - Linux Infra-red Remote Control">
<META NAME="keywords" CONTENT="linux, kernel module, remote control, animax, multimedia">
</HEAD>
<BODY BACKGROUND="../images/marb18.jpg"
BGCOLOR="#FFFFFF" TEXT="#000000" ALINK="#8080FF">
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD CLASS="menu" WIDTH="100%" HEIGHT="150">
<IMG SRC="../images/diode.gif" ALT=""
WIDTH="300" HEIGHT="150" BORDER="0" HSPACE="20"
VSPACE="0" ALIGN="LEFT">
<IMG SRC="../images/lirc.gif" ALT=""
WIDTH="300" HEIGHT="150" BORDER="0" HSPACE="20"
VSPACE="0" ALIGN="RIGHT">
</TD>
</TR>
<TR>
<TD WIDTH="100%"> <BR>
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD WIDTH="15%"> <BR></TD>
<TD WIDTH="70%" ALIGN="LEFT" VALIGN="TOP"> <BR>
<!-- Text ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<A NAME="overview"></A><HR>
<CENTER><H1>Linux input layer driver</H1></CENTER>
<P>
Usually you don't have to create a config file
yourself if you use this driver as this <A
HREF="http://lirc.sourceforge.net/remotes/devinput/lircd.conf.devinput">generic
config file</A> should already contain all
existing keys.
</P>
<P>
This driver uses <em>/dev/input/event0</em> as
its input device per default. You should provide
the correct device as --device parameter on the
lircd and irrecord command line.
</P>
<P>
Sometimes the input device mapping changes
between system reboots. In that case you are
also able to specify the correct input device by
its name or physical location by preceding the
desired value with <em>name=</em> or
<em>phys=</em>. Shell wild-cards can be used
for the given value but must be protected from
the shell with proper quoting.
</P>
<P>
For example you can use:
</P>
<PRE>
--device=name='Budget-CI dvb ir *'
--device=phys='pci*/ir0'
</PRE>
<P>
With the following script you can list all names
associated with all existing Linux input
devices.
</P>
<PRE>
for i in /sys/class/input/input* ; do echo -n "$(basename "$i"): "; cat "$i/name"; done
</PRE>
<P>
This information also can be found in
<em>/proc/bus/input/devices</em>.
</P>
<CENTER><H2>Conflict with HAL</H2></CENTER>
<P>
lircd requires exclusive access to the IR-receiver to work
reliably. On some systems other processes may try to compete for
access to the same device. In these cases lircd will send the following
message to the system logs:
</P>
<PRE>
lircd: can't get exclusive access to events coming from
`<device-path>' interface
</PRE>
<P>
Another symptom is that the "irw" utility will fail to register
keystrokes from the remote-control-device.
</P>
<P>
A specific case of a potential conflict is on systems that implement
the hardware abstraction layer (HAL) from freedesktop.org. This
software is used on many Linux distributions and will take control of
a variety of devices including all input devices. All IR-receivers
which work through LIRC's <em>devinput</em> driver, i.e. has
'REMOTE_DRIVER="devinput"' in the configuration of LIRC, can
potentially have events intercepted by the HAL-daemon (hald) unless
hald is instructed to ignore the device.
</P>
<P>
The following example illustrates how this conflict is resolved on a
ubuntu-8.10 installation with a IR receiver on a Hauppauge HVR4000
TV-card:
</P>
<P>
1. The problem is confirmed by log entries (/var/log/daemon.log) and
irw's behaviour as described above. "irw" in a xterm-window will appear
to produce garbage characters which in fact are key-codes presented to
the x-server through HAL. Some of the keys produce working x-events
for left/right/up/down/enter and numbers, while others don't seem to
work at all.
</P>
<P>
2. HAL comes with a utility, lshal, that lists the devices it knows
about. The entry for this particular IR receiver reads:
</P>
<PRE>
udi = '/org/freedesktop/Hal/devices/pci_14f1_8802_logicaldev_input'
info.addons.singleton = {'hald-addon-input'} (string list)
info.callouts.add = {'debian-setup-keyboard'} (string list)
info.capabilities = {'input', 'input.keys', 'button'} (string list)
info.category = 'input' (string)
info.parent = '/org/freedesktop/Hal/devices/pci_14f1_8802' (string)
info.product = 'cx88 IR (Hauppauge WinTV-HVR400' (string)
info.subsystem = 'input' (string)
info.udi = '/org/freedesktop/Hal/devices/pci_14f1_8802_logicaldev_input' (string)
input.device = '/dev/input/event7' (string)
input.originating_device = '/org/freedesktop/Hal/devices/pci_14f1_8802' (string)
input.product = 'cx88 IR (Hauppauge WinTV-HVR400' (string)
input.x11_driver = 'evdev' (string)
input.xkb.layout = 'no' (string)
input.xkb.model = 'pc105' (string)
input.xkb.options = 'lv3:ralt_switch' (string)
input.xkb.rules = 'evdev' (string)
linux.device_file = '/dev/input/event7' (string)
linux.hotplug_type = 2 (0x2) (int)
linux.subsystem = 'input' (string)
linux.sysfs_path = '/sys/class/input/input7/event7' (string)
</PRE>
<P>
In short this explains that the device that LIRC was complaining about
in the log (/dev/input/event7) is controlled by hald, and already
prepared as an input-device for the system's X-server.
</P>
<P>
3. The info.product string will work as a unique identifier and can be
used to create a file containing the following XML-formatted rule to
make hald ignore the IR-receiver:
</P>
<PRE>
= = = cut here = = =
<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
<device>
<match key="info.product" contains_ncase="cx88 ir">
<merge key="info.ignore" type="bool">true</merge>
</match>
</device>
</deviceinfo>
= = = cut here = = =
</PRE>
<P>
The rule does a non-case-sensitive search for devices that has "cx88
ir" in its info.product attribute and places an instruction to ignore
it. Put this in a file called 10-ignore-cx88-ir.fdi. The location of
rules for HAL and further explanation of technical details is found in
it's documentation. The example system (ubuntu-8.10) needs this file
in the /usr/share/hal/fdi/preprobe/20thirdparty/ directory.
</P>
<P>
4. HAL and LIRC can now be restarted (or reboot the system). Then LIRC
will get exclusive access to the IR receiver, "irw" will display
IR-events as expected, and the following output from "lshal" confirms
that it now ignores the IR device:
</P>
<PRE>
udi = '/org/freedesktop/Hal/devices/temp/112'
info.ignore = true (bool)
info.parent = '/org/freedesktop/Hal/devices/pci_14f1_8802' (string)
info.product = 'Ignored Device' (string)
info.subsystem = 'input' (string)
info.udi = '/org/freedesktop/Hal/devices/ignored-device' (string)
input.device = '/dev/input/event7' (string)
input.originating_device = '/org/freedesktop/Hal/devices/pci_14f1_8802' (string)
input.product = 'cx88 IR (Hauppauge WinTV-HVR400' (string)
linux.device_file = '/dev/input/event7' (string)
linux.hotplug_type = 2 (0x2) (int)
linux.subsystem = 'input' (string)
linux.sysfs_path = '/sys/class/input/input7/event7' (string)
</PRE>
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<BR><BR>
<CENTER>[<A HREF="http://www.lirc.org/">LIRC homepage</A>]<BR>
<I>The LIRC Manual, last update: 24-May-2009</I></CENTER>
<BR><BR>
</TD>
<TD WIDTH="15%"> <BR></TD>
</TR>
</TABLE>
</TD>
</TR>
<TR>
<TD CLASS="menu" WIDTH="100%"> <BR>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
|