Not Enough USB Controller Resources?

If you are like me, you’ve got a plethora of USB devices connected to your computer at any given time. With USB hubs and universal docking stations being so common today, it’s easy to be able to connect dozens of USB devices without ever needing to unplug anything. That is, until you get the dreaded “Not enough USB controller resources – The controller does not have enough resources for this device.” error message down by the Windows system tray icons.

resources

At that moment you’re likely saying to yourself, “How can this be? My state-of-the-art system can’t handle just one more USB device?” Unfortunately, in the upgrade from USB 2.0 to USB 3.0, there are some trade-offs in terms of fewer devices that can be connected at once. And those limits apply not just to USB 3.0 devices, but to all devices connected to a USB 3.0 host.

Here’s what we think we know. The most commonly affected users are trying to expand device connectivity to systems like the Microsoft Surface Pro where only a single USB 3.0 port is present. Normally one can just connect a hub or two and not worry but with the Surface tablets, the majority of the internal devices such as WiFi/Bluetooth, audio, front & rear cameras, touch HID, pen HID, and SD card reader are all tied off of the Intel USB 3.0 XHCI host controller using up a ton of the limited USB resources (endpoints) available not leaving hardly anything left for the hub and subsequent attached devices. Where it really starts to get complicated is knowing that these resources (endpoints) are not exactly tied to how many individual USB devices there are but rather the number of endpoints each USB device has. This number van vary per device, but the maximum is 32 endpoints with 16 in and 16 out. Assuming you had some devices that actually used all 32 of their possible endpoints, resources are going to run out quickly.

There has been some discussion in the Intel community about this issue and there are reports that the Intel 8 Series USB 3.0 XHCI host controller only supports 96 endpoints. And practical limits can be hit much earlier. Further research has pointed towards this seemingly arbitrary limitation to the BIOS in some systems not having enough memory address space allocated to handle additional endpoints. Unfortunately at this time we’re not completely clear about this relationship, but we’re still continuing testing. All that’s clear is USB 3.0 PCs appear to handle far fewer devices than older USB 2.0 PCs could.

Until we can find a conclusive answer, here are our recommendations:

  1. If your USB 3.0 system is hitting a device resource limit, some systems will allow disabling the USB 3.0 (XHCI) controller and fall back to the USB 2.0 (ECHI) controller on the system. This workaround is known to work when the system BIOS offers it.
  2. Otherwise, try using a USB 2.0 hub for connecting additional devices that don’t require USB 3.0 speeds, to potentially halve the number of endpoints consumed, at least for the hub portion.
  3. If your scenario calls for very large numbers of USB devices (like USB thin clients or USB camera arrays), then if at all possible restrict yourself to a USB 2.0-only host, even if that has to be an older PC.
  4. Reach out to Microsoft and Intel about your experiences through the links above or directly. Also feel free to comment below, the more people we have talking about these issues the greater chance we’ll have to understand it.

And to provide some idea of how many endpoints are consumed by various devices, we ran through our own set of Plugable USB devices to return the number of endpoints each device exposes (and consumes), and list those below.

Plugable products endpoint list:

