how to connect a camera in docker

I use pointgrey camera and spinnaker sdk

The connection is fine in xavier host, but the following error is output in docker

$ sudo /usr/bin/SpinVeiw_QT
Invalid MIT-MAGIC-COOKIE-1 keyFatal: (null) ((null):0, QXcbConnection: Could not connect to display :1)
Aborted
$

on my personal PC, I connected to camera in docker with the above command

is your camera listed if you execute the command below?

ls /dev/video*

typically to map a camera smth. like the command below is used

--device /dev/video0

source

My camera is a usb device and the it attached to /dev/bus/usb/002

I think --device option is not a problem

Because I run docker without any difference between the docker run script’s options on the pc.

you also may need to execute

xhost +

reference
and check corresponding parameters e.g.

-v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY

you may also check a thread where a similar issue is mentioned; in the latter case they adjusted Xauthoriy which seems resolved the issue
However, it seems that your issue is not how to connect a camera, but how to map a display.

my run script already has

XSOCK=/tmp/.X11-unix
VOLUMES="–volume=$XSOCK:XSOCK:rw" ENVIRONS="-e DISPLAY={DISPLAY}"

what else does your run script have?
what code do you execute when getting the error?
could you provide the complete docker run sequence?

Hi,
For USB cameras, we support UVC driver by default. You may check this post

If the cmaera does not support UVC driver and requires additional driver, we would need community to share experience.

I use a grasshopper3 camera and support a USB3.0 cable.

Unfortunately the advice of using UVC driver is not the solution in my case.

my case’s are:

~$ v412-ctl -d /dev/video1/ --list-formats-ext
bash: v412-ctl: command not found

~$ gst-launch-1.0 v412src device=/dev/video1 | video/x-raw format=yuy2,width=848,height=480,framerate=30/1 | nvvidconv | ‘video/x-raw(memory:NVMM),format=NV12’ | nvoverlaysink
bash: video/x-raw: No such file or directory
bash: video/x-raw(memory:NVMM),format=NV12: No such file or directory
bash: nvvidconv: command not found
bash: nvoverlaysink: command not found
ERROR: pipeline could not be constructed: no element “v412src”.

oops! There was a mistake

~$ gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-raw,format=YUY2,width=848,height=480,framerate=30/1 ! nvvidconv ! ‘video/x-raw(memory:NVMM),format=NV12’ ! nvoverlaysink
WARNING: erroneous pipeline: no element “nvvidconv”

this is in my case.

Hi,
For installing/running docker, please check
https://devtalk.nvidia.com/default/topic/1070243/jetson-agx-xavier/run-glxinfo-and-glmark2-failed-inside-docker-container-on-jetson-xavier/post/5426421/#5426421

You need to install v4l-utils for executing v4l2-ctl comamnd.

$ sudo apt install v4l-utils

First, I checked for installing/running docker, but

my case is

~ sudo dpkg --get-selections | grep nvidia [sudo] password for : libnvidia-container-tools install libnvidia-container0:arm64 install nvidia-container-csv-cuda install nvidia-container-csv-cudnn install nvidia-container-csv-tensorrt install nvidia-container-csv-visionworks install nvidia-container-runtime install nvidia-container-toolkit install nvidia-docker2 install nvidia-l4t-3d-core install nvidia-l4t-apt-source install nvidia-l4t-bootloader install nvidia-l4t-camera install nvidia-l4t-ccp-t186ref install nvidia-l4t-configs install nvidia-l4t-core install nvidia-l4t-cuda install nvidia-l4t-firmware install nvidia-l4t-graphics-demos install nvidia-l4t-gstreamer install nvidia-l4t-init install nvidia-l4t-initrd install nvidia-l4t-jetson-io install nvidia-l4t-jetson-multimedia-api install nvidia-l4t-kernel install nvidia-l4t-kernel-dtbs install nvidia-l4t-kernel-headers install nvidia-l4t-multimedia install nvidia-l4t-multimedia-utils install nvidia-l4t-oem-config install nvidia-l4t-tools install nvidia-l4t-wayland install nvidia-l4t-weston install nvidia-l4t-x11 install nvidia-l4t-xusb-firmware install ~ sudo docker info | grep nvidia
Runtimes: nvidia runc

Second, v4l-utils were already installed. but,

~$ sudo v4l2-ctl -d /dev/video1 --list-formats-ext
failed to open /sys/dev/char/0:0/uevent

and

~$ sudo gst-launch-1.0 v4l2src device=/dev/video1 ! video/x-raw,format=YUY2,width=848,height=480,framerate=30/1 ! nvvidconv ! ‘video/x-raw(memory:NVMM),format=NV12’ ! nvoverlaysink
WARNING: erroneous pipeline: no element “nvvidconv”

Is there no way??

how do you run the docker container?
could you share the exact script, please?

Hi,
We have two docker packages for L4T(Jetson platforms):
https://ngc.nvidia.com/catalog/containers/nvidia:l4t-base
https://ngc.nvidia.com/catalog/containers/nvidia:deepstream-l4t
FYR and you may give it a try.