50 USB webcams in a single computer. Is that really possible

driversusbwebcam

Theoretically an USB HD webcam working at 15 FPS consume a bandwidth nearing 18MB/s – 1280 (width) x 960(height) x 3(RGB channels) x 15(FPS) – without compression. An USB 2.0 controller have a effective throughput of 35MB/s, being able to handle 2 cameras(witch I've confirmed in practice). An USB 3.0 controller have a theoretical maximum transmission speed of 625MB/s wich is capable of handling 34 cameras(625/18 = 34.72), for convenience, lets assume it can handle a maximum of 8 cameras(not confirmed yet). Using both assumptions, it's possible to estimate that the mother board P8B75-V can handle at least 50 simultaneous webcams:

  • 3 PCIe slots (one PCIe x4 and two PCIe x1, excluding the PCIe x16 to the graphic card): Convert them to USB 3.0 using an adapter + USB 3.0 HUBS, resulting in 24 webcams
  • 2 USB 3.0 Controllers (hear and front): USB 3.0 HUBS to achieve 16 webcams
  • 3 PCI Slots: Convert each one to USB 2.0 using an adapter, resulting in 6 webcams
  • 2 USB 2.0 Controllers: 4 webcams

So, my question is:

Is that configuration really possible? Anyone has tried to overload the system with so many USB webcams?

Problems:

  • It's possible that the processor get's overloaded. Using uncompressed image capture may solve this.
  • The SO can have a lot of trouble handling so many devices.

Comentaries:

  • The CPU bus to external devices – Quick Path Interconnect (QPI) for Intel and Hyper-transport for AMD – doesn't seen to be a problem, since 50MB/s * 18MB/s = 900MB/s. That's really far from the bus data rate of 25.6GB/s for QPI and 51.2GB/s for Hyper-transport.
  • I'm implementing the software of this application using OpenCV that wraps the capture around DirectShow.

EDIT 12/11/12:

So, I've done some test's and there are some points to clarify.

The streaming of HD images at 30 FPS represents a bandwith of 106MB/s (53MB/s at 15 FPS), my math was completely wrong. This means that the HD webcams working with USB 2.0 needs to compress the file to not consume all the bandwidth. So, even if I was able to connect 50 webcams in a single PC, probably the CPU would have a lot of trouble decompressing this amount of data in real time.

The real problem comes when we see the USB 3.0 specification:

USB 3.0 specification

As we can see in the image, the USB 2.0 HUB is completely separated from the USB 3.0 HUB (SuperSpeed), witch means that USB 2.0 devices can't use the SuperSpeed bandwidth. That's a major drawback on my assumption that I could use more USB 2.0 devices with a USB 3.0 controller.

As this specification is kinda old (about 2 years), can someone confirm if there is some new implementation of the USB 3.0 specification that shares the SuperSpeed bandwidth between USB 2.0 devices?

Best Answer

There will never be a change in this design of an additional USB-2-Hub-Device inside USB-3 because it's the only way to provide reasonable downward compatibility. If you want to use USB-3 Speed you need to use USB-3 Webcams.

Let me give you a example for further explenation. Let's say:

Ok, we build a high speed railway. Because the railway is high speed we can put more slow trains onto it than on our slow railway. Hurray!

Technically it's the same for USB. Just because you could drive faster on the railway does not mean there is more space (bandwidth) for slow trains (USB2). The slow trains will drive slow on the fast track, making it impossible for the fast trains (USB3) to use the railway at full speed. To deal with this some engineers decided not to replace the slow railway with the faster one, but to build it right next to it. With this setup it is possible for the fast trains to drive high speed on the fast railway and the slow ones on the slow. Same for USB3 downward compatibility.

Related Question