Why does Windows 10 assign different port numbers to the same USB port when plugging in 3.0 vs. 2.0 device?

If I plug in a USB 2.0 Storage Device into one of the 3.0 ports of my Windows 10 desktop, its descriptor says that it is plugged in to Hub: 1 Port: 1 Every 2.0 device plugged into this same port will always get this same hub and port number.

However, plugging in a USB 3.0 device, the port numbers are always bigger than 10. So, a USB 3.0 device plugged into the same port will get Hub: 1 Port: 16. This behavior is consistent through all of the USB 3.0 devices I've plugged in.

Why is there a difference in the port number designation of USB 2.0 and 3.0 devices? There is no difference when 2.0 and 3.0's are plugged into a USB 2.0 port.

One reason I thought of was that different controller settings / circuits are used in order to enable 3.0 functionality, and therefore a different port is assigned.


One reason I thought of was that different controller settings / circuits are used in order to enable 3.0 functionality, and therefore a different port is assigned.

Yes, that's very common on older motherboards, where the same ports are wired through a multiplexer (mux) to two USB controllers at once – for example, an EHCI controller for 2.x and xHCI for 3.x – and therefore each port is actually two. Of course they're still only routed to one controller at a time, but can be instantly rerouted to the other after their speed is determined.

If you switch Windows Device Manager to "View by connection" mode, you'll see that the devices even show up under different controllers in the device tree.