On Thu, 1 Mar 2007, Gordon Messmer wrote:

> Here's an aspect that I'd completely forgotten in the last year.
> Occasionally the mouse is assigned a different ID (I think?), and then
> stops causing resets.
> 
> Mar  1 05:40:28 herald kernel: usb 2-1: reset low speed USB device using
>       uhci_hcd and address 3
> <snip much of the same>
> Mar  1 06:11:39 herald kernel: usb 2-1: failed to restore interface 0
>       altsetting 0 (error=-71)
> Mar  1 06:11:39 herald kernel: usb 2-1: USB disconnect, address 3
> Mar  1 06:11:39 herald kernel: usb 2-1: new low speed USB device using
>       uhci_hcd and address 4
> Mar  1 06:11:39 herald kernel: usb 2-1: configuration #1 chosen from 1
>       choice
> Mar  1 06:11:39 herald kernel: input: Logitech USB Mouse as
>       /class/input/input3
> Mar  1 06:11:39 herald kernel: input: USB HID v1.10 Mouse [Logitech USB
>       Mouse] on usb-0000:00:1d.1-1

I don't think this is related to anything.  It's probably just a 
coincidence.

> This appears in usbmon during each reset:
> 
> f7e67b40 2881999053 C Ii:003:01 -84 0
> f7e67b40 2882012282 S Ii:003:01 -115 4 <
> f7e67b40 2891495532 C Ii:003:01 -84 0

Those three lines are an I/O error, a retry, and another I/O error 9.5 
seconds later.

> f766b340 2891495554 S Co:001:00 s 23 03 0004 0001 0000 0
> f766b340 2891495561 C Co:001:00 0 0
> f66ad4c0 2891697063 S Ci:001:00 s a3 00 0000 0001 0004 4 <
> f66ad4c0 2891697068 C Ci:001:00 0 4 = 03030000
> f66ad4c0 2891748048 S Co:001:00 s 23 01 0014 0001 0000 0
> f66ad4c0 2891748051 C Co:001:00 0 0
> f66ad4c0 2891748064 S Ci:000:00 s 80 06 0100 0000 0040 64 <
> f66ad4c0 2891754543 C Ci:000:00 0 18 = 12011001 00000008 6d040cc0 10060102 
> 0001
> f66ad4c0 2891754552 S Co:001:00 s 23 03 0004 0001 0000 0
> f66ad4c0 2891754556 C Co:001:00 0 0
> f66ad4c0 2891956001 S Ci:001:00 s a3 00 0000 0001 0004 4 <
> f66ad4c0 2891956006 C Ci:001:00 0 4 = 03030000
> f66ad4c0 2892006988 S Co:001:00 s 23 01 0014 0001 0000 0
> f66ad4c0 2892006991 C Co:001:00 0 0
> f66ad4c0 2892006993 S Co:000:00 s 00 05 0003 0000 0000 0
> f66ad4c0 2892009556 C Co:000:00 0 0
> f66ad4c0 2892022985 S Ci:003:00 s 80 06 0100 0000 0012 18 <
> f66ad4c0 2892028558 C Ci:003:00 0 18 = 12011001 00000008 6d040cc0 10060102 
> 0001
> f66ad4c0 2892028567 S Ci:003:00 s 80 06 0200 0000 0022 34 <
> f66ad4c0 2892036558 C Ci:003:00 0 34 = 09022200 010100a0 32090400 00010301 
> 02000921 10010001 22440007 05810308
> f66ad4c0 2892036566 S Co:003:00 s 00 09 0001 0000 0000 0
> f66ad4c0 2892039557 C Co:003:00 0 0
> f66ad4c0 2892039565 S Co:003:00 s 01 0b 0000 0000 0000 0
> f66ad4c0 2892042557 C Co:003:00 0 0
> f66ad4c0 2892042664 S Co:003:00 s 21 0a 0000 0000 0000 0
> f66ad4c0 2892045562 C Co:003:00 0 0
> f7e67b40 2892045579 S Ii:003:01 -115 4 <

All that stuff is a standard device reset.

>From the fact that your two errors occurred more than 9 seconds apart, it 
seems that you are encountering some intermittent electrical or 
interference problem.  The patch below may help; it fixes a small bug in 
the logic used by usbhid for deciding when to reset a device.  It should 
apply to 2.6.20 or 2.6.21-rc.

Alan Stern


Index: usb-2.6/drivers/usb/input/hid-core.c
===================================================================
--- usb-2.6.orig/drivers/usb/input/hid-core.c
+++ usb-2.6/drivers/usb/input/hid-core.c
@@ -147,6 +147,11 @@ static void hid_io_error(struct hid_devi
        if (usb_get_intfdata(usbhid->intf) == NULL)
                goto done;
 
+       /* If it has been at least 2 seconds since the last error, we'll
+        * assume this a brand new error and reset the retry timeout. */
+       if (time_after(jiffies, usbhid->stop_retry + 2*HZ))
+               usbhid->retry_delay = 0;
+
        /* When an error occurs, retry at increasing intervals */
        if (usbhid->retry_delay == 0) {
                usbhid->retry_delay = 13;       /* Then 26, 52, 104, 104, ... */


-------------------------------------------------------------------------
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-users@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

Reply via email to