Standard devices:

  • Plugable PL2303-DB9 USB to RS-232 DB9 Serial Adapter = 3 endpoints
  • Plugable PSS-DD1 USB 3.0 Dual 2.5″ SATA Drive Dock with Cloning = 2 endpoints
  • Plugable PSS-SDC1 USB 3.0 2.5″ SATA Drive Dock with 3-Port USB Charger = 2 endpoints
  • Plugable UGA-165 USB 2.0 HDMI/DVI/VGA Adapter for Multiple Monitors up to 1920×1080 = 3 endpoints
  • Plugable UGA-2K-A USB 2.0 HDMI/DVI/VGA Adapter for Multiple Monitors up to 2048×1152 = 3 endpoints
  • Plugable UGA-3000 USB 3.0 HDMI/DVI/VGA Adapter for Multiple Monitors = 4 endpoints
  • Plugable UGA-4KDP USB 3.0 4K DisplayPort Adapter for Multiple Monitors = 6 endpoints
  • Plugable USB-AUDIO USB Audio Adapter = 3 endpoints
  • Plugable USB-BT4LE USB 2.0 Bluetooth Adapter = 17 endpoints
  • Plugable USB-EASY-TRAN Windows Transfer Cable = 3 endpoints
  • Plugable USB-HDMI-DVI USB 3.0 HDMI/DVI Adapter for Multiple Monitors = 6 endpoints
  • Plugable USB-KBM1 Keyboard and Mouse Bundle = 3 endpoints (2 for the keyboard, 1 for the mouse)
  • Plugable USB-OTGTF USB 2.0 Micro SD Card Reader = 2 endpoints
  • Plugable USB-VGA-165 USB 2.0 VGA Adapter for Multiple Monitors = 3 endpoints
  • Plugable USB-WIFINT USB 2.0 802.11n Wireless Adapter = 4 endpoints
  • Plugable USB2-CARDRAM3 USB 2.0 Memory Card Reader = 2 endpoints
  • Plugable USB2-E100 USB 2.0 10/100 Ethernet Adapter = 3 endpoints
  • Plugable USB2-E1000 USB 2.0 10/100/1000 Gigabit Ethernet Adapter = 3 endpoints
  • Plugable USB2-MICRO-200X USB 2.0 Microscope = 9 endpoints
  • Plugable USB2-OTGE100 OTG USB 2.0 10/100 Ethernet Adapter = 3 endpoints
  • Plugable USB3-3900DHE USB 3.0 Dual Display Adapter for Multiple Monitors with Gigabit Ethernet= 10 endpoints
  • Plugable USB3-CARD6A Aluminum 6-Slot Memory Card Reader = 2 endpoints
  • Plugable USB3-E1000 USB 3.0 10/100/1000 Gigabit Ethernet Adapter = 3 endpoints
  • Plugable USB3-FLASH3 USB 3.0 Memory Card Reader = 2 endpoints
  • Plugable USB3-SATA-U3 USB 3.0 SATA Vertical Hard Drive Dock = 2 endpoints
  • Plugable USB3-SATA-UASP1 USB 3.0 SATA Lay Flat Hard Drive Dock = 2 endpoints
  • Plugable USB3-VGA USB 3.0 VGA Adapter for Multiple Monitors = 4 endpoints

USB 2.0 hubs:

  • Plugable USB2-HUB4BC 4-Port USB 2.0 Hub with one USB 2.0 hub chipset (Terminus FE1.1S Rev B) = 1 endpoint
  • Plugable USB2-HUB-AG7 7-Port USB 2.0 Hub with one USB 2.0 hub chipset (Terminus FE2.1) = 2 endpoints
  • Plugable USB2-HUB10C2 10-Port USB 2.0 Hub with two USB 2.0 hub chipsets (Terminus FE2.1 & FE1.1S Rev B) = 3 endpoints
  • Plugable USB2-HUB10S 10-Port USB 2.0 Hub with two USB 2.0 hub chipsets (Terminus FE2.1 & FE1.1S) = 3 endpoints
  • Plugable USB2-HUB7BC 7-Port USB 2.0 Hub with two USB 2.0 hub chipsets (Terminus FE1.1S Rev B) = 2 endpoints

USB 3.0 hubs:

  • Plugable USB3-HUB10C2 10-Port USB 3.0 Hub with three USB 3.0 hub chipsets (VIA VL812 B2) = 6 endpoints
  • Plugable USB3-HUB4M 4-Port USB 3.0 Hub with one USB 3.0 hub chipset (VIA VL812 B2) = 2 endpoints
  • Plugable USB3-HUB7-81X 7-Port USB 3.0 Hub with two USB 3.0 hub chipsets (VIA VL812 B2) = 4 endpoints
  • Plugable USB3-HUB7BC 7-Port USB 3.0 Hub with two USB 3.0 hub chipsets (VIA VL811+) = 4 endpoints
  • Plugable USB3-HUB81X4 4-Port USB 3.0 Hub with one USB 3.0 hub chipset (VIA VL811+) = 2 endpoints

