Re: getting around "Max number of devices this xHCI host supports is 32" limit

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

 



On Sat, 15 Dec 2018, Marc MERLIN wrote:

> On Sat, Dec 15, 2018 at 10:55:49AM -0500, Alan Stern wrote:
> > > Does it mean that I should indeed have 2 separate USB controllers for
> > > USB-2 if I know where to tap and therefore should have a 64 device limit
> > > if I spread the load?
> > 
> > EHCI is not subject to the 32-device limit of xHCI.  A single EHCI 
> > controller can handle up to 126 devices.  But of course, EHCI only 
> > supports high speed (480 Mb/s), not SuperSpeed (>= 5000 Mb/s).
>  
> Ok, this is maybe my salvation. I'm connecting fdti adapters (i.e. usb
> to very slow serial) and fastboot (android flashing protocol) which
> doesn't need to be super fast either.
> I'm using fancy USB3 hubs for which I've replaced the cables with USB2
> cables to force the speed down to USB2/EHCI.
> So the thing is that I think I'm already doing that you're saying since
> I'm forcing the speed down with the USB2 cable.
> Should I be using a USB2 HUB or even a USB1 hub to reduce the number of
> endpoints per device further?

For EHCI the number of endpoints doesn't matter.  Your problem is that
everything is going through an xHCI controller, either on your computer
or on the PCIe card, even though you're using USB 2 cables.  You want 
things to be connected to an EHCI controller.

> Re-reading https://acroname.com/blog/why-cant-i-connect-more-usb-30-devices-my-system
> it says
> "Each individual USB device consumes 3 USB endpoints: one endpoint for
> bulk transfers, one for isochronous transfers and one for control."
> and
> "Many modern USB 3.0 hosts use Intel XHCI USB controllers, which impose
> their own limit on the total number of endpoints to 96"
> and
> "If you need to add more than 18 total devices to your XHCI system and
> you do not need USB 3.0 performance, the simplest solution is to use a
> USB 2.0 host cable to connect your host to USBHub3+. Since the USBHub3+
> is now connected only with USB 2.0, there will not be any enumeration of
> USB 3.0 devices, including the USB 3.0 hub chips internal to USBHub3+.
> This will effectively reduce the USBHub3+ footprint in your USB tree
> from 6 devices to 3 devices."
> 
> I'm already doing the USB2 cable trick, but I don't think it's saving me
> that many device slots, maybe just 2 or 3 like the last paragraph says?

Probably.  If you have a PCI card with an EHCI controller, try plugging 
all your devices into that card via a USB 2 cable (and a hub, 
obviously).

> > > Right, but my 1U servers only allow a single PCI card.  Is there even
> > > such a thing as a PCI(e) card that has multiple USB host controllers?
> > > Clearly the one I bought only has a single.
> > > > 05:00.0 USB controller: Fresco Logic FL1100 USB 3.0 Host Controller (rev 10)                                                        
> > Yes, there are such cards.  But whether you can find one with multiple 
> > USB-3 controllers is a different question.
> 
> I don't need multiple USB3 controllers, multiple USB2 controllers woulud
> be fine, but that's probably even harder to find since I'd have to buy
> one from 15y+ ago?

There are still old cards around, and probably there are still cards 
being made that don't have xHCI.  Regardless, even if a card does have 
an xHCI controller, as long as it also has an EHCI controller and you 
use only USB 2 cables, you should be okay.

You can check the output from "lsusb" to make certain.  xHCI
controllers create two successive buses, where bus N device 001 is
marked "Linux Foundation 2.0 root hub" and bus (N+1) device 001 is
marked "Linux Foundation 3.0 root hub".  EHCI controllers create only 
one bus.

Alan Stern




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

  Powered by Linux