Argus does not detect sensors

Good morning,
I have a commercial carrier board for Orin Nano and NX with 4 sensor camera ports configure as 2 lane camera port. At the moment I have connected only 2 ports to a custom sensor board based on Sony IMX715.
I’m using Jetpack 6.1, and sensor driver and DT overlay seems correct since I have

v4l2-ctl --list-devices
NVIDIA Tegra Video Input Device (platform:tegra-camrtc-ca):
/dev/media0

vi-output, imx715 10-001a (platform:tegra-capture-vi:1):
/dev/video0

vi-output, imx715 12-001a (platform:tegra-capture-vi:3):
/dev/video1

If I try to capture frames with
v4l2-ctl -c bypass_mode=0 --stream-mmap --stream-count=100 -d /dev/videoX
everything works correctly

If I try to capture frame using argus framework I have something strange. First of all I have the following

nvargus_nvraw --lps
nvargus_nvraw version 1.16.0
Number of supported sensor entries 1
Entry Source Mode Uniquename Resolution FR BitDepth Mode
Index Index Index CSI Dyn Type
0 0 0 dsboard_topleft_ornx 3864x2192 14 10 10 Bayer

When I run this command I have the following output to argus-deamon

=== NVIDIA Libargus Camera Service (0.99.33)=== Listening for connections…=== nvargus_nvraw[4233]: Connection established (FFFFB66CB840)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserEnumerateDriverNode: v4l2_sensor: failed to parse device-tree to driver node
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module3
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
NvPclHwGetModuleList: No module data found
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
(NvCamV4l2) Error ModuleNotPresent: V4L2Device not available (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findDevice(), line 256)
(NvCamV4l2) Error ModuleNotPresent: (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function initialize(), line 60)
(NvOdmDevice) Error ModuleNotPresent: (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 111)
NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
NvPclStartPlatformDrivers: Failed to start module drivers
NvPclStateControllerOpen: Failed ImagerGUID 0. (error 0xA000E)
NvPclOpen: PCL Open Failed. Error: 0xf
SCF: Error BadParameter: Sensor could not be opened. (in src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 725)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 455)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 382)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 554)
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
(NvOdmDevice) Error NotInitialized: hDev Table not initialized (in dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 101)
NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
NvPclStartPlatformDrivers: Failed to start module drivers
NvPclStateControllerOpen: Failed ImagerGUID 1. (error 0x3)
NvPclOpen: PCL Open Failed. Error: 0xf
SCF: Error BadParameter: Sensor could not be opened. (in src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 725)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 455)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 382)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 554)
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
(NvCamV4l2) Error ModuleNotPresent: V4L2Device not available (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findDevice(), line 256)
(NvCamV4l2) Error ModuleNotPresent: (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function initialize(), line 60)
(NvOdmDevice) Error ModuleNotPresent: (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 111)
NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
NvPclStartPlatformDrivers: Failed to start module drivers
NvPclStateControllerOpen: Failed ImagerGUID 2. (error 0xA000E)
NvPclOpen: PCL Open Failed. Error: 0xf
SCF: Error BadParameter: Sensor could not be opened. (in src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 725)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 455)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 382)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 554)
---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----
CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
=== nvargus_nvraw[4233]: CameraProvider initialized (0xffffb0abcd20)=== nvargus_nvraw[4233]: CameraProvider destroyed (0xffffb0abcd20)=== nvargus_nvraw[4233]: Connection closed (FFFFB66CB840)=== nvargus_nvraw[4233]: Connection cleaned up (FFFFB66CB840)

With Argus I’m able to see and use only one camera.

The section of DT overlay related to “tegra-camera-platform” is the following

