ZED SDK Installation Fails in Docker on JetPack 6.1 (nvargus-daemon Error)

I am attempting to install the ZED SDK on my Jetson device running JetPack 6.1 in a Docker container, but the installation fails with the following error:

sed: can't read /etc/systemd/system/nvargus-daemon.service: No such file or directory

While this service exists on my host system, it seems to be inaccessible or missing inside the Docker container. Despite the script displaying ZED SDK installation complete!, the SDK is not installed, and I cannot proceed.

System Information:

  • JetPack Version: 6.1 (L4T 36.4)
  • CUDA Version: 12.6
  • SDK Version: ZED SDK 4.2
  • Base OS (Host): Ubuntu 22.04 (arm64)
  • Container Base Image: NVIDIA L4T Base Image (arm64)

Installation Steps:

  1. Installed all dependencies inside the Docker container using apt-get.
  2. Downloaded the ZED SDK installation file (ZED_SDK_Linux.run) to /tmp in the container.
  3. Ran the installation command inside the Docker container:
sudo -u admin ./ZED_SDK_Linux.run silent skip_od_module skip_python skip_drivers
  1. Encountered the error about the missing nvargus-daemon.service.

Observations:

  • The file /etc/systemd/system/nvargus-daemon.service exists on the host system but is not available inside the Docker container.
  • This may be causing the ZED SDK installation script to fail.

Questions:

  1. How can I resolve the nvargus-daemon.service issue in the Docker environment?
  2. Do I need to mount additional host files or services into the container to make this work?

Additional Context:

I followed the Docker setup guidelines provided in the NVIDIA Isaac ROS documentation and included the following steps in the Dockerfile:

I install from ISAAC ROS Repo with

# Based on https://github.com/stereolabs/zed-docker

# Download dependencies for zed SDK installation RUN file
sudo apt-get update -y || true
sudo apt-get install --no-install-recommends lsb-release wget less zstd udev sudo apt-transport-https -y

# Download zed SDK installation RUN file to /tmp directory
cd /tmp

wget -q --no-check-certificate -O ZED_SDK_Linux.run +wget -q --no-check-certificate -O ZED_SDK_Linux.run https://download.stereolabs.com/zedsdk/4.2/l4t36.4/jetsons
sudo chmod 777 ./ZED_SDK_Linux.run
sudo -u admin ./ZED_SDK_Linux.run silent skip_od_module skip_python skip_drivers
# Symlink required to use the streaming features on Jetson inside a container, based on
# https://github.com/stereolabs/zed-docker/blob/fd514606174d8bb09f21a229f1099205b284ecb6/4.X/l4t/devel/Dockerfile#L27C5-L27C95
sudo ln -sf /usr/lib/aarch64-linux-gnu/tegra/libv4l2.so.0 /usr/lib/aarch64-linux-gnu/libv4l2.so

