>>> The usbmon log on that web site don't show what happens when you unload
>>> the drivers.  And the dmesg log doesn't say what you are doing at each
>>> stage.
>>
>> sorry about that. here are complete annoatated logs of :
>>      reboot
>>      modprobe    usbhid
>>      modprobe -r usbhid
>>      modprobe    usbkbd
>>      modprobe -r usbkbd
>>      modprobe    usbhid
>>
>> http://www.missl.cs.umd.edu/~adam/cy/cy.complete.usbmon.txt
>> http://www.missl.cs.umd.edu/~adam/cy/cy.complete.dmesg.txt
>
> There isn't much difference between what usbhid does and what usbkbd does.
> In fact, the only differences are these: usbhid does a Set Idle and a Get
> Report Descriptor and usbkbd doesn't.  Both of them apparently succeed,
> but then the device stops responding.
>
> Now, there's no way to avoid doing the Get Report Descriptor -- without
> that usbhid wouldn't know how to communicate with the device at all; it
> wouldn't even know what the device did!  But you can eliminate the Set
> Idle and see what happens.
>
> Do you feel up to patching your kernel?  The change needed is a simple
> one.  In the source file drivers/usb/input/hid-core.c, find the
> hid_set_idle() routine and simply stick a "return 0;" line at its start.

ah, sweet!

I can confirm that it makes difference.
Before I had to reload usbkbd module to make remote work.
Now, I can reload usbhid module to make remote work.
So it is progress.
However, once I unplug remote and plug it in, I still need to reload 
either of the modules. There does not seems to more sleep routines in 
'core' and 'host' directories, so I guess it is something else.


# diff -u input/hid-core.c{-backup,}
--- input/hid-core.c-backup     2006-12-02 22:46:34.000000000 +0100
+++ input/hid-core.c    2006-12-02 22:47:19.000000000 +0100
@@ -1344,6 +1344,7 @@

  static int hid_set_idle(struct usb_device *dev, int ifnum, int report, 
int idle)
  {
+       return 0;
         return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
                 HID_REQ_SET_IDLE, USB_TYPE_CLASS | USB_RECIP_INTERFACE, 
(idle << 8) | report,
                 ifnum, NULL, 0, USB_CTRL_SET_TIMEOUT);


-- 
Adam Sulmicki
http://www.eax.com      The Supreme Headquarters of the 32 bit registers

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to