it seems that, using v4l2, intr_cphy_edge_delay_cal_done_trio0_a bit was set after calibration
but using gst-launch(argus), no calibration was done in trace
device tree for camera below camera.dtsi (25.4 KB)
using v4l2-ctl, if cil_settletime is not set, auto calibration will be done. T_HS settle and T_CLK settle will be auto calculated in RCE and canbe seen in trace. So v4l2 is ok.
using gst-launch(with argus) T_HS settle and T_CLK settle may not be automatically set by RCE. Especially for T_CLK settle, there is even no way to edit it.
I’m not certain the root cause at the monent.
however, please try applying this scf pre-built for a quick testing.
i.e. r3521_deskew_libnvscf.7z (1.6 MB)
that’s correct deskew is only for DPHY to calibration skew between lanes.
but… could you please have a quick test? since there’s also fixes to revise the init sequence.
should i also use L4T 35.2.1 first?
The L4T version i use now is 35.1.
Replacing the shared lib /usr/lib/aarch64-linux-gnu/tegra/libnvscf.so with the attachment you gave will cause “undefined symbol” problem
After upgrading to 35.2.1 and replacing libnvscf.so with the attachment, the problem remains the same. For cphy mode, V4l2-ctl is OK.
gst-launch still does not work. Trace below
nvargus-daemon log is as follows. this kill & restart ops was always done.
=== gst-launch-1.0[2473]: Connection established (FFFF827A5900)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
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/ar0820_bottom_0070.isp]. ----
CAM: serial no file already exists, skips storing again---- imager: Found override file [/var/nvidia/nvcam/settings/ar0820_top_0030.isp]. ----
CAM: serial no file already exists, skips storing again---- imager: No override file found. ----
(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 107)
NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
NvPclStartPlatformDrivers: Failed to start module drivers
NvPclDriver_V4L2_Focuser_Stub_Close: Invalid NULL input pPclDriver
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 677)
SCF: Error BadParameter: (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 453)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 333)
SCF: Error BadParameter: (propagating from src/api/CameraDriver.cpp, function getSource(), line 505)
=== gst-launch-1.0[2473]: CameraProvider initialized (0xffff7c6950f0)SCF: Error BadValue: NvPHSSendThroughputHints (in src/common/CameraPowerHint.cpp, function sendCameraPowerHint(), line 56)
root@tnt:/home/tnt/debugc# SCF: Error Timeout: (propagating from src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 617)
SCF: Error Timeout: (propagating from src/common/Utils.cpp, function workerThread(), line 114)
SCF: Error Timeout: Worker thread ViCsiHw frameComplete failed (in src/common/Utils.cpp, function workerThread(), line 133)
SCF: Error InvalidState: Timeout waiting on frame start sensor guid 0, capture sequence ID = 0 (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 531)
SCF: Error InvalidState: (propagating from src/common/Utils.cpp, function workerThread(), line 114)
SCF: Error InvalidState: Worker thread ViCsiHw frameStart failed (in src/common/Utils.cpp, function workerThread(), line 133)
could you please also share the debug rce-fw for r3521?
but if using v4l2-ctl, it’s already ok to receive the raw12 image.
And i can verify with 7yuv, that the received raw12 image is correct.
According to trace for gst-launch(with argus plugin)
kworker/10:2-157 [010] … 178.331497: rtcpu_nvcsi_intr: tstamp:8895283999 class:CORRECTABLE_ERR type:PHY_INTR phy:0 cil:1 st:0 vc:0 status:0x00000080
Bit 7 is set, which means intr_cil_data_lane_ctrl_err1_a
It’s a LP / HS transition issue, right?
So maybe the init sequence for argus or v4l2 is not the same? but v4l2 is more robust?
I use the cvm from jetson agx orin developer kit, and put it on our custom board.
Our custom board use the lane mapping compatible for BOTH DPHY and CPHY.
In DPHY mode, use default lane polarity. Everything works, both v4l2-ctl and gst-launch.
In CPHY mode, now only v4l2-ctl works
The mipi-csi TX side is the Deserializer max96712.
For CPHY mode, I have also tried both 3 trios and 4 trios.
The error trace is the same. (with v4l2-ctl works)