USB 3.0 or SCI as camera communication

I’m developing a stereo image acquisition software which computes the volume of an object (through generating a 3D point cloud).
Currently I’m in MATLAB and Windows. But I’m ready for the next step: Single Board Computer + Linux (or similar) + open CV.

As of now I’m using 2x Basler camera on 2x USB 3.0 ports.
The Jetson TX2 only has 1 USB3.0 (and 1 2.0)
In the specs it says that:
CSI Up to 6 Cameras (2 Lane)
CSI2 D-PHY 1.2 (2.5 Gbps/Lane)

How does this work?
Should I transition from USB to CSI camera?
Or it there a way to but an external hub to get 2xUSB3.0?

I am open for suggestions, not sure which path to choose.

There are two options:

  1. Use a USB 3.0 hub. As long as the camera doesn’t need more than 2 Gb/s of throughput each, this could work. You should get one with external power, to make sure there’s enough juice for the devices you plug in.
    Something like might work.

  2. Buy a second USB 3.0 adapter card, and plug it into the PCI-Express slot on the devkit motherboard.
    Something like might work. USB adapters are generally generic enough that the kernel supports them without special drivers through the XHCI interface, but there’s some small chance you’d need to build a driver. Also note the SATA power input port; you need this to be able to power all the USB3 ports sufficiently. Luckily there is SATA power out on the devkit motherboard.

Thank you! I will look into this.
I’ll post a new reply once I’ve tested an option.

If you want a USB3 card with more than one port to run on PCIe you might consider looking for one which uses more than a single PCIe lane (PCIe x1). The dev board supports x4, so you could get improved bandwidth if your adapter uses 4 lanes instead of 1.

The 4x cards with USB 3.0/3.2 ports are typically quite expensive.
Although if you can use USB C (and perhaps an adapter?) there’s this:

Don’t know if it will work or if the chipset is too new, though. Might be worth a try.
(In general, I like USB C a lot, and hope that it will be the connectivity solution for the next 20 years!)

I think I’ll try option 2. Buying an adapter card, however; the amazon product does not ship to Norway (where I’m from). Any applicable card from (given as an option from NVIDA to buy TX-2 from)?

Now I got my TX2 :-)

together with it i bought a USB3.0 adapter card (option 2 from Snarky)
I was a little limited by shipping to Norway; however, I got:

But I don’t think it fits, see my image:

Did I buy the wrong adapter card?

Nope…that’s the wrong socket. That’s an M.2 key-E. The PCIe x4 slot is parallel to the long edge of the heat sink, right next to it on the side closest to the edge. You may want to be careful to not torque it around if you don’t have a chassis or at least some sort of hand made bracket mount.

Thank you!
Since the card will be standing vertically up from the TX2 I bought a
PCI-E 4X Male to Female Extension Flexible Cable.

If this cable works for you I would bet others are interested in the test results. Is there a URL for a description of the extension cable? Does this seem to work? Also, if you run “lspci” you will see a list of PCIe devices. The left side is a slot ID for the device, looking similar to “00.01.0”. If you use the ID and get a verbose listing while your card is in the extender cable it would make a great reference for both the USB card and the cable in combination, e.g. (adjust for your slot ID):

sudo lspci -s 01:02.0 -vvv

How do you plan on doing the synchronization between two cameras? Normally you want the two cameras “shutters” synced perfectly, done in hardware. The same issues crop up when you are mixing different methods of image capture, for example depth camera + RGB camera + lidar, etc.

I’ll start working with the Image capturing after the “Webinar Confirmation: Build Your Next Deep Learning Application for NVIDIA Jetson in MATLAB”.

@linuxdev: I will run the lspci test and let you know if it works. The cable I bought was this:

@ESJS: I trigger both camera with the same Arduino-port. I soldered two camera cables (not USB) (trigger and GND) together on a pin, and put it into an Arduino Uno port.