I'm working on this project involving 2x 1080p 30FPS webcams (using the uvcvideo driver), and right now the largest roadblock to my progress is USB bandwidth.
I have tested the cameras on four different systems: An ODROID-U2, an UDOO Quad, a Ryzen 5 desktop, and an Intel Haswell laptop. The first 2 platforms are both ARM based and only have a single EHCI divided among their available ports. I get an error stating there is no memory left on the [video] device when trying to utilize both cameras simultaneously. And yes, I tried doing "rmmod uvcvideo; modprobe uvcvideo quirks=128" in addition to other quirks combinations - it doesn't help. When testing the webcams on the Ryzen build using USB ports from the host controller, the same error occurs. When using ports from separate controllers, they work just fine together. The weird part is the Haswell laptop seems capable of activating both webcams at higher resolutions, even on the same USB bus and without using the uvcvideo quirks. However, I expect this project to be highly portable, so neither the Ryzen or Haswell PCs are an option; I was merely using them to add data to the situation.
Unless someone knows a way to get both webcams to run at their full potential, I've begrudgingly accepted that I'm going to need to use a different device. At the bare minimum, the device needs to have:
* At least two USB EHCI or XHCI controllers (that can be identified through "lsusb -t")
* At least 2 CPU cores with 512MB of RAM, though 4 cores is preferred
* Smaller than an ITX motherboard
* At least one SATA port (not required, but strongly preferred)
* Capable of being passively cooled (again, not required but strongly preferred)
A stereo mic jack would be nice, but that's a low priority.
I do not want to buy another device where all USB ports are hubbed from the same parent controller, seeing as there's basically a 25% chance it'll support my webcams at all, let alone smoothly. I don't care about a GPU or wifi.
I considered getting a Gigabyte GB-BXBT-1900, but that's more power-hungry, expensive, and thick compared to many ARM devices with decent processing power.
Any suggestions?
EDIT:
I heard the UDOO's USB OTG port supports host mode, though I personally was never able to get it to work. If somebody knows a way around that, then great because the UDOO is a great platform for my needs.