V4l2loopback dummy usb cameras don't work on ORIN while working on Host

Please provide the following info (tick the boxes after creating this topic):
Software Version
DRIVE OS 6.0.6
DRIVE OS 6.0.5
DRIVE OS 6.0.4 (rev. 1)
DRIVE OS 6.0.4 SDK
other

Target Operating System
Linux
QNX
other

Hardware Platform
DRIVE AGX Orin Developer Kit (940-63710-0010-300)
DRIVE AGX Orin Developer Kit (940-63710-0010-200)
DRIVE AGX Orin Developer Kit (940-63710-0010-100)
DRIVE AGX Orin Developer Kit (940-63710-0010-D00)
DRIVE AGX Orin Developer Kit (940-63710-0010-C00)
DRIVE AGX Orin Developer Kit (not sure its number)
other

SDK Manager Version
1.9.3.10904
other

Host Machine Version
native Ubuntu Linux 20.04 Host installed with SDK Manager
native Ubuntu Linux 20.04 Host installed with DRIVE OS Docker Containers
native Ubuntu Linux 18.04 Host installed with DRIVE OS Docker Containers
other

Hello,

We have a setup running v4l2loopback to create dummy USB cameras, which can receive custom images.

On x86 the setup works, and DriveWorks can create a sensor with the v4l2loopback camera device (for example with sample_camera_usb

Sadly on the ORIN DevKit this setup leads to the following error, while being fine on the host system.
The v4l2loopback cameras do work, since they display the images we’d like to use in DriveWorks, on a website which can test different webcam devices.

What could be the reason for the error? The Camera has the format 800x600, the sample is changed to create a 800x600 window to render the camera image.

Tahnks for looking into.

sudo ./sample_camera_usb --device 6
ProgramArguments: Missing argument 'dwTracePath' requested
[01-09-2023 13:04:47] Platform: Detected Drive Orin P3710
[01-09-2023 13:04:47] TimeSource: monotonic epoch time offset is 1693561297048705
[01-09-2023 13:04:47] TimeSourceVibranteLinux: detect valid PTP interface mgbe2_0
[01-09-2023 13:04:47] TimeSource Nvpss : PTP ioctl returned error. Synchronized time will not be available from this timesource.
[01-09-2023 13:04:47] TimeSource: Could not detect valid PTP time source at nvpps. Fallback to mgbe2_0
[01-09-2023 13:04:47] PTP Time is available from Eth Driver
[01-09-2023 13:04:47] Platform: currently selected GPU device integrated ID 0
[01-09-2023 13:04:47] Context::mountResourceCandidateDataPath resource FAILED to mount from './resources': VirtualFileSystem: Failed to mount './resources/resources.pak'
[01-09-2023 13:04:47] Context::mountResourceCandidateDataPath resource FAILED to mount from '/home/nvidia/apps/data': VirtualFileSystem: Failed to mount '/home/nvidia/apps/data/resources.pak'
[01-09-2023 13:04:47] Context::mountResourceCandidateDataPath resource FAILED to mount from '/usr/local/driveworks/data': VirtualFileSystem: Failed to mount '/usr/local/driveworks/data/resources.pak'
[01-09-2023 13:04:47] Context::mountResourceCandidateDataPath resource FAILED to mount from '/usr/local/driveworks-5.8/data': VirtualFileSystem: Failed to mount '/usr/local/driveworks-5.8/data/resources.pak'
[01-09-2023 13:04:47] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks/lib/libdw_base.so.5.8
[01-09-2023 13:04:47] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks-5.8/targets/aarch64-Linux/lib/libdw_base.so.5.8
[01-09-2023 13:04:47] SDK: No resources(.pak) mounted, some modules will not function properly
[01-09-2023 13:04:47] SDK: Create NvMediaDevice
[01-09-2023 13:04:47] SDK: use EGL display as provided
[01-09-2023 13:04:47] TimeSource: monotonic epoch time offset is 1693561297048705
[01-09-2023 13:04:47] TimeSourceVibranteLinux: detect valid PTP interface mgbe2_0
[01-09-2023 13:04:47] TimeSource Nvpss : PTP ioctl returned error. Synchronized time will not be available from this timesource.
[01-09-2023 13:04:47] TimeSource: Could not detect valid PTP time source at nvpps. Fallback to mgbe2_0
[01-09-2023 13:04:47] PTP Time is available from Eth Driver
[01-09-2023 13:04:47] Initialize DriveWorks SDK v5.8.82
[01-09-2023 13:04:47] Release build with GNU 9.3.0 from buildbrain-branch-0-g33d6f4a1440 against Drive PDK v6.0.5.0
[01-09-2023 13:04:47] SensorFactory::createSensor() -> time.nvpps, nvpps-device=/dev/nvpps0
[01-09-2023 13:04:47] TimeSensor: initialized with no UTC time reference.
[01-09-2023 13:04:47] EndpointNVPPS: started on /dev/nvpps0
[01-09-2023 13:04:47] Initialize DriveWorks VisualizationSDK v5.8.82
[01-09-2023 13:04:47] Initialize DriveWorksGL SDK v5.8.82
[01-09-2023 13:04:47] SensorFactory::createSensor() -> camera.usb, device=6,mode=0
[01-09-2023 13:04:47] CameraV4L: Device does not support user pointer i/o.

[01-09-2023 13:04:47] CameraV4L: Pool size reduced from 8 to 2.
[01-09-2023 13:04:47] CameraV4L: initialized in READ mode
[01-09-2023 13:04:47] Driveworks exception thrown: DW_SAL_CANNOT_CREATE_SENSOR: CameraV4L: Could not initialize resources(Invalid argument)


terminate called after throwing an instance of 'std::runtime_error'
  what():  [2023-09-01 13:04:47] DW Error DW_SAL_CANNOT_CREATE_SENSOR executing DW function:
 dwSAL_createSensor(&m_camera, params, m_sal)

cropped output of ll /dev

crw-rw----+  1 root   video       81,   0 Sep  1 11:37 video0
crw-rw----+  1 root   video       81,   1 Sep  1 11:37 video1
crw-rw----+  1 root   video       81,   2 Sep  1 11:38 video6
crw-rw----+  1 root   video       81,   3 Sep  1 11:38 video7

On Host

/usr/local/driveworks/bin/sample_camera_usb --device 6
ProgramArguments: Missing argument 'dwTracePath' requested
[01-09-2023 13:17:11] Platform: Detected Generic x86 Platform
[01-09-2023 13:17:11] TimeSource: monotonic epoch time offset is 1693535343915321
[01-09-2023 13:17:11] Adding variable DW_Base:DW_Version
[01-09-2023 13:17:11] Addded variable DW_Base:DW_Version
[01-09-2023 13:17:11] Platform: number of GPU devices detected 1
[01-09-2023 13:17:11] Platform: currently selected GPU device 0, Resource Data Dir: trt_08_04_12_05, Arch: tu1xx-discrete
[01-09-2023 13:17:11] Platform: currently selected GPU device discrete ID 0
[01-09-2023 13:17:11] Context::mountResourceCandidateDataPath resource FAILED to mount from './resources': VirtualFileSystem: Failed to mount './resources/resources.pak'
[01-09-2023 13:17:11] Context::mountResourceCandidateDataPath resource FAILED to mount from '/home/chrtuch/data': VirtualFileSystem: Failed to mount '/home/chrtuch/data/resources.pak'
[01-09-2023 13:17:11] Context::findDataRootInPathWalk data/DATA_ROOT found at: /usr/local/driveworks-5.8/bin/../data
[01-09-2023 13:17:11] Context::mountResourceCandidateDataPath resource FAILED to mount from '/usr/local/driveworks-5.8/bin/../data': VirtualFileSystem: Failed to mount '/usr/local/driveworks-5.8/bin/../data/resources.pak'
[01-09-2023 13:17:11] Context::findDataRootInPathWalk data/DATA_ROOT found at: /usr/local/driveworks-5.8/data
[01-09-2023 13:17:11] Context::mountResourceCandidateDataPath resource FAILED to mount from '/usr/local/driveworks-5.8/data': VirtualFileSystem: Failed to mount '/usr/local/driveworks-5.8/data/resources.pak'
[01-09-2023 13:17:11] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks-5.8/bin/../lib/libdw_base.so.5.8
[01-09-2023 13:17:11] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks-5.8/targets/x86_64-Linux/lib/libdw_base.so.5.8
[01-09-2023 13:17:11] SDK: No resources(.pak) mounted, some modules will not function properly
[01-09-2023 13:17:11] TimeSource: monotonic epoch time offset is 1693535343915321
[01-09-2023 13:17:11] Initialize DriveWorks SDK v5.8.82
[01-09-2023 13:17:11] Release build with GNU 9.3.0 from buildbrain-branch-0-g33d6f4a1440
[01-09-2023 13:17:11] Initialize DriveWorks VisualizationSDK v5.8.82
[01-09-2023 13:17:11] Initialize DriveWorksGL SDK v5.8.82
[01-09-2023 13:17:11] GL-SDK: initialize OpenGL
[01-09-2023 13:17:11] SensorFactory::createSensor() -> camera.usb, device=6,mode=0
[01-09-2023 13:17:11] CameraBase: pool size set to 8

The expected image is displayed.

Hello, is there anything, which could help me. Since this is an undocumented error in the DriveWorks SDK, I am unable to find a solution on my own.

Dear @christopher.tuch,
Per my understanding after inspecting code path, it is not a supported on target and hence hitting issue. I am yet to get confirmation from core team. Thanks for reminder.

Hi @SivaRamaKrishnaNV

Thanks for your response, will this be supported maybe in the future? The v4l2loopback dummy cameras do work on target - as I said on a website, which can test webcams. It seems strange to me that the v4l2loopback dummy cameras work on x86 in DriveWorks, but not on the ORIN DevKit.

Kind regards.

Dear @christopher.tuch,
We have released DRIVE OS 6.0.8.1 on DevZone. Could you give a try with recent release. There are few known issues with usb cameras in last release.

1 Like

Thanks @SivaRamaKrishnaNV

I’ll give it a try!

So, after flashing 6.0.8.1 and adjusting cross compilation pipeline, the sample_camera_usb (compiled with default toolchain) cannot show the video from the v4l2loopback camera, on the other hand the website webcamtest shows the expected video on the ORIN board.

Dear @christopher.tuch,
Do you see the same error with sample_camera_usb?

yes same error as above (where I used DriveOS 6.0.5)

sudo ./sample_camera_usb --device 6
[sudo] password for nvidia: 
ProgramArguments: Missing argument 'dwTracePath' requested
[17-10-2023 10:37:16] Platform: Detected Drive Orin P3710
[17-10-2023 10:37:16] Adding variable DW_Base:DW_Version
[17-10-2023 10:37:16] Added variable DW_Base:DW_Version
[17-10-2023 10:37:16] Platform: number of GPU devices detected 1
[17-10-2023 10:37:16] Platform: currently selected GPU device 0, Resource Data Dir: trt_08_06_10_03, Arch: ga10b
[17-10-2023 10:37:16] Platform: currently selected GPU device integrated ID 0
[17-10-2023 10:37:16] CUDLAEngine:getDLACount: CUDLA version is = 1004000
[17-10-2023 10:37:16] CUDLAEngine:getDLACount: Number of DLA devices = 2
[17-10-2023 10:37:16] Context::mountResourceCandidateDataPath resource FAILED to mount from './resources': VirtualFileSystem: Failed to mount './resources/resources.pak'
[17-10-2023 10:37:16] Context::mountResourceCandidateDataPath resource FAILED to mount from '/home/nvidia/apps/samples-6-0-8-1/data': VirtualFileSystem: Failed to mount '/home/nvidia/apps/samples-6-0-8-1/data/resources.pak'
[17-10-2023 10:37:16] Context::findDataRootInPathWalk data/DATA_ROOT found at: /usr/local/driveworks/data
[17-10-2023 10:37:16] Context::mountResourceCandidateDataPath resource FAILED to mount from '/usr/local/driveworks/data': VirtualFileSystem: Failed to mount '/usr/local/driveworks/data/resources.pak'
[17-10-2023 10:37:16] Context::findDataRootInPathWalk data/DATA_ROOT found at: /usr/local/driveworks-5.14/data
[17-10-2023 10:37:16] Context::mountResourceCandidateDataPath resource FAILED to mount from '/usr/local/driveworks-5.14/data': VirtualFileSystem: Failed to mount '/usr/local/driveworks-5.14/data/resources.pak'
[17-10-2023 10:37:16] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks/lib/libdw_base.so.5.14
[17-10-2023 10:37:16] Context::findResourcesPackageInPathWalk: Could not find ./resources/resources.pak in upto 7 parent directories from /usr/local/driveworks-5.14/targets/aarch64-Linux/lib/libdw_base.so.5.14
[17-10-2023 10:37:16] SDK: No resources(.pak) mounted, some modules will not function properly
[17-10-2023 10:37:16] SDK: use EGL display as provided
[17-10-2023 10:37:16] [17-10-2023 10:37:16] Initialize DriveWorks SDK v5.14.74
[17-10-2023 10:37:16] [17-10-2023 10:37:16] Release build with GNU 9.3.0 from buildbrain-branch-0-g30b7ba5bb0c against Drive PDK v6.0.8.0
[17-10-2023 10:37:16] SensorFactory::createSensor() -> time.nvpps, nvpps-device=/dev/nvpps0
[17-10-2023 10:37:16] Found driver: time.nvpps
[17-10-2023 10:37:16] TimeSensor: failed to set NVPPS parameters.  Error: Invalid argument
[17-10-2023 10:37:16] This platform does not support NVPPS GPIO mode. Fallback to timer mode
[17-10-2023 10:37:16] TimeSensor: initialized with no UTC time reference.
[17-10-2023 10:37:16] SensorFactory: Override default timeSensor with the user passed one
[17-10-2023 10:37:16] EndpointNVPPS: started on /dev/nvpps0
[17-10-2023 10:37:16] Initialize DriveWorks VisualizationSDK v5.14.74
[17-10-2023 10:37:16] Initialize DriveWorksGL SDK v5.14.74
[17-10-2023 10:37:16] SensorFactory::createSensor() -> camera.usb, device=6,mode=0
[17-10-2023 10:37:16] Found driver: camera.usb
[17-10-2023 10:37:16] CameraBase: pool size set to 8
[17-10-2023 10:37:16] CameraV4L: Device does not support user pointer i/o.

[17-10-2023 10:37:16] CameraV4L: Pool size reduced from 8 to 2.
[17-10-2023 10:37:16] CameraV4L: initialized in READ mode
[17-10-2023 10:37:16] Driveworks exception thrown: DW_SAL_CANNOT_CREATE_SENSOR: CameraV4L: Could not initialize resources(Invalid argument)


terminate called after throwing an instance of 'std::runtime_error'
  what():  [2023-10-17 10:37:16] DW Error DW_SAL_CANNOT_CREATE_SENSOR executing DW function:
 dwSAL_createSensor(&m_camera, params, m_sal)
 at /usr/local/driveworks/samples/src/sensors/camera/camera_usb/main.cpp:127
Aborted

This is the error log running sample camera usb, while the devices work in the firefox.

Dear @christopher.tuch,
As clarified in V4l2loopback dummy usb cameras don't work on ORIN while working on Host - #6 by SivaRamaKrishnaNV V4l2loopback is not supported. Please consider using USB cameras.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.