0

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.

1
  • You can calculate that looking at the spec of your chipset (which usually the USB ports are connected to). Check the connection speed between chipset and CPU and you you will get the maximum transfer rate.
    – Robert
    Nov 8, 2021 at 11:56

1 Answer 1

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.

2
  • Thank you for the answer Nikita! After doing some reading and thinking about it I too lean towards the answer "10 Gbps shared by all ports". It makes sense. However, if I wanted to know for sure but I don't want (and realistically I don't have the means) to actually test USB controller's performance of any given computer how would I gather this information? Are all these details even reported in any of the major operating systems? Where would I look for such information?
    – ILIV
    Nov 8, 2021 at 7:30
  • I updated the answer Nov 8, 2021 at 11:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.