On Tue, 22 Mar 2005 11:28:57 +0000 Paul <paul@xxxxxxxxxxxxxxxxxxxxxx> wrote: > (from dmesg) > usb 3-2: device not accepting address 4, error -110 > usb 3-2: new full speed USB device using ohci_hcd and address 5 > cdrom: open failed. > usb 3-2: device descriptor read/64, error -110 > cdrom: open failed. Looks like Peter lost his bet. :-) > What is error -110? It is a high level timeout. The device accepted the control transfer, but did not send a reply over some significant amount of time (a few seconds). This means that the lower level sequencer in the device continues to operate. In Peter's case, -71 means that the device is dead like a brick. Usually it happens when it's completely crashed or is executing an internal cold reset after a crash. The difference is rather academic at this point. The important thing to understand is that there is no single root case for these failures. Some folks say, "let's introduce an exclusion, never send control transfer together with bulk transfer and it will be all right". Bzzzzt, false. It will help some devices, no doubt, but not all (it also breaks those devices which REQUIRE several transfers at once). Other people try adding delays into random places in the enumeration sequence. I tried refactoring enumeration (helps a lot for my USB flash keys, does not help my iPod). The answer is to deploy a variety of measures with strict regression testing (which means SLOW and GRADUAL deployment): caching of descriptor strings by kernel so "cat /proc/bus/usb/devices" does not hit devices, less aggressive polling by HAL and switchover to non-polled, event driven modes in HAL, refactoring and correct delays of enumeration. All the while this goes on, developers need bug reports, but they do not need things like "Any signs of usb_storage being fixed?" Bug reports MUST include: - dmesg or other applicable logs (terminal captures) and use scenarios. - /proc/bus/usb/devices - last kernel release working (if any) - kernel release not working - HAL & hotplug releases Bug reports must never include words "latest" and "current". If I see them, I ignore the report (Why? Because it takes hot iron to extract info and then users just feel wronged anyway, so why bother). You can use word "rawhide", but it's redundant. Include actual output of uname -a, rpm -q, or cat /proc/version. Best wishes, -- Pete