DeepStream 6.4 docker image on Jetson Orin NX running JetPack 5.1.2

• Hardware Platform (Jetson / GPU): Jetson Orin NX on Advantech carrier board (MIC-711)
• DeepStream Version: 6.4 DP (docker container)
• JetPack Version (valid for Jetson only): 5.1.2
• TensorRT Version: 8.5.2.2
• Issue Type( questions, new requirements, bugs): Fails to load some DeepStream GStreamer plugins

I am running JetPack 5.1.2 (l4t 35.4.1).
As I’m using an Advantech carrier board I cannot upgrade to JP 6.0 because they still don’t have published a new BSP.

So I wanted to try DeepStream 6.4 via NGC docker image, here are the steps to run from the Jetson:

docker container run -it --rm --runtime nvidia nvcr.io/nvidia/l4t-jetpack:r36.2.0

Commands to run inside the container:

export DEBIAN_FRONTEND=noninteractive

(wget -qO - https://repo.download.nvidia.com/jetson/jetson-ota-public.asc | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/jetson-ota-public.gpg > /dev/null)
(echo 'deb [trusted=yes] https://repo.download.nvidia.com/jetson/common r36.2 main' | tee /etc/apt/sources.list.d/nvidia-l4t-apt-source.list > /dev/null)
(echo 'deb [trusted=yes] https://repo.download.nvidia.com/jetson/t234 r36.2 main' | tee -a /etc/apt/sources.list.d/nvidia-l4t-apt-source.list > /dev/null)
apt-get update

# Get missing files like libnvbufsurface.so and libnvbufsurftransform.so from nvidia-l4t-multimedia nvidia-l4t-multimedia-utils
apt-get install -y --no-install-recommends zstd
mkdir -p /l4t/multimedia
mkdir -p /l4t/multimedia-utils
cd /l4t
apt-get download nvidia-l4t-multimedia nvidia-l4t-multimedia-utils
cd /l4t/multimedia
ar x ../nvidia-l4t-multimedia_36.2.0-*_arm64.deb
tar --use-compress-program=unzstd -xvf data.tar.zst
cp -av usr/ /
cd /l4t/multimedia-utils
ar x ../nvidia-l4t-multimedia-utils_36.2.0-*_arm64.deb
tar --use-compress-program=unzstd -xvf data.tar.zst
cp -av usr/ /
cd /
rm -rf /l4t

# Disable t234 repo
sed -i 's/\(.*t234.*\)/#\1/' /etc/apt/sources.list.d/nvidia-l4t-apt-source.list
apt-get update

apt-get install -y --no-install-recommends \
    apt-transport-https \
    bash-completion \
    ca-certificates \
    curl \
    deepstream-6.4 \
    git \
    gnupg \
    gstreamer1.0-libav \
    gstreamer1.0-nice \
    gstreamer1.0-wpe \
    libgstreamer-plugins-bad1.0-dev \
    libgstrtspserver-1.0-0 \
    libgstrtspserver-1.0-dev \
    libjsoncpp-dev \
    libjsoncpp25 \
    lz4 \
    ninja-build \
    python3-pip \
    software-properties-common \
    ssh \
    ssh-askpass \
    strace \
    unzip \
    vim \
    wget
apt-get install --reinstall -y \
    gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-bad \
    gstreamer1.0-plugins-ugly \
    libswresample-dev \
    libavutil-dev \
    libavutil56 \
    libavcodec-dev \
    libavcodec58 \
    libavformat-dev \
    libavformat58 \
    libavfilter7 \
    libde265-dev \
    libde265-0 \
    libx265-199 \
    libx264-163 \
    libvpx7 \
    libmpeg2encpp-2.1-0 \
    libmpeg2-4 \
    libmpg123-0

echo '/usr/local/cuda-12.2/compat' > /etc/ld.so.conf.d/989_cuda-12-compat.conf
ldconfig

gst-inspect-1.0

The errors/warnings resulting are:

(gst-inspect-1.0:3464): GStreamer-WARNING **: 10:00:35.337: External plugin loader failed. This most likely means that the plugin loader helper binary was not found or could not be run. You might need to set the GST_PLUGIN_SCANNER environment variable if your setup is unusual. This should normally not be required though.

(gst-inspect-1.0:3464): GStreamer-WARNING **: 10:00:35.810: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_inferaudio.so': /usr/local/cuda-12.2/compat/libnvcudla.so: undefined symbol: _ZN5nvdla8IRuntime22registerTaskStatisticsE15NvDlaMemDescRec15NvDlaAccessType

(gst-inspect-1.0:3464): GStreamer-WARNING **: 10:00:35.813: 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

(gst-inspect-1.0:3464): GStreamer-WARNING **: 10:00:35.822: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_osd.so': /usr/local/cuda-12.2/compat/libnvcudla.so: undefined symbol: _ZN5nvdla8IRuntime22registerTaskStatisticsE15NvDlaMemDescRec15NvDlaAccessType

(gst-inspect-1.0:3464): GStreamer-WARNING **: 10:00:35.843: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_infer.so': /usr/local/cuda-12.2/compat/libnvcudla.so: undefined symbol: _ZN5nvdla8IRuntime22registerTaskStatisticsE15NvDlaMemDescRec15NvDlaAccessType

(gst-inspect-1.0:3464): GStreamer-WARNING **: 10:00:35.844: 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-inspect-1.0:3464): GStreamer-WARNING **: 10:00:35.857: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_deepstream_bins.so': /usr/local/cuda-12.2/compat/libnvcudla.so: undefined symbol: _ZN5nvdla8IRuntime22registerTaskStatisticsE15NvDlaMemDescRec15NvDlaAccessType
modprobe: FATAL: Module nvidia not found in directory /lib/modules/5.10.104-tegra
(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)

I don’t manage to fix the error undefined symbol: _ZN5nvdla8IRuntime22registerTaskStatisticsE15NvDlaMemDescRec15NvDlaAccessType that prevents some plugins to be loaded. I’d like to fix these errors before looking at the modprobe stuff that I think I can solve mounting a volume from the host.

I tried to look with objdump, nm and ldd, but everything seems OK.

I tried the docker image deepstream:6.4-triton-multiarch too on the Jetson, but no luck neither, I get the same errors/warnings.

Thanks for the help.

1.Please make sure jetpack 6.0 is installed correctly in host, which is a dependency of DS-6.4

2.It is recommended to use l4t image, --runtime nvidia is required

xhost +

docker run -it --rm --net=host --runtime nvidia  -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream-6.4 -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/deepstream-l4t:6.4-triton-multiarch

Thanks for the reply @junshengy,
You mean I cannot run JetPack 5.1.2 on host, and DeepStream 6.4 in a docker container on this host?
If it’s correct, do you know the reason it may not work? Some kernel stuff? (because it’s shared between host and containers) as 5.1.2 is for Ubuntu 20 and 6.0 for Ubuntu 22 and kernel are different.

Right now Advantech hasn’t released a BSP with JetPack 6.0 (only 5.1.2 is availble, Dropbox - MIC-711(D)-OX4A1 - Simplify your life) so I will have to wait…

As you said, the gpu driver is shared between the host and docker, and the GPU driver is part of JetPack.

DS-6.4 relies on the latest GPU driver.

So if you can only use JetPack 5.1.2 currently, you can use DS-6.3 first.

Ok I understand.
Unfortunately I wanted to use webrtc plugins that come with GStreamer 1.20 so my only option is to wait advantech releases a JP 6.0 BSP.

Thanks for your help.

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