Jetson Xavier with Multiple USB3 Cameras

Hello,

I have my Jetson Xavier connected to 4 FLIR BlackFly S USB3 cameras via a StarTech PEXUSB3S44V PCIe card. The Xavier is connected to a wall outlet, and the PCIe card has external power connected to a wall outlet (this means that if I power off the Xavier without disconnecting the PCIe card power the cameras will stay powered ON). When I try to begin acquiring images, by running a script I wrote, I get the following output from dmesg -f:

dmesg -f
[  171.332333] usb 4-1: USB disconnect, device number 2
[  171.340338] usb 8-1: USB disconnect, device number 2
[  171.926816] usb 8-1: new SuperSpeed USB device number 3 using xhci_hcd
[  171.926834] usb 4-1: new SuperSpeed USB device number 3 using xhci_hcd
[  171.948390] usb usb7: usb_suspend_both: status 0
[  171.948430] usb usb3: usb_suspend_both: status 0
[  171.954794] usb 8-1: New USB device found, idVendor=1e10, idProduct=4000
[  171.954801] usb 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  171.954805] usb 8-1: Product: Blackfly S BFS-U3-16S2C
[  171.954808] usb 8-1: Manufacturer: FLIR
[  171.954811] usb 8-1: SerialNumber: 013187BD
[  171.954936] usb 4-1: New USB device found, idVendor=1e10, idProduct=4000
[  171.954941] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  171.954944] usb 4-1: Product: Blackfly S BFS-U3-16S2C
[  171.954947] usb 4-1: Manufacturer: FLIR
[  171.954951] usb 4-1: SerialNumber: 013154CD

Any ideas about what’s going on and how I could fix it? I’m guessing it may be a power issue and that the camera is losing connection/power briefly. I have tested this multiple times with two cameras and have not had any issues.

Thanks!

You might try disabling USB autosuspend (there are a lot of USB devices which do not handle autosuspend well). Adding “usbcore.autosuspend=-1” to the kernel command line should be enough to test this with. For example, add this to the “/boot/extlinux/extlinux.confAPPEND key/value pair:
APPEND ${cbootargs} usbcore.autosuspend=-1

If this works you could put it in the device tree “chosen->bootargs” node. However you add this, just verify it shows up in:
cat /proc/cpuinfo

Thanks. I have tried this and done some more testing, however, I still am getting the same error with 4 cameras. Testing with 3 cameras connected I have not notice any errors yet.

Just as @linuxdev says, we should apply with those changes.
Also, I mentioned the PCIE card need an external power plug, which pin you connect that? I don’t think Dev Kit has such port. So it may as your says power issue.

In order to identify whether it’s real power related, you also can use the usb to gigabit ethernet adapter. Usually these devices cost only 1w/device, since 3 cameras works, it should be able to afford 4 adapters(maybe 3 cameras + 1 adapter works as well). Although the bandwidth can’t compare with 4 cameras, but it may help to identify the issue.

Hi,
There are two type C ports and one type port on devkit. You may shift cameras to these ports. Thi sshould give more bandwidth to each camera.

Doing this seems to work, I haven’t had any issues with four cameras running since switching one camera to the USB C port. Thanks!
A bit disappointing that the PCIe card can’t seem to handle powering 4 cameras.

1 Like

@ConnorM Do the FLIR cameras show up as /dev/video* on your system? We have an issue that the cameras appear in FLIR’s spinview application but there’s no /dev/video device for them so we can’t use them with Deepstream SDK.

The cameras do not show up under /dev/video* for me. I believe this is because they are USB3 Vision class devices and can only be accessed using FLIR’s Spinnaker SDK. One thing to note is that as far as I know the cameras do not support video recording on ARM devices. The current solution is to capture/store images (.raw for high FPS) and then append them into a video.