no CUDA-capable device is detected and gstreamer warnings

Hi everyone,

We are running into some issues with the cuda support and the gstreamer packages for the docker base image “balenalib/jetson-xavier-nx-devkit-ubuntu:bionic”

We installed cuda 10.2 and cudatoolkit 10.2 based on L4T 32.4.4.

When I try to run an application that needs cuda and gstreamer support, we get the following errors/warnings:

[cuda] no CUDA-capable device is detected (error 100) (hex 0x64)
(gst-plugin-scanner:28): GStreamer-WARNING **: 10:48:33.067: Failed to load plugin ‘/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvcompositor.so’: libgstbadvideo-1.0.so.0: cannot open shared object file: No such file or directory

I am not sure how to approach this problem since with the container from nvidia we where not running into these problems.

Any help is appreciated.

Thanks

FROM balenalib/jetson-xavier-nx-devkit-ubuntu:bionic
# Don't prompt with any configuration questions
ENV DEBIAN_FRONTEND noninteractive
# Install CUDA, CUDA samples and some utilities
RUN sed -i 's/r32 main/r32.4 main/g' /etc/apt/sources.list.d/nvidia.list
RUN \
    apt-get update && apt-get install -y cuda-toolkit-10.2 cuda-samples-10.2 \
    lbzip2 xorg wget tar python3 libegl1

ENV UDEV=1
# Download and install BSP binaries for L4T 32.4.4
RUN apt-get update && apt-get install -y wget tar lbzip2 python3 libegl1 && \
    wget https://developer.nvidia.com/embedded/L4T/r32_Release_v4.4/r32_Release_v4.4-GMC3/T210/Tegra210_Linux_R32.4.4_aarch64.tbz2 && \       
    tar xf Tegra210_Linux_R32.4.4_aarch64.tbz2 && \
    cd Linux_for_Tegra && \
    sed -i 's/config.tbz2\"/config.tbz2\" --exclude=etc\/hosts --exclude=etc\/hostname/g' apply_binaries.sh && \
    sed -i 's/install --owner=root --group=root \"${QEMU_BIN}\" \"${L4T_ROOTFS_DIR}\/usr\/bin\/\"/#install --owner=root --group=root \"${QEMU_BIN}\" \"${L4T_ROOTFS_DIR}\/usr\/bin\/\"/g' nv_tegra/nv-apply-debs.sh && \
    sed -i 's/LC_ALL=C chroot . mount -t proc none \/proc/ /g' nv_tegra/nv-apply-debs.sh && \
    sed -i 's/umount ${L4T_ROOTFS_DIR}\/proc/ /g' nv_tegra/nv-apply-debs.sh && \
    sed -i 's/chroot . \//  /g' nv_tegra/nv-apply-debs.sh && \
    ./apply_binaries.sh -r / --target-overlay && cd .. \
    rm -rf Tegra210_Linux_R32.4.4_aarch64.tbz2 && \
    rm -rf Linux_for_Tegra && \
    echo "/usr/lib/aarch64-linux-gnu/tegra" > /etc/ld.so.conf.d/nvidia-tegra.conf && ldconfig
WORKDIR /usr/local/cuda-10.2/samples/bin/aarch64/linux/release


Hey there,

Looking at your dockerfile, it does seem it is based on the example here. I believe you have seen our guide for nvidia devices?

In the example I linked, the samples are being built individually. Are you building the samples? Can you provide more details about your docker compose file? Are you using one and if so, is the container privileged?

The error message suggests some missing dependencies, perhas you can try to manually install the gstreamer-1.0 dependencies?

Hope this helps

Thanks