Not enough USB controller resources

Split from this thread.

On a Surface Pro 2 running latest Microsoft USB 3.0 xHCI Host Controller driver (6.3.9600.13031, 2/21/2014) I'm seeing this USB controller resources error with three different USB hubs.  I'm running a mix of USB gamepads and USB Audio speakers, 500mA USB 1.0 and 1.1 devices respectively.

1) Using Plugable USB2-HUB-AG7 connected directly to Surface Pro 2

I get the error when I attach (4) gamepads and (3) speakers, but not when I attach (5) gamepads and (2) speakers.  I also get the error when I attach (0) gamepads and (4) speakers, but not when I attach  (0) gamepads and (3) speakers.


2) Using D-Link DUB-H7 connected directly to the Surface Pro 2

I get the error when I attach (4) gamepads and (3) speakers, but not when I attach (5) gamepads and (2) speakers.  I also found this 7-port hub presents itself as two chained 4-port hubs internally, and I am able to get (4) speakers attached to the hub if I put (3) of them on the ports associated with the parent hub.

When I daisy chain the USB2-HUB-AG7 off the DUB-H7, I can only get one USB speaker to run on the USB2-HUB-AG7 child hub.  Adding the 2nd speaker causes "Not enough USB controller resources".

3) Using Plugable USB3-HUB7A, the results were identical to the D-Link DUB-H7.  This 7-port hub also presents itself as two chained 4-port hubs. 

Seems to be a USB 2.0 resource limit with the xHCI or root hub driver.  Most PCs have separate USB2 ports with a more "mature" USB 2.0 controller.  Not the Surface Pro 2 which only exposes a port on the Intel USB 3.0 controller.


USB Enumeration on Surface Pro 2 with (4) external USB speakers on Plugable USB2-HUB-AG7

Controller DeviceCount: 11
Power:  USB2-HUB-AG7 self-powered
Problems:  No sound from speaker (1-1-4), Not enough USB controller resources.


1 USB Root Hub (xHCI) - Intel USB 3.0 xHCI (Microsoft)  6.3.9600.17031 2014-02-22
 1-1 Generic USB Hub (Plugable USB2-HUB-AG7)
  1-1-1 USB Composite Device - HID, Audio (500mA Logitech USB speakers)
  1-1-2 USB Composite Device - Audio, HID (500mA Logitech USB speakers)
  1-1-3 USB Composite Device - HID, Audio (500mA Logitech USB speakers)
  1-1-4 USB Composite Device - HID, Audio (500mA Logitech USB speakers)
 1-2 USB Composite Device - Marvell AVASTAR (WiFi/Bluetooth)
 1-3 USB Composite Device - HID, HID, HID  (touch cover, keyboard, mouse, pen, sensors, buttons)
 1-4 USB Composite Device - HID, HID (touch screen)
 1-5 USB Composite Device - Image (front camera)
 1-6 USB Composite Device - Image (rear camera)

NOTE:  Devices 1-2 thru 1-6 are built in to the Surface Pro 2.   Device 1-1 is connected to the external USB port.

 

Question Info


Last updated November 15, 2018 Views 4,210 Applies to:

* Please try a lower page number.

* Please enter only numbers.

* Please try a lower page number.

* Please enter only numbers.

This is great information. I'll try this same method on Monday and report back!
Joshua Henry
Technical Support Analyst & Engineer
Plugable Technologies

Did this solve your problem?

Sorry this didn't help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.

I'd like to see if we can make a conclusive list of how many devices are internally attached via USB in the Surface Pro 2, and how many external devices users are able to use before hitting the resource error.


Surface Pro 2 256GB i5-4200U with Touch Cover 2
USB Driver:  Intel(R) USB 3.0 eXtensible Host Controller - 0100 (Microsoft)
                  Version: 6.3.9600.17031  Date: 2014-02-22

Working with USB Composite Audio devices, I am only able to attach (3) USB audio devices on (1) external USB hub before running into problems.  Playing sound to a 4th USB audio device while simultaneously playing sound through the other (3) USB audio devices triggers the "Not enough USB controller resources" error.  


The USB controller DeviceCount is only (11) total devices consisting of

    (1) root hub

    (1) external USB 2.0 hub

    (4) external USB Composite Audio devices (one of which is nonfunctional)

    (5) internal Surface Pro 2 devices

The error occurs only when playing sound, not when the USB audio device is first attached.  Running a test tone from sound properties fails.


I also found if I stop playing sound on one of the (3) USB audio devices, I am then able to play sound to the 4th USB audio device.  In fact I have no trouble connecting (7) USB audio devices to a single hub, but I can never play sound to more than (3) concurrently.

The USB audio devices that are actively playing sound have two Open Pipes, while those not playing have only one Open Pipe.  So it appears whatever USB resource issue exists is preventing the additional pipe from being opened when attempting to play sound to the device.


Strangely, this resource issue is USB topology dependent.  Chaining a 2nd external USB hub allowed me to play sound through (3) additional USB audio devices, but playing sound to a 4th audio device on either hub would still fail.


A 3rd hub can be added to get the 7th USB audio device working.


These results indicate that in some cases adding a USB hub and distributing devices across the hubs may be a workaround to the "Not enough USB controller resources" issue.  However, the new hub itself increases the DeviceCount on the USB controller, which can quickly hit the (25) max DeviceCount limitation we saw in my last post.

For comparison, I attached all (7) USB audio devices to a single hub and connected to it to my 2011 vintage Windows 7 laptop with USB 2.0 EHCI controller.

    USB Driver: Intel(R) 6 Series/C200 Series Chipset Family USB Enhanced Host Controller - 1C26
    Version: 6.1.7601.18328  Date: 2013-11-26
