Old title: Is this USB3.0 hub a USB3.1 (Gen 2) hub in disguise? More than 5Gbps bandwidth reported
I'm running a couple of USB3 machine vision cameras. Each camera is 2448x2048 at 75 fps, 8-bit data so round about 3Gbp/s. One one PC I have, I can't run both cameras at full speed, on another PC I can. I was (previously) under the impression that a single USB3.0/3.1 Gen 1 hub was limited to 5Gbp/s.
This is an important issue to raise, because in the past we've had problems running multiple high bandwidth cameras on what we've referred to as 'a single controller'. Modern cameras can easily saturate a single USB3.1 connection. In the past the solution has been to add a PCI expansion card. It seems like in some cases this isn't necessary, and I'm interested in understanding why.
- In previous edits I referred to the Root Hub (which the cameras are plugged into) as just a 'Hub' which caused some confusion - my ignorance here, I wasn't aware there was a difference. This seems to be critical.
- Much of the prevailing info online, suggests that even a root hub should be limited to 5Gbps, for example:
A single USB host controller almost always serves more than one USB port, but the total bandwidth available to those ports will be shared. Think of a single USB port with a four, or even eight-port hub attached. The total available bandwidth for any host controller or root hub can be something close to the following (your bandwidth can vary):
• USB 3.0 — Total theoretical bandwidth per host controller = 5Gbps (625MB/s) • USB 3.0 — Total practical bandwidth per host controller = 3.2Gbps (~400MB/s) • USB 2.0 — Total theoretical bandwidth per host controller = 480Mbps (60MB/s) • USB 2.0 — Total practical bandwidth per host controller = 308Mbps (~36MB/s)
- Motherboard vendors advertise everything as just USB3.0 and USB3.1. In reality this is often USB3.1 Gen 1 (5Gbps) and USB3.1 Gen 2 (10Gbps). This caused further confusion.
- In addition, Windows displays USB3.1 Gen 1 root hubs as USB3.0
- Both cameras are rated for USB3.0
- Both cameras are plugged into the motherboard directly, in USB3.1 Gen 1 sockets according to motherboard docs.
- Both cameras are plugged into the same USB Root Hub as reported by the device manager, for example:
On one machine, with an Asus H110M-R motherboard, I get the expected behaviour that one camera runs at full speed (75fps) and the other is reduced to around 7fps. Both cameras are in the same USB3.0 root hub.
On a different machine, with an Asus Impact VIII motherboard, both cameras will run at full speed (no fps slowdown). In fact we can plug in more cameras and we can push around 10Gbp/s (possibly a bit more). The fact that we get 10Gbps suggests this is actually a USB3.1 Gen 2 controller, but Windows reports that we're using the USB3.1 Gen 1 controller (reported as USB3.0). It could also be a coincidentally close bandwidth limit (I would be amazed if we actually got the theoretical 10Gbps throughput).
Manual verification too - I can wave my hand in front of the cameras and both are clearly running at > 50fps (at least).
Since the viewing software automatically adjusts the frame rate (down) on the first PC, I don't see why it would be incorrect on the other one. Similarly, bandwidth monitoring software (Advanced USB Port Monitor) also seems to be correct, and the bandwidth plot changes if we manually slow down one of the cameras.
More info on the motherboards:
- The Impact VIII is advertised as having two controllers: a USB3.1 Gen 1 and a USB3.1 Gen 2. The ports are physically separated on the backplate. There are four rear ports are labelled as USB3.0 (and two on the front), there's also a red USB-C and USB-A labelled USB3.1.
- The H110M-R has two USB3.1 Gen 1 ports and 6 USB2 ports.
- The Impact VIII uses an Intel Sunrise Point-H USB 3.0 xHCI Controller (
PCI\VEN_8086&DEV_a12f) and an Intel Alpine Ridge DSL6540 controller for USB3.1 (
- The H110M-R also reports
PCI\VEN_8086&DEV_a12fas its USB3.0 controller.
- So we're using the same type of root hub, apparently?
- The Impact VIII uses a Z170 chipset, while the H110M-R uses the H110 chipset.
The PCH contains an eXtensible Host Controller Interface (xHCI) host controller which supports up to 14–USB 2.0 ports and up to 10 –USB 3.0 ports with board routing, ACPI table and BIOS considerations. This controller allows data transfers of up to 5Gb/s. The controller supports SuperSpeed (SS), High-Speed (HS), Full-Speed (FS) and Low- Speed (LS) traffic on the bus. The xHCI controller supports USB Debug port on all USB 3.0-capable ports. The xHCI also suppo rts USB Attached SCIS Protocol (UASP).
From the 100-series manual https://www.intel.com/content/www/us/en/chipsets/100-series-chipset-datasheet-vol-1.html
Assuming that these devices are really working at full speed, some thoughts/possibilities are:
Does the Impact VIII use a single USB (Gen 2) controller that's running all the ports (but enumerates as two)? The spec seems to suggest not, and Device Manager reports there being two controllers.
- Can a single USB3.0 controller support more than 5Gbps? I assumed not.
- Can a USB3.1 hub advertise itself as a USB3.0 hub?
However, the main question is - Why is one system limited to 5Gbps and one not, when both seem to use a single USB3.1 Gen 1 controller (of the same type) which the cameras are plugged into?
Unless Windows is misreporting, I'm not using the Gen 2 controller. I'm going to investigate to see how much bandwidth I can actually pull on the Impact VIII.