I am working on a vision system using jetson agx xavier development kit.
The camera I am using is a high resolution camera providing 1920x1080 resolution @30fps 12bpp.
Video data streaming after compression is transferred to another system using ethernet.
Problem Statement: Ethernet is getting a bottleneck as it only support upto 1Gbps of data transfer. This bandwidth is low as per my application.
Require suggestion: Can I replace ethernet with USB 3.1 from my jetson agx xavier to achieve high bandwidth for data transfer? Any recommendation?
Ideally it should work with USB but there is no existing implementation. Would need to investigate about how to implement. For using ethernet, we generally use UDP and RTSP. You may take a look at
Jetson Nano FAQ
Q: Is there any example of running RTSP streaming?
Q: Is there an example for running UDP streaming?
I will add that ethernet is full duplex and neither end is a master or slave. With USB the host is master, and the other end must be in device mode as a slave. You wouldn’t be able to set up USB 3.1 as a slave/device on a Jetson, and so you’re other half would need a custom device mode software.
@DaneLLL @linuxdev : I have got AGX on one side transmitting video streaming. This will need USB to configure as host.
On the other side(receiving side), I have got jetson NX. Its job is to route the received data on a RF transmission.
So according to you, USB on NX cannot be configured as Slave? Is my understanding is correct?
I doubt you would succeed in making USB 3.1 as a slave on the NX (or AGX) without USB C. Even with USB-C I don’t know if the Jetson can use USB 3.1 in device mode…someone from NVIDIA will have to answer if that is possible if you have USB-C. If all connectors of the NX are type-A or type-OTG (which can be type-B, but USB 2), then you can’t reach USB 3.1 due to the PHY.
Nat sure if running USB as slave means device mode. If yes, on Xavier NX developer kit, it supports USB2 device mode in the micro-B port. ON Xavier developer kit, it supports USB3 device mode in J512 type-C port. It checks status of VBUS pin and ID pin to decide host/device mode.
Yes, the slave is the device mode end. The micro-B port is guaranteed to not allow USB 3. The USB-C stands a chance, but only if not using isochronous mode. I’m not sure how hard it is to actually get the USB-C to work reliably in device mode, not a lot of people have done this and posted on forums. The virtual wired ethernet and virtual USB disk are good examples, but I’ve not seen anything showing if the performance is what he needs. Incidentally, perhaps if the virtual wired ethernet is fast enough he could just use networking over virtual ethernet.
Thanks for this indepth discussion. It will help me to decide the right course of direction in my project. I believe it will be tough to configure USB and transmit video streaming reliably rather thn using ethernet. I think for now, i’ll stick with ethernet but surely try to usb near future and it helps to clear the bottleneck of ethernet of 1Gbps.