Hi, my robotics team has bought an 8gb Jetson Orin NX and SeeedStudio J401 carrier board with the goal of simultaneously running x4-5 USB 3.0 cameras running at 1920x1080 at 50fps. However, we quickly ran into bandwidth issues that don’t make sense. To calculate the uncompressed megabits per camera the equation is frame size * FPS * RGB ([0-255] * 3) => 1920 * 1080 * 50fps * 3 = ~38.8 megabytes/sec. However, this is for uncompressed video streaming (YUV) and if you use MJPEG its closer to 25 megabytes per second as monitored by USBTOP. The advertised USB bandwidth of the J401 carrier board is 10 Gbps (10 gigabits per second I believe) which is 1250 megabytes per second and should allow for plenty of bandwidth to run multiple USB 3.0 cameras at 1920x1080 60fps. However, in practice we are only able to run x1 camera at a time and trying to start even more camera stream (with gucview, OpenCV, gstreamer, etc. we’ve tried them all and it’s not the streamers fault) will fail. When we run lsusb -t
we can see that a camera has a 5000M property, which I believe is the speed of the device. We’ve tried all of the different flags for uvcvideo.quirks and tried changing uvcvideo.bandwidth_cap as referenced by This Good Penguin Article with no luck. Is the only option to modify the uvcvideo.c file and recompile the uvc module for the Linux kernel? If someone else has run into the issue before or knows what modifications need to be made to the uvc file it would be greatly appreciated!
Hi,
We have tried two RealSense D435 and both can be launched successfully. Do you usee USB3 cameras? It either camera is USB2, the bandwidth is limiter to 480Mbps, as we have seen in the topic:
connected more than two usb cameras problem on deepstream-app (Jetson Nano Dev Kit) - #12 by DaneLLL
Hi DaneLLL, we do see USB3 cameras, I’ll attach the printout from lsusb -t with one of our USB 3 cameras running so you can see the 5000M speed property. Do you know if you guys ran the RealSense cameras at 1920x1080 at around 60fps? We know there’s a way to get multiple cameras to work at lower resolutions, one option is to route the USB 3 camera through a USB 2 hub to force it into a lower bandwidth slot but that’s not ideal since we’re losing out on quality and pixels.
torque@toast:~/toast$ lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 10000M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 10000M
|__ Port 3: Dev 7, If 0, Class=Video, Driver=uvcvideo, 5000M
|__ Port 3: Dev 7, If 1, Class=Video, Driver=uvcvideo, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=tegra-xusb/4p, 480M
|__ Port 2: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 4: Dev 20, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 2: Dev 21, If 0, Class=Hub, Driver=hub/3p, 12M
|__ Port 1: Dev 22, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 1: Dev 22, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 23, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 23, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 3: Dev 23, If 2, Class=Human Interface Device, Driver=usbhid, 12M\
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.