Headless Orin Nano CSI Camera Stream Export Issue
Issue Overview
Users are experiencing difficulties exporting video streams from IMX219-83 Stereo Cameras to a remote display when the Nvidia Jetson Orin Nano is running in headless mode (without a physical display connected). The issue specifically occurs when using the Argus camera interface through GStreamer.
Key points:
- The problem arises when trying to use
nvarguscamerasrc
in a GStreamer pipeline without a physical display connected to the Orin Nano. - The issue does not occur when a physical display is connected to the Orin Nano’s Display Port.
- The USB camera works correctly when streamed remotely using the
cheese
application. - The problem persists when using RTSP streaming methods.
- The issue is not present when accessing the Orin Nano through SSH, but it occurs when using Remote Desktop Connection.
Possible Causes
-
EGL Display Initialization: The error messages suggest that there are issues initializing the EGL display when no physical display is connected.
-
X11 Display Configuration: The remote desktop environment may not be properly configured to handle GPU-accelerated operations.
-
Driver Compatibility: There might be compatibility issues between the Argus camera driver and the headless configuration.
-
NVIDIA Jetpack Version: The specific version of Jetpack installed might have known issues with headless camera streaming.
-
Remote Desktop Protocol Limitations: The Remote Desktop Connection might not support the necessary GPU acceleration required for Argus camera operations.
Troubleshooting Steps, Solutions & Fixes
-
Use SSH Instead of Remote Desktop:
- Connect to the Orin Nano using SSH instead of Remote Desktop Connection.
- Use the
-X
flag for X11 forwarding:ssh -X username@machinename
- This method has been confirmed to work for streaming camera output.
-
RTSP Streaming:
Implement RTSP streaming using the following steps:a. Compile the RTSP server:
gcc test-launch.c -o test-launch $(pkg-config --cflags --libs gstreamer-1.0 gstreamer-rtsp-server-1.0)
b. Start the RTSP server:
./test-launch "nvarguscamerasrc ! nvvidconv ! x264enc ! h264parse ! rtph264pay name=pay0 pt=96"
c. Connect to the stream using VLC media player with the URL:
rtsp://192.168.254.170:8554/test
-
Use Software Encoder:
Replace hardware encoders with software encoders, as Orin Nano doesn’t have hardware encoders:./test-launch "videotestsrc is-live=1 ! x264enc ! h264parse ! rtph264pay name=pay0 pt=96"
-
Check EGL Display Connection:
If encountering EGL display connection issues, try runningxinit&
andexport DISPLAY=:0
before executing the GStreamer command. -
Verify Jetpack Version:
Ensure you are using Jetpack 5.1.1 or later, as this version has been tested to work with headless camera streaming. -
Test with Fakesink:
Verify basic camera functionality without display output:gst-launch-1.0 nvarguscamerasrc ! fakesink
-
Create Test Video File:
Generate a test video file to verify camera capture:gst-launch-1.0 nvarguscamerasrc num-buffers=166 ! nvvidconv ! video/x-raw ! x264enc ! matroskamux ! filesink location=test.mkv
-
Update NVIDIA Drivers and Jetpack:
Ensure all NVIDIA drivers and Jetpack components are up to date. -
Check Camera Module Connection:
Verify that the IMX219-83 Stereo Cameras are properly connected to the CSI ports on the Orin Nano. -
Investigate X11 Configuration:
If issues persist, examine the X11 configuration files to ensure they are correctly set up for headless operation.
Remember to reboot the Orin Nano after making significant changes to ensure all modifications take effect. If problems persist after trying these solutions, consider reaching out to NVIDIA developer support for further assistance.