Jetpack 4.3 CSI Camera Support from within Containers

Hi all,

With the new release of Jetpack, Nvidia claims that “On all Jetson products: Camera Serial Interface (CSI) and NVENC are now supported from within containers.”. However, I can not see what exactly is changed in order to use CSI cameras from within the containers.

The CSV files which includes host library file paths are the same as before.
There is no argus daemon inside new base container.
No docker version changes, etc.

So, what is changed in order to support CSI cameras with containers?

I didn’t check the older CVS file but this version have include the CSI camera files.
It could be the key to support the on board camera for docker.

nvidia@nvidia-desktop:~$ cat /etc/nvidia-container-runtime/host-files-for-container.d/l4t.csv | grep -i nvargus
lib, /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvarguscamerasrc.so
lib, /usr/lib/aarch64-linux-gnu/tegra/libnvargus.so
lib, /usr/lib/aarch64-linux-gnu/tegra/libnvargus_socketclient.so
lib, /usr/lib/aarch64-linux-gnu/tegra/libnvargus_socketserver.so

Hi,

Can you please provide information regarding how to utilise the nvargus libraries? Is there a guide or programming reference?

I extracted some code snippet from samples based on libargus ( which is presumably different than libnvargus ), however, I hit the error “cant establish connection with argus” as per snippet below.

Argus::UniqueObj<Argus::CameraProvider> cameraProvider(Argus::CameraProvider::create());

Argus::ICameraProvider *iCameraProvider =
    Argus::interface_cast<Argus::ICameraProvider>(cameraProvider);

if(NULL == iCameraProvider) {
        std::cout << "cant establish connection with argus" << endl;
        return -1;
}

Many thanks

@can.nur
Does this about run argus on docker? If no please have another topic to cause confuse.

Yes, this is regarding running argus on docker container and utilizing the libraries provided from within the container.

Can you run the sample of below link?

https://github.com/NVIDIA/nvidia-docker/wiki/NVIDIA-Container-Runtime-on-Jetson

Thanks for the link - yes, I can run the samples from the link, however, the original question is not answered on the link given.

Copying from above:
Can you please provide information regarding how to utilize the nvargus libraries? Is there a guide or programming reference?
Otherwise, what methods are you suggesting for reading frames from CSI cameras from within the containers ( for example: gstreamer, argus libraries, or video for linux )?

Hi,

There is exactly no problem with the samples or anything. The problem is, docker still requires you to give extra flags and mounts when running the container to utilize the CSI camera within container.

I am still having difficulties when understanding “On all Jetson products: Camera Serial Interface (CSI) and NVENC are now supported from within containers” phrase. Because I am still doing extra steps like I do before with Jetpack 4.2.2 in order to utilize CSI camera directly within the container.

Eg. running some gstreamer camera test pipeline within the container.

Can you try launching Docker with these flags?

sudo docker run --net=host --runtime nvidia --rm --ipc=host -v /tmp/.X11-unix/:/tmp/.X11-unix/ -v /tmp/argus_socket:/tmp/argus_socket --cap-add SYS_PTRACE -e DISPLAY=$DISPLAY -it nvcr.io/nvidia/l4t-base:r32.2.1

Note the –ipc=host and -v /tmp/argus_socket:/tmp/argus_socket arguments.