[Pkg-lirc-maint] Bug#617417: Bug#617417: liblircclient0: Breaks inputlirc.

Christian Ohm chr.ohm at gmx.net
Wed Mar 9 00:59:07 UTC 2011

On Wednesday,  9 March 2011 at  0:46, Stefan Lippers-Hollmann wrote:
> On Tuesday 08 March 2011, Christian Ohm wrote:
> > Package: liblircclient0
> > Version: 0.9.0~pre1-1
> > Severity: critical
> > Justification: breaks unrelated software
> > 
> > Hello,
> > 
> > After the update to version 0.9.0..., inputlircd doesn't work anymore (in
> > mplayer), with the following message in /var/log/syslog:
> inputlircd isn't linked to /usr/lib/liblirc_client.so.0:
> $ ldd ./usr/sbin/inputlircd 
>         linux-vdso.so.1 =>  (0x00007fffe3ff1000)
>         libc.so.6 => /lib/libc.so.6 (0x00007f9eccc3e000)
>         /lib64/ld-linux-x86-64.so.2 (0x00007f9eccfb7000)
> so I find it difficult to believe that up-/ or downgrading 
> liblircclient0 can make a difference. Looking at the diff between 
> 0.8.3-5 and 0.9.0~pre1 and their symbol tables doesn't suggest any ABI 
> breakage either.

Well, it breaks, I don't know why. I guess because mplayer links to
liblircclient, and the new one behaves in a way inputlirc doesn't like. And I
can only repeat what I wrote before, with 0.9.0 mplayer doesn't find a lirc
device, with 0.8.3 it works.

> > inputlircd: Error processing event from js0: Success
> hmm, what kind of device is js0, a joystick?

More or less, a gamepad.

> While I have no inputlirc setup, using lirc 0.9.0~pre1-1 directly 
> (incl. dev/input driven devices) in combination with mplayer seems to
> work fine, e.g.:
> $ head -n 20 ~/.lircrc
> begin
> 	button = KEY_HOME
> 	prog = mplayer
> 	config = vo_fullscreen
> 	repeat = 0
> end
> begin
> 	button = KEY_VOLUMEUP
> 	prog = mplayer
> 	config = volume 1
> 	repeat = 1
> end
> begin
> 	button = KEY_VOLUMEDOWN
> 	prog = mplayer
> 	config = volume -1
> 	repeat = 1
> end
> > Just downgrading to 0.8.3-5 makes it work again.
> [...]
> Did you downgrade just liblircclient0 or also lirc, your version output
> below suggests the later?

Just liblircclient0, I did "apt-get upgrade" only, so lirc wasn't even updated
since it depends on a new library.

> The upgrade to lirc 0.9~ is a major change, as lirc upstream had to do 
> many changes to get lirc modules into the mainline kernel (staging) and
> to define the new common RC_CORE subsystem together with the v4l 
> subsystem maintainers. In order to improve out-of-the-box behaviour of 
> lirc and input devices, the lirc key definitions of the shipped example 
> lircd.confs /usr/share/lirc/remotes/) have been harmonized[1] to follow
> those of the input subsystem, which, depending on your kind of 
> configuration and physical device, might require reconfiguration of 
> your lirc clients for the new keycodes. 
> Please also keep in mind that in kernels >= 2.6.36 the implementation
> of several previously custom input drivers for IR devices have be 
> ported over to the new RC_CORE subsystem, which may affects the emitted
> scancodes for several devices (lirc_i2c --> ir-kbd-i2c or cx88xx in 
> 2.6.38, for example). Likewise /usr/bin/ir-keytable (packaged in 
> ir-keytable) now needs to be used to override the keytables for devices
> decoded in kernelspace.
> If you can rule out a change of emitted keycodes with the new kernel- 
> or lirc packages, please send me the related configuration files, so I 
> can try to reproduce the issue locally - in particular:
> 	/etc/lirc/hardware.conf
> 	/etc/lirc/lircd.conf
> 	/etc/default/inputlirc
> 	~/.lircrc

As mentioned above, mplayer doesn't even find a lirc device, so I don't think
those files matter much. /etc/lirc/hardware.conf and /etc/default/inputlirc
basically have everything disabled, since I start inputlircd by a udev script
when the gamepad is connected.

To reproduce, it should be enough to start "inputlircd -f /dev/input/event0"
(shouldn't matter which, as long as it runs), then run "mplayer
nonexistingfile". That gives

MPlayer SVN-r32917-4.4.5 (C) 2000-2011 MPlayer Team
mplayer: could not connect to socket
mplayer: Connection refused
Failed to open LIRC support. You will not be able to use your remote control.

Playing asdf.
File not found: 'asdf'
Failed to open asdf.

Exiting... (End of file)

here without inputlircd running, or liblircclient0 0.9, and

MPlayer SVN-r32917-4.4.5 (C) 2000-2011 MPlayer Team

Playing asdf.
File not found: 'asdf'
Failed to open asdf.

Exiting... (End of file)

with inputlirc and 0.8.3.

> What does "/usr/bin/irw" (packaged in lirc) say, if you use the remote?

With the old lirc package and inputlircd, it outputs the gamepad buttons,
regardless of the liblircclient version. The new lirc package says "connect: No
such file or directory".

> Any output with "/usr/bin/evtest /dev/input/js0" (lirc and/ or 
> inputlirc needs to be stopped, /usr/bin/evtest is packages in evtest).

evtest: can't get version: Invalid argument

No idea why, the gamepad works in various programs.

The above text suggests that lirc 0.9 offers some of the functionality of
inputlircd, but according to devinput.html, it needs exclusive access to the
device file, so one (for me) crucial feature is missing. Since inputlircd
doesn't need that, I can use the gamepad as remote in mplayer, and to play
games without having to change anything.

Best regards,
Christian Ohm

More information about the Pkg-lirc-maint mailing list