From: Jarod W. <ja...@wi...> - 2011-04-06 15:04:02
|
On Apr 5, 2011, at 6:23 PM, Michael Zanetti wrote: > Hi, > > While hunting this bug [1] I have debugged the communication between lircd and > kremotecontrol. I noticed that using the default lircd.conf.devinput > (containing 446 keys per remote) the command "LIST devinput" most of the times > just returns about 300 buttons and then lircd disconnects the socket. > > I have been able to reproduce this running: > irsend LIST devinput "" "" > Just run it a few times and it will fail to list all keys once in a while. > Most of the times KEY_PINKIE is the last one. While it does not happen as > often as with kremotecontrol, I can easily reproduce it on two different > machines at least 4 out of 10 times. > > Tracking it a bit more down showed that it fails in in lircd.c in > write_socket(). My distributions lirc package is obviously not build in > maintainer mode and so the check for EAGAIN is removed by the #ifdef SIM_REC > check. Unfortunately this behaviour seems to be caused exactly by this missing > loop. Compiling lircd using SIM_REC fixes the problem reliably. Looks like if we simply use the SIM_REC version there all the time, we should be okay. I'll go ahead with committing that. > Since the mceusb driver is now removed in favour of the devinput driver, That's not entirely correct. The lirc_mceusb driver is gone, but there is a new mceusb driver, which supports both the classic lirc_mceusb mode of operation *and* in-kernel decode. But the part about more people likely using devinput mode is correct. :) -- Jarod Wilson ja...@wi... |