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.

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.

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

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.

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

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

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.

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.

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.