Hi,
I am trying to run the software sample_camera_gmsl inside the docker on the PX2. Outside the docker the sample is working fine.
This is how I run the docker:
#!/bin/bash
XAUTH=/tmp/.docker.xauth
docker run -it --rm --net=host \
--device=/dev/nvhost-ctrl --device=/dev/nvhost-ctrl-gpu --device=/dev/nvhost-prof-gpu --device=/dev/nvmap --device=/dev/nvhost-gpu --device=/dev/nvhost-as-gpu --device /dev/nvgpu-pci \
-v /usr/local/driveworks:/usr/local/driveworks -v /usr/local/driveworks-1.2:/usr/local/driveworks-1.2 -v /usr/lib/pkgconfig/driveworks.pc:/usr/lib/pkgconfig/driveworks.pc -v /etc/tacp:/etc/tacp \
-v /usr/local/cuda:/usr/local/cuda -v /usr/local/cuda-9.2:/usr/local/cuda-9.2 \
-v /home/nvidia/catkin_ws:/home/$USER/catkin_ws \
-v /usr/lib/libcuda.so.1:/usr/lib/libcuda.so.1 $(\ls /usr/lib/libnv* | xargs -I{} echo '-v {}:{}') $(\ls /usr/lib/aarch64-linux-gnu/libnv* | xargs -I{} echo '-v {}:{}') $(\ls /usr/lib/aarch64-linux-gnu/libcudnn* | xargs -I{} echo '-v {}:{}') \
-v /usr/lib/libEGL.so.1:/usr/lib/libEGL.so.1 \
-v /home/nvidia/docker/:/test \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
-v /home/$USER/.Xauthority:/home/$USER/.Xauthority:rw \
-e "XAUTHORITY=${XAUTH}" \
-v $XAUTH:$XAUTH -e XAUTHORITY=$XAUTH \
-e "DISPLAY=${DISPLAY}" -e QT_X11_NO_MITSHM=1 -e QT_GRAPHICSSYSTEM=native \
--privileged \
test:arm \
In the host I execute the following command:
xhost +local:root
Inside the docker I added the cuda libraries to the path:
export PATH=/usr/local/cuda-9.2/bin:$PATH && export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda/lib64
And this is the error that I get running the sample:
root@tegra-ubuntu:/usr/local/driveworks/bin# ./sample_camera_gmsl
[3-5-2019 3:30:25] Initialize DriveWorks SDK v1.2.400
[3-5-2019 3:30:25] Release build with GNU 4.9.4 from v1.2.0-rc11-0-ga7f5475 against Vibrante PDK v5.0.10.3
[3-5-2019 3:30:25] Platform: Detected Drive PX2 - Tegra A
[3-5-2019 3:30:25] TimeSource: monotonic epoch time offset is 1556820641028436
[3-5-2019 3:30:25] TimeSource: PTP ioctl returned error. Synchronized time will not be available.
[3-5-2019 3:30:25] TimeSource: Could not detect valid PTP time source at 'eth0'. Fallback to CLOCK_MONOTONIC.
[3-5-2019 3:30:25] Platform: number of GPU devices detected 2
[3-5-2019 3:30:25] Platform: currently selected GPU device discrete ID 0
[3-5-2019 3:30:25] SDK: Resources mounted from .././data/resources
[3-5-2019 3:30:25] SDK: Create NvMediaDevice
[3-5-2019 3:30:25] SDK: Create NvMediaIPPManager
[3-5-2019 3:30:25] SDK: use EGL display as provided
[3-5-2019 3:30:25] SensorFactory::createSensor() -> camera.gmsl, output-format=yuv,fifo-size=3,camera-type=ar0231-rccb-bae-sf3324,csi-port=a,slave=0
[3-5-2019 3:30:25] CameraGMSL: required FPS = 30, resolution = 1920x1208
nvmedia isc: IscPwrCtrlLoadLib: 932: Failed to load power control lib
iscRootDevOpen: Failed to load power control lib
NvMediaISCRootDeviceCreate: Unable to open root device
nvmedia: ERROR: Init: Failed to create NvMedia ISC root device
[3-5-2019 3:30:25] Driveworks exception thrown: DW_SAL_CANNOT_CREATE_SENSOR: CameraGMSL: cannot connect to camera
terminate called after throwing an instance of 'std::runtime_error'
what(): [2019-05-03 03:30:25] DW Error DW_SAL_CANNOT_CREATE_SENSOR executing DW function:
dwSAL_createSensor(&m_camera, params, m_sal)
at /builds/driveav/dw/sdk/samples/sensors/camera_gmsl/main.cpp:153
Aborted (core dumped)
Have you any suggestion to solve this problem?
Thanks!