Number of USB camera on NVIDIA TX1

Hi!

I’ve recently received my NVIDIA TX-1 development board and have started to test it. I’m trying to stream USB 2.0 cameras over the network using mjpeg-streamer. I works perfectly with 3 cameras, but when I try connecting 4 cameras, the last camera won’t come up. All four camera is discovered in /dev/video*. In the beginning I suspected that the problem was with mjpg-streamer. However I tried several programs, e.g. Xeoma, and all of them is only capable to show 3 video streams at the time. Is there a limit on the USB2.0 bus in the TX1? Could it be that the number of endpoints in the USB2.0 is used up?

Best regards
Sondre

Addition information: I’m trying to stream 4 Microsoft LifeCam Cinema with MJPG compression at 1280x720 with 30 FPS

hello SondreHoglund,

we would like to confirm below first.
are you always got failed at 4th usbcamera? in the other words, are these cameras works correctly if they were running individually?
thanks

Hi Jerry and thanks for the response!

Each camera is working perfectly when running them individually. In Xeoma it is also the last detected camera that won’t show. In addition, on the other cameras Xeoma gives a warning of “Disk space is running out”. This corresponds to what is happening in mjpg-streamer. The first three is working perfectly, but when I try to connect the last one, it force closes with error:

libv4l2: error turning on stream: No space left on device
Unable to start capture: No space left on device

And according to the creator of mjpg-streamer, this indicates that there is not enough bandwidth

I ran usbtop and each camera uses about 16Mbit/s of bandwidth. This is a long way from the limit of 280Mbit/s in USB 2.0.

Sondre

If temporary files are required to run (and pipes run through temporary files on the file system), then this would account for not seeing the fourth camera.

hello SondreHoglund,

besides mjpg-streamer and Xeoma, are you able to launch these 4 usb-cameras simultaneously with gst-launch or nvgstcapture?
thanks

Hi,

Thanks for your suggestions!

I now tried using gst-launch, but I have the same problem. I also managed to get hold of two USB3.0 cameras to hopefully spread the resources on two usb buses. But unfortunately that didn’t help either.

If I understands correctly, nvgstcapture is for the onboard camera ports and cannot be used on usb cameras (/dev/video*)?

This is the command I used for gst-launch:

MJPEG:
gst-launch-1.0 v4l2src device=/dev/video2 do-timestamp=true ! “image/jpeg, framerate=30/1, width=1280, height=720” ! jpegparse ! jpegdec ! xvimagesink

UYV:
gst-launch-1.0 v4l2src device=/dev/video2 ! “video/x-raw, framerate=30/1, width=1280, height=720, format=(string)I420” ! xvimagesink

Sondre

"If I understands correctly, nvgstcapture is for the onboard camera ports and cannot be used on usb cameras (/dev/video*)?

=> it does except some of the advanced feature,
http://developer2.download.nvidia.com/embedded/L4T/r28_Release_v1.0/Docs/Jetson_TX1_Accelerated_GStreamer_User_Guide.pdf?-msUnFAZqKvG2iE2UIF4abgbuWJDK8B5ucd6aIePV6XZAnwJhjmcEB-OqJ8cy0PPBrjvPDVDorElbpmnkWNL7tu4NMnrX0Afr6fbJE7vaErao1rD_ssPEimPRi8Cpq3PUdIBro84d2pz2UgvdBIGNiQlf_Yj_S3kjhE9XWBpQ2z_GSr7I2vCm8-kaG3fXZ9CDQ