Using 9 USB cameras

Hi,

I have a potentially silly question/idea and I could use some advice sense checking this.

Would it be possible to record 9 USB camera streams to disk on a Jetson AGX Orin (ideally) in sync ?

(I did find helpful info on this wonderful forum already:

The cameras as Arducam 5MP USB modules which are USB2.0 (480MB).

Ideally the streams would be 720p, however if this goes beyond bandwidth I can run a few tests to reduce resolution to 540p or maybe even 360p.

Having a look at the specs this sounds positive:

16x 1080p30 (H.265)

I think the challenge will be in managing the number of USB ports and bandwidth.
Checking the specs again I see:

3x USB 3.2 Gen2 (10 Gbps) 4x USB 2.0
Up to 2 x8 + 2 x4 + 2 x1 (PCIe Gen4, Root Port & Endpoint)

I can spot the USB2.0 ports on my Jetson but not the USB3.0 ones.
Perhaps I need a USB expansion board connected to a few pins ?
If you can share a link to the relevant documentation (and perhaps links to supported/tested hardware) that would be amazing!

3 x USB 3 + 4 x USB 2 get me 9 ports.
Hopefully with a PCIe USB card I can get more.

The hope is that:

  • the USB 3 ports are on a separate bus to the USB2 ports
  • the PCIe will provide another bus
  • maybe I can split the 9 cameras as 3 on USB2 ports , 3 on USB 3 ports, 3 on PCIe USB
    Is this feasible ?

And to make things really difficult:

  • the distances between are large (4 cameras are at ~8.8m, 4 cameras at at ~6.2m)
  • ideally I’d record the frames in sync

Regarding the distance I hope I can use 10m USB2.0 active (powered) extensions.
I suspect this may introduce a bit of delay, however I’m mainly looking to record in sync, not process in real-time with minimal lag.

Regarding sync this is where I don’t know enough about USB and to handle that (e.g. is there a USB camera driver equivalent to hardware sync ).
(Ideally I’d be using cameras with global shutter and hardware sync on PoE or better, however I’m in a scenario where the hardware can’t change unfortunately).

One lo-fi idea is to trigger a large flash seen by all cameras and use that in port to align the starting point. Are the are other better techniques ?

If there are similar examples I can start prototyping with that would be great. (I suspect DeepStreamSDK would be a good place to start ?)

Thank you so much,
George

Hi,
The bandwidth should be insufficient for 9 USB2 or USB3 cameras. Please check the information in
connected more than two usb cameras problem on deepstream-app (Jetson Nano Dev Kit) - #12 by DaneLLL

1 Like

Hi @DaneLLL

Many thanks for the swift reply.

May I please get a brief clarification on the other items:

  1. Where can I find more info on accessing the 3 x USB 3 ports on the Jetson ?
  2. Is there a tested/recommend PCIe USB card I can use ?
  3. What do you recommend to sync the cameras (or recordings) ? (e.g. preffer uncompressed frames vs encoded videos (and should be be one video (e.g. gst multifilesrc ) os independent videos (each a separate process on a separate CPU core ?))

Thank you so much,
George

Check this link. It works, and it provides full/independent bandwidth on each of the USB ports:

Important: If more USB power is required, the U31X4-PCIE8XG322 has an external power connector (Allegro card can provide power only through PCIe, but the Orin DEV kit cannot supply enough - around 20 W if I remember correctly).

1 Like

Thank you both for the useful feedback.

My recommendation is to forget USB cameras and use GigE cameras. Orin AGX has 10G Ethernet, so there is enough bandwidth. There won’t be cable length restrictions affecting your setup. And It’s proven and stable.

@fchkjwlsq I couldn’t agree more, ideally GigE (or GMSL2) with global shutter and hardware trigger pins so I don’t have to worry about frame sync hacky workarounds.

Unfortunately this is not something I can do now.
(In my scenario I’ve inherited a low budget project with hardware (above mentioned) already ordered so I’m trying to get the best out of what’s already there in the limited time available.)

If you happen to have recommendations on tried and tested cameras that can easily sync across 6.5m or some clever workarounds to sync pre-recorded footage that you might have used in the past I’m more than happy to try it out. Thank you.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.