I found no problems playing sound through all (7) devices concurrently.  This demonstrates there are no problems inherent to these USB devices or the USB hub.  

Did this solve your problem?

Sorry this didn't help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.

At first we suspected it might have been an issue with the firmware on our hub chipsets but after many different test cases we have narrowed this down to what we believe is a driver issue. This issue does not appear to happen on Windows 7 but can eventually be reproduced on the same computer with Windows 8 equipped with an Intel USB 3.0 controller. You just need enough USB devices to make it happen.

I was able to reproduce the error on Windows 7 using Intel's USB 3.0 drivers, but not using Microsoft's built-in EHCI USB 2.0 drivers on the same controller.

Update 6/15:  Using the USB 3.0 xHCI drivers actually routes the ports to a different controller.

Using an Intel NUC D54250WYKH, which has very similar internals to the Surface Pro 2, and a fresh install of Windows 7 SP1 with all updates, the driver for the Intel USB 3.0 ports is

Standard Enhanced PCI to USB Host Controller

C:\Windows\system32\DRIVERS\usbehci.sys (Version: 6.1.7601.18328  Date: 2013-11-26)
USB Root Hub
C:\Windows\system32\DRIVERS\usbhub.sys (Version: 6.1.7601.18328  Date: 2013-11-26)

This is the Microsoft EHCI USB 2.0 driver included with Windows 7.   I was able to attach (37) devices to the controller including (1) root hub, (7) external USB hubs, and (29) external USB devices.  I found no upper limit to the number of USB devices using the Microsoft EHCI USB 2.0 driver.  All devices appeared to function correctly, but since this is a USB 2.0 driver, USB3 devices only run at USB2 speeds.

Again using the Intel NUC D54250WYKH, after installing the latest Intel USB 3.0 drivers for Windows 7, the driver for the Intel USB 3.0 ports is

Intel(R) USB 3.0 eXtensible Host Controller

C:\Windows\system32\DRIVERS\iusb3xhc.sys (Version: 2.5.3.34  Date: 2013-12-20)

Intel(R) USB 3.0 Root Hub
C:\Windows\system32\DRIVERS\iusb3hub.sys (Version: 2.5.3.34  Date: 2013-12-20)


With devices connected to the same USB ports as before, I immediately ran into problems with the number of connected devices.

First a message stating "USB Controller Bandwidth Exceeded"

After continuing to add devices, a message says "You have exceeded the number of supported USB devices", at which point new USB devices fail to enumerate at all.

I was only able to attach (22) devices to the controller when using Intel USB 3.0 drivers, including (1) root hub, (3) external hubs, and (18) external devices.  Attaching one more USB device would cause the Bandwidth Exceeded error.

So it appears the device count and bandwidth limitations exist in the original Intel USB 3.0 driver for Windows 7.  This driver is undoubtedly the basis for the Microsoft USB 3.0 driver included with Windows 8, which appears to have the same limitations.  The question is why does the xHCI driver enforce this limit when we know the Intel USB 3.0 controller is capable of supporting many more devices when using the Microsoft EHCI driver?

Update 6/15:  The Intel USB 3.0 capable ports can be routed to either the USB2 EHCI controller or USB3 xHCI controller (see EHCI/xHCI port switching).   When the Intel USB 3.0 driver is installed on Windows 7, all USB 3.0 capable ports are routed to the xHCI controller by the host controller switch driver (iusb3hcs.sys).   Uninstalling the Intel USB 3.0 driver reroutes the ports back to the EHCI controller.

There does not appear to be a way to force Windows 8.x to use the EHCI controller, unless xHCI is disabled in the UEFI, which is not supported on the Surface Pro 2.  Thus we are bound to the measurably lower device count of the Intel xHCI controller.

Did this solve your problem?

Sorry this didn't help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.

Using the USB 3.0 xHCI drivers actually routes the ports to a different controller.

To show how a USB port is switched to either the Intel EHCI or xHCI controller, compare the following USBTreeView topologies.

A Windows 7 PC without USB 3.0 drivers has USB devices connected to the Intel 8 Series USB 2.0 EHCI controller.

Windows 7 Before USB 3.0 Drivers Windows 7 with USB 3.0 Drivers



After installing Intel USB 3.0 drivers for Windows 7, the USB devices are switched to the Intel USB 3.0 xHCI controller.  The devices now connect to a different USB controller even though they are remain connected to the same physical ports on the PC:

Since Windows 8 has a bundled Microsoft USB 3.0 driver, the ports are always routed to the xHCI controller.   Interestingly, the EHCI controller still appears in USBTreeView on the Surface Pro 2, but I know of no way to connect a device to it. 

Did this solve your problem?

Sorry this didn't help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.

Sorry to bump a bit old of a thread, but I'm pretty sure this still applies as being a serious problem that now the surface pro 3 has too.

http://answers.microsoft.com/en-us/surface/forum/surfpro3-surfdevice/usb-hub-powered-not-enough-resources/790d124e-dceb-45cf-8340-3cfa3f02e57e

Did this solve your problem?

Sorry this didn't help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.

Sorry to hear it but I can't say that I am surprised. Most of the stuff I use is USB 2.0. A switch in the BIOS to disable the xHCI would be better than what we have now. I use a lot of USB devices at work including 2 extra monitors. The switching of ports on and off is nerve racking.

Did this solve your problem?

Sorry this didn't help.

Great! Thanks for marking this as the answer.

How satisfied are you with this reply?

Thanks for your feedback, it helps us improve the site.

How satisfied are you with this response?

Thanks for your feedback.

* Please try a lower page number.

* Please enter only numbers.

* Please try a lower page number.

* Please enter only numbers.