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:

> TL;DR: can I reasonably turn off xhci support on the linux side?

You can.  But you shouldn't; you might want to use it in the future.

> https://superuser.com/questions/731751/not-enough-host-controller-resources-for-new-device-state
> seems to say no
> "The xchi module always ended up loaded, even if blacklisted, presumably
> to handle internal hardware. Didn't investigate this much, however."
> 
> On Sat, Dec 15, 2018 at 02:32:50PM -0500, Alan Stern wrote:
> > 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.
> 
> Aaah, I see.

It doesn't seem like you do, judging from the things you write later on
in your email.

> I also read that it's difficult to unload the xhci module after it's
> been loaded because too many things use it. 

Unloading it isn't difficult at all (assuming it was built as a module 
in the first place).  And even if you can't unload it, you can unbind 
it from the xHCI hardware, which will have much the same effect.

> Someone suggested checking whether there is a way to turn off USB3 in my
> bios, turning off xhci support altogether.
> From what you're saying it sounds like it would fix my problem assuming
> the bios allows this at all. I'll need to check in the office next week.

Depending on what hardware you have on your computer (something you
have not described so far in this conversation -- you haven't even
provided the output from "lsusb"), disabling xHCI support might prevent
all of the USB devices attached to the computer from working.

> > 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).
>  
> I did that. Actually I have this
> https://www.amazon.com/gp/product/B00FPIMICA/ref=oh_aui_search_detailpage?ie=UTF8&psc=1
> The labelling on the front plate is weird:
> https://images-na.ssl-images-amazon.com/images/I/71LSAwbx3gL._SL1300_.jpg

The Amazon web page does not say whether this card has any EHCI
controllers.  My impression is that it does not.

> I'm not sure why ports are "grouped" together, but they're all labelled
> as USB3, which obviously is bad. 
> Also, this reminded me that I actually have a PCIe slot, so finding a
> USB2 only card in PCIe form factor is going to be unobtanium :(

First, what makes you think that?  Have you actually tried?

Second, who says you need a USB-2 only card?  What you need is a card
with an EHCI controller; nothing prevents the card from having an xHCI
controller too.

> > 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.
>  
> That's the thing though, this is exactly what I do.

I don't think so; I strongly suspect your card does _not_ have an EHCI 
controller.

> I do not use a
> single USB3 cable. I use USB2 extension cords to connect to the USB3
> hub, ensuring that USB3 signalling cannot get through, and I still hit
> the limit.

It's not a question of whether you use USB-2 signalling or USB-3 
signalling; it's a question of whether you use an EHCI controller or an 
xHCI controller.  The 32-device limit is inherent in the controller, 
not in the signalling.

> > 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.
> 
> Right, that I know how to do, but finding a EHCI only PCIe or
> motherboard is going to be next to impossible.

See above.  And don't be such a pessimist:

https://www.amazon.com/Port-Express-Profile-High-Speed/dp/B002RL8V7E

> Sounds like somehow I need to turn off USB3 support altogether in the
> bios maybe the linux driver.
> Is there a way to disable xhci support for a specific driver, with the
> obvious issue that onboard devices on the MB likely use it if I
> recompile a kernel with xhci support missing?

If all the controllers on the motherboard and on the add-on card are 
xHCI, then disabling xHCI support in the kernel will prevent any of 
your USB devices from working.  That isn't what you want.

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