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.