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 (8 bits for [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 gigabytes per second I believe) which is 10,000 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!