# Cleanup
sudo rm -rf /usr/local/zed/resources/*
rm -rf ZED_SDK_Linux.run
sudo rm -rf /var/lib/apt/lists/*
:/workspaces/isaac_ros-dev$ sudo chmod +x ${ISAAC_ROS_WS}/src/isaac_ros_common/docker/scripts/install-zed-aarch64.sh && \
${ISAAC_ROS_WS}/src/isaac_ros_common/docker/scripts/install-zed-aarch64.sh
Hit:1 http://ports.ubuntu.com/ubuntu-ports jammy InRelease
Get:2 http://ports.ubuntu.com/ubuntu-ports jammy-updates InRelease [128 kB]                                                                 
Hit:3 https://repo.download.nvidia.com/jetson/common r36.4 InRelease                                                                        
Hit:4 http://packages.ros.org/ros2/ubuntu jammy InRelease                                                                                   
Hit:5 https://isaac.download.nvidia.com/isaac-ros/release-3 jammy InRelease                                                                 
Hit:6 http://ports.ubuntu.com/ubuntu-ports jammy-backports InRelease                                                                        
Hit:7 https://deb.nodesource.com/node_18.x nodistro InRelease                                                                               
Hit:8 https://dl.yarnpkg.com/debian stable InRelease                                                                                        
Get:9 http://ports.ubuntu.com/ubuntu-ports jammy-security InRelease [129 kB]                                    
Hit:10 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/arm64  InRelease         
Hit:11 https://repo.download.nvidia.com/jetson/t234 r36.4 InRelease                                 
Hit:12 https://ppa.launchpadcontent.net/mosquitto-dev/mosquitto-ppa/ubuntu jammy InRelease
Get:13 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted arm64 Packages [2,805 kB]
Get:14 http://ports.ubuntu.com/ubuntu-ports jammy-security/multiverse arm64 Packages [24.2 kB]
Get:15 http://ports.ubuntu.com/ubuntu-ports jammy-security/main arm64 Packages [2,227 kB]
Fetched 5,313 kB in 6s (903 kB/s)                            
Reading package lists... Done
W: https://repo.download.nvidia.com/jetson/common/dists/r36.4/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: https://isaac.download.nvidia.com/isaac-ros/release-3/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: https://dl.yarnpkg.com/debian/dists/stable/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
W: https://repo.download.nvidia.com/jetson/t234/dists/r36.4/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
lsb-release is already the newest version (11.1.0ubuntu4).
zstd is already the newest version (1.4.8+dfsg-3build1).
zstd set to manually installed.
less is already the newest version (590-1ubuntu0.22.04.3).
less set to manually installed.
sudo is already the newest version (1.9.9-1ubuntu2.4).
udev is already the newest version (249.11-0ubuntu3.12).
wget is already the newest version (1.21.2-2ubuntu1.1).
apt-transport-https is already the newest version (2.4.13).
0 upgraded, 0 newly installed, 0 to remove and 42 not upgraded.
Verifying archive integrity...  100%   MD5 checksums are OK. All good.
Uncompressing 'ZED camera SDK by Stereolabs (Use 'sudo apt install zstd' if zstd is not found)'  100%  
WARNING: unknown parameter "skip_drivers" (ignored)
USAGE: 
        -h --help
        --silent
        --runtime_only
        --skip_tools
        --skip_cuda
        --skip_od_module
        --skip_python
        --skip_hub

L4T version 36.4 detected. OK
Installation path: /usr/local/zed
Checking CUDA version...
OK: Found CUDA 12.6
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libjpeg-turbo8 is already the newest version (2.1.2-0ubuntu1).
libjpeg-turbo8 set to manually installed.
libpng-dev is already the newest version (1.6.37-3build5).
libpng-dev set to manually installed.
libv4l-0 is already the newest version (1.22.1-2build1).
freeglut3-dev is already the newest version (2.8.1-6).
libglew-dev is already the newest version (2.2.0-4).
libglew-dev set to manually installed.
libopenblas-dev is already the newest version (0.3.20+ds-1).
libqt5svg5 is already the newest version (5.15.3-1).
libqt5svg5 set to manually installed.
libturbojpeg is already the newest version (2.1.2-0ubuntu1).
qtchooser is already the newest version (66-2build1).
qtchooser set to manually installed.
curl is already the newest version (7.81.0-1ubuntu1.20).
libarchive-dev is already the newest version (3.6.0-1ubuntu1.3).
libusb-1.0-0 is already the newest version (2:1.0.25-1ubuntu2).
libusb-1.0-0 set to manually installed.
libusb-1.0-0-dev is already the newest version (2:1.0.25-1ubuntu2).
libusb-1.0-0-dev set to manually installed.
unzip is already the newest version (6.0-26ubuntu3.2).
zlib1g is already the newest version (1:1.2.11.dfsg-2ubuntu9.2).
libqt5opengl5 is already the newest version (5.15.3+dfsg-2ubuntu0.2).
libqt5opengl5 set to manually installed.
qt5-qmake is already the newest version (5.15.3+dfsg-2ubuntu0.2).
qt5-qmake set to manually installed.
qtbase5-dev is already the newest version (5.15.3+dfsg-2ubuntu0.2).
qtbase5-dev set to manually installed.
qtbase5-dev-tools is already the newest version (5.15.3+dfsg-2ubuntu0.2).
qtbase5-dev-tools set to manually installed.
The following additional packages will be installed:
  mesa-utils-bin
The following NEW packages will be installed:
  mesa-utils mesa-utils-bin
0 upgraded, 2 newly installed, 0 to remove and 42 not upgraded.
Need to get 1,117 kB of archives.
After this operation, 2,418 kB of additional disk space will be used.
Get:1 http://ports.ubuntu.com/ubuntu-ports jammy/universe arm64 mesa-utils-bin arm64 8.4.0-1ubuntu1 [52.2 kB]
Get:2 http://ports.ubuntu.com/ubuntu-ports jammy/universe arm64 mesa-utils arm64 8.4.0-1ubuntu1 [1,065 kB]
Fetched 1,117 kB in 1s (1,729 kB/s)   
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78, <> line 2.)
debconf: falling back to frontend: Readline
Selecting previously unselected package mesa-utils-bin:arm64.
(Reading database ... 168386 files and directories currently installed.)
Preparing to unpack .../mesa-utils-bin_8.4.0-1ubuntu1_arm64.deb ...
Unpacking mesa-utils-bin:arm64 (8.4.0-1ubuntu1) ...
Selecting previously unselected package mesa-utils.
Preparing to unpack .../mesa-utils_8.4.0-1ubuntu1_arm64.deb ...
Unpacking mesa-utils (8.4.0-1ubuntu1) ...
Setting up mesa-utils-bin:arm64 (8.4.0-1ubuntu1) ...
Setting up mesa-utils (8.4.0-1ubuntu1) ...
Processing triggers for man-db (2.10.2-1) ...
W: --force-yes is deprecated, use one of the options starting with --allow instead.
Running in chroot, ignoring request.
Running in chroot, ignoring request.
sed: can't read /etc/systemd/system/nvargus-daemon.service: No such file or directory

ZED SDK installation complete !

Any assistance or insights on resolving this issue would be greatly appreciated!

Hi @ba2sakal , I’m having the exact same issue.
However, the SDK seems to be installed properly afterwards: I see the ZED_* utility commands and the ROS2 ZED packages can find the ZED SDK and I can compile them.

Hi,

The ZED SDK installer is misleading, the skip_driver option was missing and the installer tries to set up the driver in the container and doesn’t find the expected resources. This will be addressed in a future patch. The error messages can be ignored.

Here’s a doc page that should clarify the situation: How to use ZED X with Docker - Stereolabs

→ The driver must be installed on the host, only
→ The container requires several volumes to be mounted to have a working ZED X from docker

@adujardin thanks! That’s nice to know it is that error can be ignored! I hope the patch will be released soon!

@ba2sakal , I think we are using the same setup (only one camera on my side though and no display connected to the Jetson) I’m struggling a lot at trying to get the zed_camera.launch.py running as admin and I get it working only as root. Are you able to run the lauchfile as admin?

@beniaminopozzan
Yes, from the Docker container, if I don’t execute the launch file with sudo or use Docker as the root user, I can’t initialize the cameras either. I believe the issue is that the zedx_daemon.service runs as root, and the cameras can’t access it without the necessary permissions. I haven’t been able to get it working with an admin user either.

For my setup, I also don’t usually use a screen, but for testing and diagnosing problems, you’ll need to, as many issues can’t be resolved through SSH alone.

By the way, are you experiencing the same bad-quality image problem that I am?

“glad” it is not an isolated issue then.

I don’t think that’s the entire reason though: I don’t need sudo if I run it outside docker.

No, the image quality is good, I’m using a single ZED X One GS

I believe it is due to Admin access capabilities. I use the container directly as root as I understand it shouldn’t create a problem.