USB host controller speed/throughput: split between all ports or guaranteed per port?

I have a computer with 6 USB ports. Two of those ports are 10 Gbps ports and the other four are 5 Gbps ports.

Are the theoretical speeds (throughput) guaranteed per port (i.e. 10 Gbps on one port + 10 Gbps on the other port, and 5 Gbps on each of the remaining 4 ports)?

If that is not the case, what is the maximum speed/throughput this (or any other) particular USB host controller offers overall and per each port?

I'm trying to keep this question simple but I'm aware (somewhat) of the concept of a bus, root hub and channels. I'm still not entirely clear about how it all is supposed to work and most importantly how to find answers to these questions by just logging into a remote machine (running Linux) and just pulling up this information on command line. Well, assuming that's possible. lsusb doesn't seem to answer all of these questions.


Solution 1:

As you might have guessed, this depends on what controller do you have.

Usually there is a single controller with the built-in hub. In this case, the controller has a single link to a hub and this is the limiting factor, which I suppose in your case will be 10 Gbps in total, shared by all ports.

There are cards in the market which claim they support a rated bandwidth per port. But those are unusual.

Also there is an obvious thing, you will be able to get around 60% of this raw bandwith when you do e.g. file transfers and so on, and even possibly lower if you have interrupt/isochronous device on the same hub.


The USB 3.0 bus often comes in the form of PCIe device. PCIe 2.0 has 5Gbps/lane of raw bandwidth, PCIe 3.0 has 10Gbps/lane. However, the link speed can be downgraded. So, first you can see which interface your USB controller uses and how wide is it: lspci -vv

I checked an add-on USB3.0 card I had my hands on, the output of the said command includes the following line:

                LnkSta: Speed 5GT/s (ok), Width x1 (ok)

Pretty self-explaining: this card works in PCIe 2.0 mode with 1 lane at full bandwidth. It has 2 ports (I just know), so those ports will deliver in total not more that 4 Gbit/s, being constrained by the PCIe bus. Notice PCIe 2.0 uses 8/10 bit wire data coding, so 5 GT/s leaves only 4 Gbit/s of bandwidth.

Another card I was able to check is built into HP ProBook 450 G0. This is harder to evaluate, as the corresponding PCI device doesn't report link speed. It shows it as part of C210 chipset, and all PCIe bridges for this show 5 GT/s x1, but downgraded to 2.5 GT/s. I suppose this means I won't be able to have more than 2 Gbit/s overall through its USB3.0 ports.