Cannot stream two Arducam B0202 cameras at 640x480 30FPS via USB dongle on Ubuntu 22.04

Hi all, I’m trying to run two Arducam USB 2.0 cameras through a single USB port using a dongle, but I’m getting heavily bandwidth-limited. I can’t get a stable stream at 640x480 @ 30FPS from both cameras at once. Frames drop constantly and the image stutters. Has anyone run into this?

Thanks for posting. To help narrow this down, can you share which Arducam model you’re using, what laptop/host machine you’re on, and the OS? Also, is the dongle acting as a USB hub, with both cameras going into that single dongle into one port?

They’re two Arducam B0202 (USB 2.0) cameras, running on a Razer Blade 15 with Ubuntu 22.04. Yes, both cameras go into the dongle, and the dongle plugs into a single USB port. I also tried moving the dongle to a USB 3.0 port on the laptop, but that didn’t change anything.

Okay, that helps. One thing worth noting: the cameras are USB 2.0 devices, so plugging the dongle into a USB 3.0 port won’t help. The whole chain still negotiates down to USB 2.0 speeds. What’s the end goal for camera count? Are you planning to add more cameras later?

Yeah, eventually I want to run 4 cameras at the same time. The problem is the laptop doesn’t have enough USB ports to give each camera its own port, which is why I’m trying to combine them through one dongle.

Got it. The core issue here is the bandwidth of a single USB 2.0 port. At 640x480 @ 30FPS, each uncompressed camera stream is roughly 147 Mbps. Two of those already approach the practical ceiling of a USB 2.0 connection (around 280-320 Mbps real-world), and that’s before hub overhead. Four streams over one port won’t fit on USB 2.0. Have you tried lowering resolution/frame rate or using a compressed format like MJPEG to see if that changes the behavior?

I did try dropping the resolution and it gets more stable, but for the project I really need 640x480 @ 30FPS. I haven’t looked into compression options yet. Is that something the camera firmware handles?

Part of that depends on the firmware and how the driver exposes formats. On the standard B0202 firmware, the data path is still constrained by the single-port USB 2.0 bandwidth when both cameras share one port, so even with compression you may not reliably hit your target. For your specific use case, the likely path is a custom firmware to optimize how the multi-camera streams are transmitted over a single port. I’ve sent you the sales team’s contact details via private message. They handle firmware customization requests. Just be aware that reaching 640x480 @ 30FPS on multiple cameras over one port will probably involve some trade-offs in image quality, so it’s worth asking them explicitly about that.

Thanks, I’ll reach out to them. So to confirm, there’s no configuration or driver setting on the standard firmware that would get two cameras at 640x480 @ 30 through one port?

Right, based on what we’ve gone through, the standard firmware won’t get you there with two B0202 streams sharing one USB 2.0 port. The bandwidth simply isn’t available, and moving to a USB 3.0 port doesn’t change it because the cameras still operate at USB 2.0. The recommendation is to discuss a custom firmware with the sales team, and ask them about any hardware or configuration options that could help, including what image quality trade-offs to expect.