Deepstream docker orin - Need help getting a working system up

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) Jetson AGX Orin development kit
• DeepStream Version 6.4
• JetPack Version (valid for Jetson only) 6.0DP
• TensorRT Version8.6.2.3
• NVIDIA GPU Driver Version (valid for GPU only)
• Issue Type( questions, new requirements, bugs)
Questions
• How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing)
• Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)

Looking for help running demo application on docker image nvcr.io/nvidia/deepstream:6.4-samples-multiarch.
I am running this headless.

Launch with sudo docker run -it --rm --runtime=nvidia --privileged -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix nvcr.io/nvidia/deepstream:6.4-samples-multiarch

gst-inspect-1.0 -b gives

(gst-plugin-scanner:40): GStreamer-WARNING **: 11:41:57.480: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstmpeg2enc.so': libmpeg2encpp-2.1.so.0: cannot open shared object file: No such file or directory

(gst-plugin-scanner:40): GStreamer-WARNING **: 11:41:57.525: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstmpeg2dec.so': libmpeg2.so.0: cannot open shared object file: No such file or directory

(gst-plugin-scanner:40): GStreamer-WARNING **: 11:41:57.632: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstchromaprint.so': libavcodec.so.58: cannot open shared object file: No such file or directory

(gst-plugin-scanner:40): GStreamer-WARNING **: 11:41:57.637: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstmpg123.so': libmpg123.so.0: cannot open shared object file: No such file or directory

(gst-plugin-scanner:40): GStreamer-WARNING **: 11:41:57.695: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstopenmpt.so': libmpg123.so.0: cannot open shared object file: No such file or directory

Also tried sudo docker run -it --rm --runtime=nvidia --privileged -e DISPLAY=:0 -v /tmp/.X11-unix:/tmp/.X11-unix -v /usr/lib/aarch64-linux-gnu/:/usr/lib/aarch64-linux-gnu/ nvcr.io/nvidia/deepstream:6.4-samples-multiarch
I did install outside of the container.

sudo apt install \
libssl3 \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstreamer-plugins-base1.0-dev \
libgstrtspserver-1.0-0 \
libjansson4 \
libyaml-cpp-dev
# gst-inspect-1.0 -b

(gst-plugin-scanner:39): GStreamer-WARNING **: 11:44:18.664: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstmpeg2enc.so': libmpeg2encpp-2.1.so.0: cannot open shared object file: No such file or directory

(gst-plugin-scanner:39): GStreamer-WARNING **: 11:44:18.704: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstmpeg2dec.so': libmpeg2.so.0: cannot open shared object file: No such file or directory

(gst-plugin-scanner:39): GStreamer-WARNING **: 11:44:18.796: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstchromaprint.so': libavcodec.so.58: cannot open shared object file: No such file or directory

(gst-plugin-scanner:39): GStreamer-WARNING **: 11:44:18.801: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstmpg123.so': libmpg123.so.0: cannot open shared object file: No such file or directory

(gst-plugin-scanner:39): GStreamer-WARNING **: 11:44:18.853: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstopenmpt.so': libmpg123.so.0: cannot open shared object file: No such file or directory
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
nvbufsurftransform: Could not get EGL display connection
(Argus) Error FileOperationFailed: Connecting to nvargus-daemon failed: No such file or directory (in src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 204)
(Argus) Error FileOperationFailed: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 106)

(gst-plugin-scanner:39): GStreamer-WARNING **: 11:44:18.988: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_inferserver.so': libtritonserver.so: cannot open shared object file: No such file or directory

(gst-plugin-scanner:39): GStreamer-WARNING **: 11:44:18.994: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_udp.so': librivermax.so.0: cannot open shared object file: No such file or directory
Blacklisted files:
  libcustom2d_preprocess.so
  libgstchromaprint.so
  libgstmpeg2dec.so
  libgstmpeg2enc.so
  libgstmpg123.so
  libgstopenmpt.so
  libnvdsgst_inferserver.so
  libnvdsgst_udp.so

Total count: 8 blacklisted files

Also tried using install scripts.

root@ad3fae1ddbb9:/opt/nvidia/deepstream/deepstream-6.4# ./install.sh 
root@ad3fae1ddbb9:/opt/nvidia/deepstream/deepstream-6.4# ./user_additional_install.sh 

Install goes fine. New gst-inspect-1.0 -b results

