[mythtv-users] USB IR Receivers

Kirk Bocek t004 at kbocek.com
Fri Sep 4 14:24:00 UTC 2015



On 9/4/2015 1:50 AM, Alec Leamas wrote:
> On 03/09/15 22:23, Kirk Bocek wrote:
>>
>>
>> On 9/3/2015 12:27 PM, Kirk Bocek wrote:
>
>>
>> Next problem. modprobing my new mceusb.ko yields a kernel crash of some
>> sort:
>>
>> $modprobe -v mceusb
>> insmod
>> /lib/modules/4.1.5-100.fc21.x86_64/kernel/drivers/media/rc/rc-core.ko.xz
>> insmod
>> /lib/modules/4.1.5-100.fc21.x86_64/kernel/drivers/media/rc/mceusb.ko.xz
>> Killed
>>
>> $dmesg
>> ...
>> [  163.692148] mceusb: module verification failed: signature and/or
>> required key missing - tainting kernel
>> [  163.730477] Registered IR keymap rc-rc6-mce
>> [  163.730711] input: Media Center Ed. eHome Infrared Remote Transceiver
>> (0471:20cc) as
>> /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/rc/rc0/input8
>> [  163.731422] rc0: Media Center Ed. eHome Infrared Remote Transceiver
>> (0471:20cc) as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/rc/rc0
>> [  163.746365] BUG: unable to handle kernel NULL pointer dereference at
>> 0000000000000003
>> [  163.746457] IP: [<ffffffffa064a129>] usb_endpoint_xfer_int+0x10/0x25
>
> Here is a kernel oops. As long as this is with us, anything can 
> happen. Now, the question is if you can reproduce this without your 
> patches to mceusb.c. If so, this is a kernel bug which should be 
> reported. If not, you need to find out (bisect?) which part of your 
> patch which causes this.

This is all I added:

     /* Philips/Spinel plus IR transceiver for ASUS */
     { USB_DEVICE(VENDOR_PHILIPS, 0x20cc) },

Remove those lines from source file, recompile and reinstall and crash 
goes away. But IR instance goes away too. No /sys/class/rc, etc. No 
driver tree:

$lsmod |grep mce
mceusb                 36864  0
rc_core                28672  1 mceusb

So just edit one of the existing device lines to 0x20cc: modprobe and 
same result as before, kernel oops.

>
>> [  163.812088] IR LIRC bridge handler initialized
>
> There is a *very* small chance that the lirc bridge works but not the 
> input layer. I really doubt it, since the problem seems to be in the 
> usb underpinnings. Still you could test this by doing:
>
>   $ sudo echo lirc > /sys/class/rc/rc0/protocols
>   $ mode2 --raw --device /dev/lirc0
>
> and pushing some buttons. There should be printable space/pulse 
> durations on stdout if it works.

OMG! For the first time I got something!

mode2: /lib64/libiguanaIR.so.0: no version information available 
(required by mode2)


space 16777215

But only that! Only the space and nothing more. I pressed a bunch of keys.

>
> BTW, while testing (loading/unloading) the module you might need to 
> change 'rc0' here to whatever index the new module load allocates e. 
> g., rc1 (been there, done that...) Check with dmesg().
>

No, only /sys/class/rc/rc0.

Now the kernel oops causes some low level failure. Commands like lsusb 
just hang and require a cold restart.


More information about the mythtv-users mailing list