Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

projectileobjects

macrumors newbie
Original poster
Apr 1, 2022
1
0
I'm curious.

After purchasing five Skydroid USB UVC receivers (basically web camera 2.0 devices). I can only get two of them to work per Thunderbolt 4 port on my M1 Max MBP, and with this model having three Thunderbolt 4 / Type C ports, the max I could plug in is six.

Why?

From my research, plugging in multiple USB 2.0 web cameras to a single thunderbolt 4 port is a USB 2.0 bandwidth issue.

But Why? And do powered thunderbolt 4 expansion docks handle this differently than USB C hubs or dongles?

I guess it seems odd that someone would plug in two of the same device per port (two keyboards, mice, printers), but with Web Camera's it makes sense in a way!?

Does anyone running multiple USB 2.0 UVC or Web cameras have a way to go beyond this limit?

I'm happy I can run all five Skydroid receivers, but I wish I didn't have to stick three separate dongles out of each port to accomplish the same task.

Maybe you know why?

Thanks!

---------

Long time reader of MacRumors, first time poster.
 

mr_roboto

macrumors 6502a
Sep 30, 2020
856
1,866
So this comes down to a bad decision made a long time ago when the USB Implementer's Forum was deciding how to extend USB from a 480 Mbps interface (USB 2.x) to 5 Gbps or more (USB 3+).

The problem facing them was that the 480 megabit USB2 spec was already at the limits of how far it could be pushed. They needed to start over for higher speeds. Intel is a driving force in both USB and PCIe standards processes, so rather than starting from scratch, Intel decided to use the PCIe gen 2 physical layer (5.0 Gbps) in USB3. It was already done, why reinvent the wheel?

Problem: USB 1.x/2.x uses a single differential pair for both transmit and receive, AKA half duplex (only one end of the cable can be transmitting at any given time). PCIe is full duplex, it needs two diff pairs (one transmit, one receive) and both ends can transmit simultaneously. There was no way to make this work in the old connector, which only had four pins (power, ground, D+, D-).

So they came up with a hack: just build two busses into one cable shell and connector! USB 3 ports have an extra row of new pins, which they were able to design such that they don't cause problems when a USB3 cable is inserted into a USB2 port. The old pins still operated just like they did in 1.x/2.x, while the new pins have all the 3.x signals.

The problem you're running into is that the USB IF deliberately did not put in a way to bridge 2.x devices to a 3.x hub hierarchy through a switch. What you want is something like a 10/100/1000 ethernet switch, where if you connect a bunch of 10 Mbps clients to a 1000 Mbps server through a switch, all the traffic between server and switch runs at 1000 while each client connection runs at 10.

That's not how a USB3 hub works, unfortunately. USB3 hubs are really two hubs in one: a USB2 hub for the 2.x 480 Mbps signaling, and a USB3 hub for all the faster devices. The USB2 and USB3 busses embedded in USB3 hubs and ports are separate worlds living in the same space.

So, no matter what arrangement of hubs you use, all the USB 2 devices you connect to a single USB4/TB4 port on your computer must communicate through a single 480 Mbps USB 2 link. That ends up bottlenecking things, especially since USB2 is terrible at efficiently sharing bandwidth between multiple devices.
 

joevt

macrumors 604
Jun 21, 2012
6,967
4,260
The way to fix this is to add more USB controllers (not USB hubs).

Get an old Thunderbolt 3 dock - one that uses Alpine Ridge and therefore only supports DisplayPort 1.2. These will usually have multiple USB controllers. For example, the CalDigit TS3+ has four USB controllers (two FL1100, one ASM1142, and the Thunderbolt USB controller for the downstream Thunderbolt port. The four USB controllers can use up the full bandwidth of Thunderbolt 3 (≈22 Gbps but there's not enough ports for USB 2.0 to reach that limit). The FL1100 controllers have multiple ports so you could connect a camera to each port (the ports are not part of a hub). The ASM1142 has two ports (USB-C and USB-A) which are also not part of a hub.
https://www.caldigit.com/ts3-plus-interface-bandwidth-allocation-and-diagram/
The total bandwidth for USB 3.x is ≈22 Gbps (4 Gbps for each FL1100, 8 Gbps for the ASM1142, and 9.7 for the Alpine Ridge USB controller)
The total bandwidth for USB 2.0 is 8 * 480 Mbps = 3.84 Gbps. I have not tested whether a USB controller can get max USB 2.0 bandwidth from all of its ports at the same time but it should be possible if they are not implemented as a hub. I would use ATTO Disk Benchmark in macOS to test that since it can read to multiple disks at the same time without having to create a RAID.

A Thunderbolt 3 dock that uses Titan Ridge usually has only one USB controller and all the USB ports are connected by a hub. The total limit is 9.7 Gbps for USB 3.x and 480 Mbps for USB 2.0.

A Thunderbolt 4 dock that uses Goshen Ridge has one USB controller but it is not used when connected to a Thunderbolt 4 computer (USB tunnelling is used). All the USB ports are connected by a hub. You can activate the USB controller of the Thunderbolt 4 dock by connecting it after a Thunderbolt 3 device. The total limit is 9.7 Gbps for USB 3.x and 480 Mbps for USB 2.0.

While Titan Ridge and Goshen Ridge docks don't have multiple USB controllers, they may have USB 10 Gbps hubs that allow all the ports to support 9.7 Gbps USB.

USB 3.0: 5 Gbps * 8b/10b = 4 Gbps
USB 3.1 gen 2: 10 Gbps * 128b/132b = 9.7 Gbps
PCIe 2.0 x1: 5 GT/s * 8b/10b = 4 Gbps (as used by the FL1100 but PCIe has more overhead than USB3.0 so USB 3.0 from the ASM1142 or Alpine Ridge is slightly faster)
PCIe 3.0 x1: 8 GT/s * 128b/130b = 7.877 Gbps (as used by the ASM1142)
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.