root@ad3fae1ddbb9:/opt/nvidia/deepstream/deepstream-6.4# gst-inspect-1.0 -b
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
nvbufsurftransform: Could not get EGL display connection
(Argus) Error FileOperationFailed: Connecting to nvargus-daemon failed: No such file or directory (in src/rpc/socket/client/SocketClientDispatch.cpp, function openSocketConnection(), line 204)
(Argus) Error FileOperationFailed: Cannot create camera provider (in src/rpc/socket/client/SocketClientDispatch.cpp, function createCameraProvider(), line 106)

(gst-plugin-scanner:622): GStreamer-WARNING **: 11:45:53.491: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_inferserver.so': libtritonserver.so: cannot open shared object file: No such file or directory

(gst-plugin-scanner:622): GStreamer-WARNING **: 11:45:53.497: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_udp.so': librivermax.so.0: cannot open shared object file: No such file or directory
Blacklisted files:
  libcustom2d_preprocess.so
  libnvdsgst_inferserver.so
  libnvdsgst_udp.so

Total count: 3 blacklisted files

Try running sample app in this manner

root@ad3fae1ddbb9:/opt/nvidia/deepstream/deepstream-6.4/samples# deepstream-app -c configs/deepstream-app/source2_1080p_dec_infer-resnet_demux_int8.txt 
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
nvbufsurftransform: Could not get EGL display connection

(deepstream-app:636): GLib-GObject-WARNING **: 11:46:25.251: g_object_set_is_valid_property: object class 'nvv4l2h264enc' has no property named 'gpu-id'

(deepstream-app:636): GLib-GObject-WARNING **: 11:46:25.271: g_object_set_is_valid_property: object class 'nvv4l2h264enc' has no property named 'gpu-id'
Authorization required, but no authorization protocol specified
Opening in BLOCKING MODE 
Opening in BLOCKING MODE 
WARNING: Deserialize engine failed because file path: /opt/nvidia/deepstream/deepstream-6.4/samples/configs/deepstream-app/../../models/Primary_Detector/resnet18_trafficcamnet.etlt_b2_gpu0_int8.engine open error
0:00:06.467978928   636 0xaaaaeaf7c430 WARN                 nvinfer gstnvinfer.cpp:679:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Warning from NvDsInferContextImpl::deserializeEngineAndBackend() <nvdsinfer_context_impl.cpp:2080> [UID = 1]: deserialize engine from file :/opt/nvidia/deepstream/deepstream-6.4/samples/configs/deepstream-app/../../models/Primary_Detector/resnet18_trafficcamnet.etlt_b2_gpu0_int8.engine failed
0:00:06.827435616   636 0xaaaaeaf7c430 WARN                 nvinfer gstnvinfer.cpp:679:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Warning from NvDsInferContextImpl::generateBackendContext() <nvdsinfer_context_impl.cpp:2185> [UID = 1]: deserialize backend context from engine from file :/opt/nvidia/deepstream/deepstream-6.4/samples/configs/deepstream-app/../../models/Primary_Detector/resnet18_trafficcamnet.etlt_b2_gpu0_int8.engine failed, try rebuild
...............................
0:02:31.716192248   636 0xaaaaeaf7c430 INFO                 nvinfer gstnvinfer.cpp:682:gst_nvinfer_logger:<primary_gie> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::buildModel() <nvdsinfer_context_impl.cpp:2138> [UID = 1]: serialize cuda engine to file: /opt/nvidia/deepstream/deepstream-6.4/samples/models/Primary_Detector/resnet18_trafficcamnet.etlt_b2_gpu0_int8.engine successfully
INFO: [Implicit Engine Info]: layers num: 3
0   INPUT  kFLOAT input_1         3x544x960       
1   OUTPUT kFLOAT output_bbox/BiasAdd 16x34x60        
2   OUTPUT kFLOAT output_cov/Sigmoid 4x34x60         

Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
Authorization required, but no authorization protocol specified
nvbufsurface: Could not get EGL display connection
nvbufsurface: Can't get EGL display
0:02:32.109741508   636 0xaaaaeaf7c430 WARN                 nvinfer gstnvinfer.cpp:994:gst_nvinfer_start:<primary_gie> error: Failed to set buffer pool to active
** ERROR: <main:716>: Failed to set pipeline to PAUSED
Quitting
ERROR from primary_gie: Failed to set buffer pool to active
Debug info: /dvs/git/dirty/git-master_linux/deepstream/sdk/src/gst-plugins/gst-nvinfer/gstnvinfer.cpp(994): gst_nvinfer_start (): /GstPipeline:pipeline/GstBin:primary_gie_bin/GstNvInfer:primary_gie
App run failed

I see that in the config files we can change sink to be 1=FakeSink, 2=EglSink, 3=File.

Very novice in gstreamer but I understand the concept of pipeline, source and sink. Been trying many different things.

Please provide some guidance to get to something working headless with docker image? Thank you

If your board is not connected to a monitor, you can try running the following command first.

unset DISPLAY

sudo docker run -it --rm --runtime=nvidia --privileged -v /tmp/.X11-unix:/tmp/.X11-unix -v /usr/lib/aarch64-linux-gnu/:/usr/lib/aarch64-linux-gnu/ nvcr.io/nvidia/deepstream:6.4-samples-multiarch

Thank you for the hint.

Didn’t have to unset it. Just took out -e DISPLAY=:0 That fixed it to a point where app runs through successfully. I did verify that $DISPLAY is empty for both inside and outside the container.

**PERF:  FPS 0 (Avg)    FPS 1 (Avg)
**PERF:  0.00 (0.00)    0.00 (0.00)
** INFO: <bus_callback:301>: Pipeline ready

Opening in BLOCKING MODE 
Opening in BLOCKING MODE 
NvMMLiteOpen : Block : BlockType = 261 
NvMMLiteOpen : Block : BlockType = 261 
NvMMLiteBlockCreate : Block : BlockType = 261 
NvMMLiteBlockCreate : Block : BlockType = 261 
** INFO: <bus_callback:287>: Pipeline running

NvMMLiteOpen : Block : BlockType = 4 
===== NvVideo: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4 
NvMMLiteOpen : Block : BlockType = 4 
===== NvVideo: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4 
H264: Profile = 66, Level = 0 
H264: Profile = 66, Level = 0 
NVMEDIA: Need to set EMC bandwidth : 846000 
NVMEDIA: Need to set EMC bandwidth : 846000 
NvVideo: bBlitMode is set to TRUE 
NvVideo: bBlitMode is set to TRUE 
**PERF:  34.07 (34.00)  34.07 (34.00)
**PERF:  30.34 (32.13)  30.34 (32.13)
**PERF:  29.81 (31.33)  29.81 (31.33)
**PERF:  30.00 (30.99)  30.00 (30.99)
**PERF:  29.86 (30.75)  29.86 (30.75)
**PERF:  30.00 (30.62)  30.00 (30.62)
**PERF:  30.14 (30.56)  30.14 (30.56)
**PERF:  29.87 (30.47)  29.87 (30.47)
**PERF:  29.99 (30.41)  29.99 (30.41)
nvstreammux: Successfully handled EOS for source_id=0
nvstreammux: Successfully handled EOS for source_id=1
** INFO: <bus_callback:324>: Received EOS. Exiting ...

Quitting
App run successful

May I continue the next step questions?

With your hint, we got a pre-compiled application to run with model provided in container. Next desirable thing is to run a sample Python application.

I took these steps (Deepstream with python bindings - #13 by junshengy) to get gi installed and pyds installed. Modified from v1.1.10 updated dependency from deepstream_python_apps/bindings/README.md at v1.1.10 · NVIDIA-AI-IOT/deepstream_python_apps · GitHub. Then, installed the hosted pyds (https://github.com/NVIDIA-AI-IOT/deepstream_python_apps/releases/download/v1.1.10/pyds-1.1.10-py3-none-linux_aarch64.whl)

I git checkout that repo and check out v1.1.10 tag since that I am on 6.4 and not 7 yet. And got blocked at running deepstream-test1

root@64358075a76b:/opt/nvidia/deepstream/deepstream-6.4/sources/deepstream_python_apps/apps/deepstream-test1# python3 deepstream_test_1.py /opt/nvidia/deepstream/deepstream-6.4/samples/streams/sa
mple_720p.mp4                                                                                                                                                                                      
                                                                                                                                                                                                   
(gst-plugin-scanner:1742): GStreamer-WARNING **: 03:14:15.432: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_inferserver.so': libtritonserver.so: cannot op
en shared object file: No such file or directory                                                                                                                                                   
                                                                                                                                                                                                   
(gst-plugin-scanner:1742): GStreamer-WARNING **: 03:14:15.435: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_udp.so': librivermax.so.0: cannot open shared 
object file: No such file or directory                                                                                                                                                             
Creating Pipeline                                                                                                                                                                                  
                                                                                                                                                                                                   
Creating Source                                                                                                                                                                                    
                                                                                                                                                                                                   
Creating H264Parser                                                                                                                                                                                
                                                                                                                                                                                                   
Creating Decoder                                                                                                                                                                                   
                                                                                                                                                                                                   
Creating nv3dsink                                                                                                                                                                                  
                                                                                                                                                                                                   
Playing file /opt/nvidia/deepstream/deepstream-6.4/samples/streams/sample_720p.mp4                                                                                                                 
Adding elements to Pipeline                                                                                                                                                                        
                                                                                                                                                                                                   
Linking elements in the Pipeline                                                                                                                                                                   
                                                                                                                                                                                                   
/opt/nvidia/deepstream/deepstream-6.4/sources/deepstream_python_apps/apps/deepstream-test1/deepstream_test_1.py:220: DeprecationWarning: Gst.Element.get_request_pad is deprecated                 
  sinkpad = streammux.get_request_pad("sink_0")                                                                                                                                                    
Starting pipeline                                                                                                                                                                                  
                                                                                                                                                                                                   
Error: gst-core-error-quark: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure. (4): ../libs/gst/base/gstbasesink.c(5878)
: gst_base_sink_change_state (): /GstPipeline:pipeline0/GstNv3dSink:nv3d-sink:                                                                                                                     
Failed to start

I checked gst-inspect-1.0 nv3dsink Other than the same warning sign about librivermax and libtritonserver. It produce normal looking output. Please advise.

Many thanks in advanced.

Deepstream_test_1.py cannot support the mp4 file. It can only support h264 file. You can use the /opt/nvidia/deepstream/deepstream-6.4/samples/streams/sa mple_720p.h264.

root@64358075a76b:/opt/nvidia/deepstream/deepstream-6.4/sources/deepstream_python_apps/apps/deepstream-test1# rm -rf ~/.cache/gstreamer-1.0/
root@64358075a76b:/opt/nvidia/deepstream/deepstream-6.4/sources/deepstream_python_apps/apps/deepstream-test1# python3 deepstream_test_1.py /opt/nvidia/deepstream/deepstream-6.4/samples/streams/sample_720p.h264
........[same probably unrelated warning as before]
Playing file /opt/nvidia/deepstream/deepstream-6.4/samples/streams/sample_720p.h264 
Adding elements to Pipeline 

Linking elements in the Pipeline 

/opt/nvidia/deepstream/deepstream-6.4/sources/deepstream_python_apps/apps/deepstream-test1/deepstream_test_1.py:220: DeprecationWarning: Gst.Element.get_request_pad is deprecated
  sinkpad = streammux.get_request_pad("sink_0")
Starting pipeline 

Error: gst-core-error-quark: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure. (4): ../libs/gst/base/gstbasesink.c(5878): gst_base_sink_change_state (): /GstPipeline:pipeline0/GstNv3dSink:nv3d-sink:
Failed to start

Appreciate the quick response. Good to know that only .h264 is allowed. However, I have the same error on nv3d-sink.

Nv3d-sink is used to display the image. Since your board is not connected to a monitor, you can not use that plugin.
We suggest you taking a brief look at our plug-ins and their fundamentals by referring to the Guide.

Excellent. Thanks for letting me know that. I was able to make the application run by making a fakesink.

--- a/apps/deepstream-test1/deepstream_test_1.py
+++ b/apps/deepstream-test1/deepstream_test_1.py
@@ -181,7 +181,8 @@ def main(args):
     # Finally render the osd output
     if is_aarch64():
         print("Creating nv3dsink \n")
-        sink = Gst.ElementFactory.make("nv3dsink", "nv3d-sink")
+        sink = Gst.ElementFactory.make("fakesink", "sinkname")
+        # sink = Gst.ElementFactory.make("nv3dsink", "nv3d-sink")
         if not sink:
             sys.stderr.write(" Unable to create nv3dsink \n")
     else:
1 Like