Re: device enumeration fail (only?) on ehci

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 17 Oct 2013, Alexander Stein wrote:

> > But with xHCI and OHCI, the reconnect succeeds whereas with EHCI it
> > fails?
> 
> Yep. But it even works on EHCI if there is a full-speed-hub somewhere before that device.
> 
> > It's hard to guess why.  The behavior under xHCI is slightly different
> > from the other two, which behave the same.  You can force EHCI and OHCI
> > to work more like xHCI by doing:
> > 
> > 	echo 1 >/sys/module/usbcore/parameters/old_scheme_first
> 
> I tried that but there wasn't any difference.
> 
> > Maybe it's a data toggle issue involving the internal hub, but the only
> > way to find out for sure is to use a bus analyzer.
> 
> We tried that but didn't see any USB traffic for those USB device
> numbers where enumeration failed.

Did you compare the analyzer results for xHCI and EHCI?  In theory, 
since the device behaves differently under the two controllers, there 
must be something different happening on the bus.

> One thing about the error log:
> [249741.159104] usb 2-1.6.1: new full-speed USB device number 109 using ehci-pci
> [249751.565047] usb 2-1.6.1: device not accepting address 109, error -110
> [249751.638197] usb 2-1.6.1: new full-speed USB device number 110 using ehci-pci
> [249762.044199] usb 2-1.6.1: device not accepting address 110, error -110
> [249762.117273] usb 2-1.6.1: new full-speed USB device number 111 using ehci-pci
> [249777.196292] usb 2-1.6.1: device descriptor read/64, error -110
> [249792.376349] usb 2-1.6.1: device descriptor read/64, error -110
> [249792.550467] usb 2-1.6.1: new full-speed USB device number 112 using ehci-pci
> [249807.629330] usb 2-1.6.1: device descriptor read/64, error -110
> [249822.809391] usb 2-1.6.1: device descriptor read/64, error -110
> [249822.910435] hub 2-1.6:1.0: unable to enumerate USB device on port 1
> 
> There are different errors "device not accepting address xxx" and
> "device descriptor read/64, error -110". Does that mean that reading
> the device descriptor succeeded when the USB device address shall be
> set?

No.  The USB core tries four times to initialize a newly detected
device.  Two of those times, it sends Set-Address before Get-Descriptor
(called the "old scheme").  The other two times, it sends
Get-Descriptor before Set-Address (called the "new scheme").

The old scheme is recommended in the USB spec, and the new scheme is
used by Windows.  The idea is that by trying both, we have a better
chance of working with all devices.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux