Jetson Xavier AGX and three FLIR BFS-U3-120S4C-CS cameras, can't start acquisition/usb_submit_urb -11

Hello @ all,

I hope that I am creating this topic in the correct location.
Please move it otherwise to where is should belong. Thanks.

Sorry for the long text in beforehand.

My Setup/Problem:
I am using the Nvidia Jetson Xavier AGX Developer Kit, with the newest Jetpack 4.2.2 (Rev1) on the board. After flashing the system with all possible additional SDKs,… I have performed an apt-update and upgrade. Hence the system should be up-to-date.

I have also installed the most recent version of ROS (melodic-desktop-full) and the newest spinnaker-sdk (1.26) for ubuntu 18.04 on the target.

Moreover, I also increase, at runtime, the USBFS memory for my 3 cameras which are all Flir BFS-U3-120S4C-CS, to 2500 and I also disable usb autosuspend (-1).

All 3 cameras are up to date regarding the firmware.
I have tried various settings regarding connecting them to the Xavier over the existing USB 3.0 interfaces, directly and with various USB Hubs, including external powered ones.

Either way, when connected, I see all three cameras, with no error messages in dmesg.
When I start the spinview application, most times I can start acquisiton on 3 cameras simultaneously.
However, not always. When I don’t, I get the following error, which I always get for at least the 3rd, if not even already the 2nd camera, using the spinnaker library and a ros node to configure the cameras.

One of the cameras mostly works, from what I can tell.

The error I get is as follows:
Spinnaker: Could not start acquisition. Please try reconnecting the device. [-1010]

In dmesg I get the error message:
usbfs: usb_submit_urb returned -11

And in lsusb -t, I see that each cameras has 3 interfaces:
0 is never assigned
1 gets assigned when I start my ros node, trying to connect to all 3 of them
2 gets assigned when starting the acquisition works.
I.e., when it does not work, only interface 1 is assigned with usbfs.

So basically, when I use spinview, it more or less always works. If not, I just do what it says, and unplug and plug the cameras back in, which then often resolved the error.
When I use my code, it however does not.
So yeah, I know what you are thinking, my code is probably buggy.

However, here now comes the twist. My code works just fine, when I use it in a VM, on a native Ubuntu 18.04 amd64 machine, and it even works like a charm, without any error, on the xavier, when I use an USB 3.0 PCIe card… It just does not, when I am using the onboard USB interfaces.

Hence, maybe some part of code is not working well on an arm platform with this specific USB chip. I will definitely review everything I have done/changed.
As the error however also appears intermittently in spinview too, I hence think that this is more of a problem of the spinnaker sdk/library itself. However, why does it then work when using a PCIe card…

Hence I conclude, that:

  • The cameras are working fine, as can be seen on other platforms and on the xavier itself when I use the PCIe card
  • The software should work fine, as it does on other platforms and on the xavier itself when I use the PCIe card

Why am I writing to this forum:
Is there anything wrong with my setup/image, that I have overseen or misconfigured?
I have read that for the jetson a custom Kernel was necessary to enable USB3.
Is this also necessary for the Xavier?

Is there maybe a problem with the USB3.0 interfaces on the xavier?

Is something like my error already known to anyone of you? (I googled but the entries I found where more regarding ethernet cameras). However, maybe I have overseen something.

If you need any more information, please just let me know.
I appreciate any help.

Regards,
Florian

1 Like

Hi,
We don’t have this camera, so it is possible to have issues since it is not verified in the release. By default we support UVC driver, if the camera supports it, it should work fine.

We have patch for RealSense D435. It improves stability. You may give it a try and see if it helps.

1 Like

Have you tried increasing the USBFS memory?

https://www.flir.com/support-center/iis/machine-vision/application-note/understanding-usbfs-on-linux/

EDIT: never mind, I reread your post and it looks like you are

1 Like

Hi.

It’s been a long time and this may not be relevant to the original problem but I wanna leave my experience.

I am working with the same camera (FLIR BFS-U3-120S4C) on Jetson Nano. I faced exactly the same error, “Could not start acquisition” repeatedly, though SpinView worked well. Neither rebooting Nano nor re-conencting the USB camera did not make any difference.

At that time, I set the USBFS memory to 2000MB (since I needed fast acquisition), which is twice the default configuration provided by FLIR. Once I reduced the USBFS memory to 1000MB, that error stopped happening.

Thanks!

2 Likes

We’ve also experienced issues with SpinView application crashing sporadically. As we’re going to install a device with a couple of cameras for collecting a dataset soon I’m afraid of the application crashing while we’re not watching.

@fge You mentioned a USB 3.0 PCIe card: Can you tell me please which model you have used?

Hi @b2prix21
We have been using a https://at.rs-online.com/web/p/usb-karten/1383583/ for our application. There should also be a variant available with 4 USB slots.

1 Like

Thanks @fge! I’ve even found one with 7 USB ports 😃 https://at.rs-online.com/web/p/usb-karten/1383749/

Old thread, but maybe this will help someone else.

I use the same 3 cameras on a Xavier and have no problem with a PCI-e card. When operating in default settings, the cameras are 31fps, 8-bit bayer, with a resolution of 4000x3000. That puts the camera at just shy of 3gbps of bandwidth per camera. I’m not sure if the USB 3 port on the Xavier is 5gbps or 10gbps. Obviously if its 5gbps then that’s definitely a problem.

We use this card from Startech with no issue

It has 4 USB3 ports but each port has a dedicated 5gbps controller so we can theoretically get 20gbps out of the card.

1 Like