USB Bandwidth bottleneck

badwhitevision

Disciple
Let us assume a laptop provides 1 USB 3.0 Type C port (for Data only) and 2 USB 3.0 Type A ports.

In this condition, I'm supposed to have a theoretical combined throughput of 15Gbps (3x USB 3.0). I know this is not practically achievable.

But I have read somewhere that most laptops share the same USB controller and running dmidecode/lspci -vv on Debian also shows the presence of only 1 Intel xHCI controller.

Does this mean that even if I theoretically have 3 devices that are capable of achieving the transfer speed of 5 Gbps individually and at the same time, my setup will have a bottleneck due to the bandwidth available at the controller and my final speed will be 5 Gbps only? Or will I be able to hit 15Gbps? Assuming no other loss.

All of this is theoretical and I'm simply trying to understand how having 1 USB controller limits bandwidth.


I understand that using a hub limits bandwidth because even if you have 4 USB 3.0 ports at the hub, you're still connecting the hub to only 1 port. I'm asking whether something similar exists here too.
 
Last edited:
Yes, all three ports will be limited to 5gbps if they're used simultaneously. The limit is for the controller, not the actual port. Some devices have multiple controllers for this reason.

However, it's rare that you'd be maxing out three ports at the same time (unless if you're recording video from a usb capture device directly to an external usb drive while simultaneously displaying that video on a usb monitor).

edit: There are multiport controllers (not hubs) that would work the way you outlined.

edit2: If lspci shows a hub, everything downstream of it will share the 5gbps bandwidth, and everything along with it will have a seperate 5gbps connection to the controller. So if you have two hubs and two ports each for hub, then each set of two ports will be limited to 5gbps. This of course changes to 10gbps or 20gbps if you've got a new system that supports those speeds.
 
Last edited:
Thanks @rsaeon. lspci only shows this "Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)". Could you point me to the sources you referred to on this subject? Would like to read more on multiport controllers. My google skills gave me nothing.

On these lines, I ran lsusb and I got 2 different buses (One for USB 2.0 and 1 for USB 3.0) with several devices to each bus. I think it is safe to assume that the max speed is 5 Gbps + 480 Mbps for the USB 2.0 hub.

The reason for this question was because I wanted to know what would happen if I tried attaching 3 3.5 inch HDDs via USB enclosures (theoretical max speed of 240 MBps) and a USB-Gigabit Ethernet adapter and ran them all together at full bandwidth.

For example, running dd on all 3 drives would result in speeds of 240 MBps per drive.

Which gives us 1980 Mbps or near about 2Gbps per drive. The 3 drives alone will reach around 6 Gbps and if we add in the USB Ethernet adapter working at it's theoretical maximum another 1 Gbps, giving us a grand total of somewhere around 7 Gbps.

Again all this is simply theoretical.
 
Last edited:
This is how it looks in a windows laptop:


Above means both usb 3.0 ports can run at 5gbps each because both are connected to their own usb root hub.

@rsaeon every usb port has its own controller irrespective of whether they have their own usb root hub or not.