Combination devices:

  • Plugable PSS-SDH1 USB 3.0 2.5″ SATA Drive Dock with USB 3.0 3-Port Hub = 4 endpoints (2 for the USB 3.0 hub, 2 for the USB to SATA bridge)
  • Plugable DC-125 USB 2.0 Thin Client = 7 (1 for the USB 2.0 hub, 3 for the DisplayLink chipset, 3 for the audio adapter)
  • Plugable UD-160-A Universal USB 2.0 Single Display Docking Station = 9 (2 for the USB 2.0 hub, 3 for the DisplayLink chipset, 3 for the Ethernet adapter, 3 for the audio adapter)
  • Plugable UD-160-M USB 2.0 Thin Client Full HD = 9 (2 for the USB 2.0 hub, 3 for the DisplayLink chipset, 3 for the Ethernet adapter, 3 for the audio adapter)
  • Plugable UD-3000 Universal USB 3.0 Single Display Docking Station = 7 endpoints (2 for the USB 3.0 hub, 1 for the USB 2.0 hub, 4 for the DisplayLink chipset)
  • Plugable UD-3900 Universal USB 3.0 Dual Display Docking Station = 13 endpoints (2 for the USB 3.0 hub, 1 for the USB 2.0 hub, 10 for the DisplayLink chipset)
  • Plugable UD-PRO8 Docking Station for Tablets like the Dell Venue 8 Pro = 9 (2 for the USB 2.0 hub, 3 for the DisplayLink chipset, 3 for the Ethernet adapter, 3 for the audio adapter)
  • Plugable USB3-HUB3ME USB 3.0 3-Port Bus Powered Hub with Gigabit Ethernet = 5 endpoints (2 for the USB 3.0 hub, 3 for the Ethernet adapter)

This issue of “how many USB devices can I connect to a USB 3.x host?” is a critical question to many scenarios. We’ll continue to post as we discover more.

Questions? Solutions? Please feel free to comment below!

4 comments on “Not Enough USB Controller Resources?”

  1. Phil Nicolle Reply

    I had found a great link about this issue and I can’t find it again but this one explains something I ran into. Basically, it seems that usb ports can be routable and by default everything get routed to the xhci controller which then runs into the limits you mention. Some bios give you flexibility but in my Multipoint Server box I setup for the school my only choice was to disable the xhci controller completely and then the usb ports (including the blue usb 3.0 ones) went to the echi controllers. The odd things is, when the xhci controller wasn’t disabled both it and the 2 echi controllers showed up in the device managers but all ports routed to the usb 3.0 controller (and hit the limits). Here is a link I found which describes the routing business. What we need (for those of us with a ton of USB devices) is an option to route some ports to XHCI and some to ECHI. http://forums.tweaktown.com/asrock/60539-asrock-x99-usb-3-0-2-0-ehci-xhci-host-controllers.html

  2. Dan Ellis Reply

    xHC requires a memory allocation since it performs autonomous operations at some basic level (e.g. SetAddress) and also conglomerates all of Low, Full, High and Super speed operations which also requires some memory allocation per endpoint. This is done from a very restricted memory space. EHCI did all of this in software and from CPU allocated memory space. There is a spillover option from the xHC to system memory, but this doesn’t seem to have been enabled on some Intel platforms.

    So the good news is that on the latest platforms (although I’ve no confirmation of this) you may find this is alleviated. On ‘older’ (i.e. current) platforms, to enable the maximum number of devices you should try to revert to non-xHC if possible, if the performance is not important.

  3. Phil Nicolle Reply

    refound the link I was looking for. http://forums.tweaktown.com/asrock/60539-asrock-x99-usb-3-0-2-0-ehci-xhci-host-controllers.html This one is about ASRock X99 motherboard but it applies to many others. This doesn’t change the 96 endpoint limit on Series 8 (I wonder what the limit is on the Series 7?) but does explain the port routing issue which exacerbates the issue. It seems like some bios do allow you to pick EHCI or XHCI per port which would be invaluable for USB Thin Clients. Lastly, for those using desktop computers, probably the best work around is buying an extra host controller.

Leave a Reply