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:
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?