• 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.