modules {
module0 {
status = “okay”;
badge = “dsboard_bottomleft_ornx”;
position = “bottomleft”;
orientation = “1”;
drivernode0 {
status = “okay”;
pcl_id = “v4l2_sensor”;
devname = “imx715 9-001a”;
sysfs-device-tree = “/sys/firmware/devicetree/base/bus@0/i2c@3180000/pca9544a@70/i2c@0/imx715_a@1a”;
};
};
module1 {
status = “okay”;
badge = “dsboard_centerleft_ornx”;
position = “centerleft”;
orientation = “1”;
drivernode0 {
status = “okay”;
pcl_id = “v4l2_sensor”;
devname = “imx715 10-001a”;
sysfs-device-tree = “/sys/firmware/devicetree/base/bus@0/i2c@3180000/pca9544a@70/i2c@1/imx715_b@1a”;
};
};
module2 {
status = “okay”;
badge = “dsboard_centerright_ornx”;
position = “centerright”;
orientation = “1”;
drivernode0 {
status = “okay”;
pcl_id = “v4l2_sensor”;
devname = “imx715 11-001a”;
sysfs-device-tree = “/sys/firmware/devicetree/base/bus@0/i2c@3180000/pca9544a@70/i2c@2/imx715_c@1a”;
};
};
module3 {
status = “okay”;
badge = “dsboard_topleft_ornx”;
position = “topleft”;
orientation = “1”;
drivernode0 {
status = “okay”;
pcl_id = “v4l2_sensor”;
devname = “imx715 12-001a”;
sysfs-device-tree = “/sys/firmware/devicetree/base/bus@0/i2c@3180000/pca9544a@70/i2c@3/imx715_d@1a”;
};
};

Could you help me to understand the problem?

Regards

Hi @liviolima80

Sometimes when v4l2-ctl capture works but not nvargus capture, it’s because the device-tree has some errors. Could you share your device-tree?

Also, from your log it seems you are using a custom isp config file. It could be that your isp config file is does not work as expected with more than one cameras.

---- imager: Found override file [/var/nvidia/nvcam/settings/camera_overrides.isp]. ----

Could you try removing that file?

Regards,

Enrique Ramirez
Embedded SW Engineer at RidgeRun
Contact us: support@ridgerun.com
Developers wiki: https://developer.ridgerun.com
Website: www.ridgerun.com

Hi @enrique.ramirez ,
yes the isp is custom, but I have already use it in a 4-camera configuration with Orin AGX (with Jetpack 5.1.4) and 4 IMX675 cameras and it worrked.

By the way I tried to remove all the files in /var/nvidia/nvcam/settings/, reboot the board but anything changed, nvargus_nvraw detect only 1 camera.

Furthermore, this is another useful output

sudo media-ctl -p -d /dev/media0
Media controller API version 5.15.148

Media device information

driver tegra-camrtc-ca
model NVIDIA Tegra Video Input Device
serial
bus info
hw revision 0x3
driver version 5.15.148

Device topology

  • entity 1: 13e00000.host1x:nvcsi@15a00000- (2 pads, 0 link)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev0
    pad0: Sink
    pad1: Source

  • entity 4: 13e00000.host1x:nvcsi@15a00000- (2 pads, 2 links)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev1
    pad0: Sink
    ← “imx715 10-001a”:0 [ENABLED]
    pad1: Source
    → “vi-output, imx715 10-001a”:0 [ENABLED]

  • entity 7: 13e00000.host1x:nvcsi@15a00000- (2 pads, 0 link)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev2
    pad0: Sink
    pad1: Source

  • entity 10: 13e00000.host1x:nvcsi@15a00000- (2 pads, 2 links)
    type V4L2 subdev subtype Unknown flags 0
    device node name /dev/v4l-subdev3
    pad0: Sink
    ← “imx715 12-001a”:0 [ENABLED]
    pad1: Source
    → “vi-output, imx715 12-001a”:0 [ENABLED]

  • entity 13: imx715 10-001a (1 pad, 1 link)
    type V4L2 subdev subtype Sensor flags 0
    device node name /dev/v4l-subdev4
    pad0: Source
    [fmt:SRGGB10_1X10/3864x2192 field:none colorspace:srgb]
    → “13e00000.host1x:nvcsi@15a00000-”:0 [ENABLED]

  • entity 15: vi-output, imx715 10-001a (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video0
    pad0: Sink
    ← “13e00000.host1x:nvcsi@15a00000-”:1 [ENABLED]

  • entity 33: imx715 12-001a (1 pad, 1 link)
    type V4L2 subdev subtype Sensor flags 0
    device node name /dev/v4l-subdev5
    pad0: Source
    [fmt:SRGGB10_1X10/3864x2192 field:none colorspace:srgb]
    → “13e00000.host1x:nvcsi@15a00000-”:0 [ENABLED]

  • entity 35: vi-output, imx715 12-001a (1 pad, 1 link)
    type Node subtype V4L flags 0
    device node name /dev/video1
    pad0: Sink
    ← “13e00000.host1x:nvcsi@15a00000-”:1 [ENABLED]

Just to confirm, you can capture images from both /dev/video0 and /dev/video1 ?

v4l2-ctl -c bypass_mode=0 --stream-mmap --stream-count=100 -d /dev/video2
v4l2-ctl -c bypass_mode=0 --stream-mmap --stream-count=100 -d /dev/video1

According to your log, it seems that module0 is fine, but there’s a problem with module1:

OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserEnumerateDriverNode: v4l2_sensor: failed to parse device-tree to driver node
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module3

Checking your media-ctl output it looks like only the cameras on 10-001a and 12-001a are available (you connected only 2).

...
← “imx715 10-001a”:0 [ENABLED]
pad1: Source
→ “vi-output, imx715 10-001a”:0 [ENABLED]
...
← “imx715 12-001a”:0 [ENABLED]
pad1: Source
→ “vi-output, imx715 12-001a”:0 [ENABLED]
...

These match to module0 and module3. As module1 is not connected, the nvargus_nvraw may complain.

Have you tried capturing using GStreamer?

gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM), width=(int)3864, height=(int)2192,format=(string)NV12, framerate=(fraction)30/1' ! fakesink silent=false -v

gst-launch-1.0 nvarguscamerasrc sensor-id=3 ! 'video/x-raw(memory:NVMM), width=(int)3864, height=(int)2192,format=(string)NV12, framerate=(fraction)30/1' ! fakesink silent=false -v

gst-launch-1.0 nvarguscamerasrc sensor-id=2 ! 'video/x-raw(memory:NVMM), width=(int)3864, height=(int)2192,format=(string)NV12, framerate=(fraction)30/1' ! fakesink silent=false -v

gst-launch-1.0 nvarguscamerasrc sensor-id=1 ! 'video/x-raw(memory:NVMM), width=(int)3864, height=(int)2192,format=(string)NV12, framerate=(fraction)30/1' ! fakesink silent=false -v
1 Like

Hi @enrique.ramirez ,
after your comment I realized that there were some error in DT file only for module1, so I checked agin the DT and I found the problem. The part relative to sensor parameters was

i2c@3180000 {
pca9544a_70: pca9544a@70 {
status = “okay”;
force_bus_start = <CAMERA_I2C_MUX_BUS(0)>;

			i2c@0 {
				reg = <0>;
				i2c-mux,deselect-on-exit;
				imx715_a@1a { ..... }
                            };
                            i2c@1 {
				reg = <1>;
				i2c-mux,deselect-on-exit;
				imx715_a@1a { ..... }
                            };
                            i2c@2 {
				reg = <2>;
				i2c-mux,deselect-on-exit;
				imx715_c@1a { ..... }
                            };
                            i2c@3 {
				reg = <3>;
				i2c-mux,deselect-on-exit;
				imx715_d@1a { ..... }
                            };

}

so the i2c@1 module was defined as imx715_a@1a instead of imx715_b@1a. After fixing this problem everything works!
The strange thing is that v4l2 doesn’t matter about this error. If I run
v4l2-ctl -c bypass_mode=0 --stream-mmap --stream-count=100 -d /dev/video0
v4l2-ctl -c bypass_mode=0 --stream-mmap --stream-count=100 -d /dev/video1
before fix the problem, both the sensors worked

By the way, thanks for your support
Regards

Oh that’s good news!
What I have seen is that if something defined on tegra-camera-platform node is wrong, nvargus capture (using ISP) doesn’t work. However, this doesn’t affect the v4l2 raw capture which doesn’t use the ISP

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