Display Camera Feed Directly via DP Port on Jetson Without GUI

I am working on a project using a Jetson device, and I want to display the live feed from a camera directly through the DisplayPort (DP) without showing the GUI or desktop environment. The goal is to have the camera feed automatically displayed on the connected monitor as soon as the DP cable is plugged in, without booting into a graphical interface.

  1. How can I disable the GUI (desktop environment) and have the Jetson directly display the camera feed via DP?
  2. Is nvdrmvideosink the right approach for this, or are there alternative methods to achieve this functionality?
  3. What configurations are needed (e.g., xrandr settings, GStreamer pipelines, or other methods) to ensure the DP port directly outputs the camera feed?
    I use to ımx219 camera.
    Any guidance, examples, or configurations would be greatly appreciated! Thank you in advance for your help.
    @DaneLLL

Hi,
Please use nvdrmvideosink. There are examples in

Accelerated GStreamer — NVIDIA Jetson Linux Developer Guide 1 documentation

If you use RPi camera v2, you can try like:

$ gst-launch-1.0 nvarguscamerasrc ! nvvidconv ! 'video/x-raw(memory:NVMM)'  ! nvdrmvideosink sync=0

Thank you for your reply
I can run my imx camera with this pipeline:gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! ‘video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, format=(string)NV12, framerate=(fraction)30/1’ ! nvvidconv ! queue ! xvimagesink
, but when I run it I get the following error:
gst-launch-1.0 nvarguscamerasrc ! nvvidconv ! ‘video/x-raw(memory:NVMM)’ ! nvdrmvideosink sync=0
Setting pipeline to PAUSED …
Could not open DRM failed
ERROR: Pipeline doesn’t want to pause.
ERROR: from element /GstPipeline:pipeline0/GstNvDrmVideoSink:nvdrmvideosink0: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Additional debug info:
gstbasesink.c(5367): gst_base_sink_change_state (): /GstPipeline:pipeline0/GstNvDrmVideoSink:nvdrmvideosink0:
Failed to start
Setting pipeline to NULL …
Freeing pipeline …
I would be very happy if you could help me with what should I do for the above error? Thank you in advance for your help.

Hi,
If you use the default rootfs which has Ubuntu desktop, please disable it and load DRM driver.

I have made the installation from scratch for the Orin NX with A603 board and installed Jetpack 5.1.2, but when I do the HDMI operation, I am encountering a different problem this time. Can you help me? @DaneLLL
The error I get is below:
"libEGL warning: DRI3: failed to query the version
libEGL warning: DRI2: failed to authenticate
Setting pipeline to PAUSED …
Pipeline is live and does not need PREROLL …
Setting pipeline to PLAYING …
New clock: GstSystemClock
GST_ARGUS: Creating output stream
(Argus) Error BadParameter: (propagating from src/eglstream/FrameConsumerImpl.cpp, function initialize(), line 89)
(Argus) Error BadParameter: (propagating from src/eglstream/FrameConsumerImpl.cpp, function create(), line 44)
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadInitialize:320 Failed to create FrameConsumer
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, threadFunction:241 (propagating)
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, waitRunning:203 Invalid thread state 3
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:806 (propagating)
Got EOS from element “pipeline0”.
Execution ended after 0:00:00.154106635
Setting pipeline to NULL …
Freeing pipeline …
" While I get this error while transferring the imx camera to hdmi, I can transfer a loaded video to hdmi.

I realized that the source of this problem was that I made my ssh connection with -X. I do not get this error in a normal ssh connection.

Hello, I have an imx219 camera and I am processing images on this camera. I want to transfer this processed image via HDMI. I prepared a code for this and it was working, but when I tried again after changing the board of my jetson, I got an error. code: “gstreamer_pipeline = (
“nvarguscamerasrc sensor-id=0 ! "
“video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, format=(string)NV12, framerate=(fraction)10/1 !”
“nvvidconv !”
“video/x-raw, format=(string)NV12 !”
“videoconvert !”
“appsink”
)
hdmi_pipeline = (
“appsrc !”
“videoconvert !”
“nvvidconv !”
“nvdrmvideosink set_mode=0 -e”
)
cap = cv2.VideoCapture(gstreamer_pipeline, cv2.CAP_GSTREAMER)
out = cv2.VideoWriter(hdmi_pipeline, cv2.CAP_GSTREAMER, 0, 30, (1280, 720), True)
if not cap.isOpened():
print(“Camera could not be opened”)
else:
while True:
ret, frame = cap.read()
if not ret:
print(“Image could not be obtained from camera”)
break
results = model(frame)
annotated_frame = results[0].plot() # Annotated frame
out.write(annotated_frame)
"
error:”[ WARN:0@1.562] global cap_gstreamer.cpp:2436 open OpenCV | GStreamer warning: error opening writer pipeline: syntax error”
it gives this error so the image is not going to hdmi.
This terminal code works:gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! ‘video/x-raw(memory:NVMM), format=(string)NV12, framerate=(fraction)30/1’ ! nvvidconv ! queue ! nvdrmvideosink set_mode=0 -e
I don’t know why it gives a syntax error for this pipeline. Can you help me with this?

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.