TX2 CSI2: timeout on low resolutions with argus

Hi,

I encountered an issue with timeouts on low resolutions when using argus/nvcamerasrc.

In particular, timeouts occur when setting the mode with resolution below 640 pixels horizontally. Vertical number of pixels doesn’t affect this behavior.

V4L2 applications work with the same resolutions without an issue.

I was able to reproduce this behavior on different image sensors.

Device tree parameters are calculated the same way as the parameters for the resolutions that work. Changing the device tree parameters din’t affect this behaviour.

Is there an minimum resolution when using argus/nvcamerasrc? Or is there some other explanation of this behavior? Any explanations or debugging tips would be greatly appreciated!

Camera-daemon log snippet:

Aug 27 15:14:29 tegra-ubuntu systemd[1]: Started Argus daemon.
Aug 27 15:48:36 tegra-ubuntu argus_daemon[1896]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Aug 27 15:48:36 tegra-ubuntu argus_daemon[1896]: NvPclHwGetModuleList: No module data found
Aug 27 15:48:36 tegra-ubuntu argus_daemon[1896]: OFParserGetVirtualDevice: virtual device driver node not found in proc device-tree
Aug 27 15:48:36 tegra-ubuntu argus_daemon[1896]: OFParserGetVirtualDevice: virtual device driver node not found in proc device-tree
Aug 27 15:48:36 tegra-ubuntu argus_daemon[1896]: LoadOverridesFile: looking for override file [/Calib/camera_override.isp] 1/16LoadOverridesFile: looking for override file [/data/nvcam/settings/camera_ove
Aug 27 15:48:36 tegra-ubuntu argus_daemon[1896]: LSC: LSC surface is not based on full res!
Aug 27 15:48:36 tegra-ubuntu argus_daemon[1896]: LSC: LSC surface is not based on full res!
Aug 27 15:48:37 tegra-ubuntu argus_daemon[1896]: setControlValMultiple: Frame Length Control class inconsistent
Aug 27 15:48:37 tegra-ubuntu argus_daemon[1896]: setControlValMultiple: Gain Control class inconsistent
Aug 27 15:48:37 tegra-ubuntu argus_daemon[1896]: (NvOdmDevice) Error BadParameter: Invalid control list (in dvs/git/dirty/git-master_linux/camera-partner/imager/src/V4L2Device.cpp, function setControlValM
Aug 27 15:48:37 tegra-ubuntu argus_daemon[1896]: (NvOdmDevice) Error BadParameter:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function setDevi
Aug 27 15:48:37 tegra-ubuntu argus_daemon[1896]: updateOutputSettings: Set Control failed. Use cached values
Aug 27 15:48:37 tegra-ubuntu argus_daemon[1896]: (NvOdmDevice) Error InsufficientMemory: Cannot allocate control string (in dvs/git/dirty/git-master_linux/camera-partner/imager/src/V4L2Device.cpp, functio
Aug 27 15:48:37 tegra-ubuntu argus_daemon[1896]: SCF: Error InvalidState:  NonFatal ISO BW requested not set. Requested = 2147483647 Set = 4500000 (in src/services/power/PowerServiceCore.cpp, function set
Aug 27 15:48:45 tegra-ubuntu argus_daemon[1896]: SCF: Error InvalidState:  NonFatal ISO BW requested not set. Requested = 2147483647 Set = 4500000 (in src/services/power/PowerServiceCore.cpp, function set
Aug 27 15:48:46 tegra-ubuntu argus_daemon[1896]: SCF: Error Timeout:  (propagating from src/services/capture/CaptureServiceEvent.cpp, function wait(), line 59)
Aug 27 15:48:46 tegra-ubuntu argus_daemon[1896]: Error: Camera HwEvents wait, this may indicate a hardware timeout occured,abort current/incoming cc
Aug 27 15:48:46 tegra-ubuntu argus_daemon[1896]: SCF: Error Timeout: ISP port 2 timed out! (in src/services/capture/CaptureServiceDeviceIsp.cpp, function waitIspFrameEnd(), line 736)
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: Error: waitCsiFrameStart timeout guid 0
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: SCF: Error Timeout: VI SOF timed out! (in src/services/capture/CaptureServiceDeviceViCsi.cpp, function waitCsiFrameStart(), line 948)
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: VI Stream Id = 0 Virtual Channel = 0
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: ************VI Debug Registers**********
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: VI_CSIMUX_STAT_FRAME_0         = 0x0000001c
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: VI_CSIMUX_FRAME_STATUS_0         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: VI_CFG_INTERRUPT_STATUS_0         = 0x3f000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: VI_ISPBUFA_ERROR_0         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: VI_FMLITE_ERROR_0         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: VI_NOTIFY_ERROR_0         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: *****************************************
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: CSI Stream Id = 0 Brick Id = 0
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: ************CSI Debug Registers**********
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: CILA_INTR_STATUS_CILA[0x10400]         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: CILB_INTR_STATUS_CILB[0x10c00]         = 0x00000088
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: INTR_STATUS[0x100a4]         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: INTR_STATUS[0x100a4]         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: ERR_INTR_STATUS[0x100ac]         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: ERROR_STATUS2VI_VC0[0x10094]         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: ERROR_STATUS2VI_VC1[0x10098]         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: ERROR_STATUS2VI_VC2[0x1009c]         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: ERROR_STATUS2VI_VC3[0x100a0]         = 0x00000000
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: *****************************************
Aug 27 15:48:49 tegra-ubuntu argus_daemon[1896]: SCF: Error Timeout: Sending critical error event (in src/api/Session.cpp, function sendErrorEvent(), line 992)
Aug 27 15:48:56 tegra-ubuntu argus_daemon[1896]: SCF: Error Timeout: ISP Stats timed out! (in src/services/capture/CaptureServiceDeviceIsp.cpp, function waitIspStatsFinished(), line 785)
Aug 27 15:48:56 tegra-ubuntu argus_daemon[1896]: SCF: Error Timeout:  (propagating from src/services/capture/CaptureServiceDeviceIsp.cpp, function waitIspFrameEnd(), line 743)
Aug 27 15:48:56 tegra-ubuntu argus_daemon[1896]: SCF: Error Timeout:  (propagating from src/common/Utils.cpp, function workerThread(), line 114)
Aug 27 15:48:56 tegra-ubuntu argus_daemon[1896]: SCF: Error Timeout: Worker thread IspHw frameComplete failed (in src/common/Utils.cpp, function workerThread(), line 131)
Aug 27 15:48:56 tegra-ubuntu argus_daemon[1896]: PowerServiceCore:handleRequests: timePassed = 10943
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: Error: waitCsiFrameStart timeout guid 0
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: SCF: Error Timeout: VI SOF timed out! (in src/services/capture/CaptureServiceDeviceViCsi.cpp, function waitCsiFrameStart(), line 948)
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: VI Stream Id = 0 Virtual Channel = 0
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: ************VI Debug Registers**********
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: VI_CSIMUX_STAT_FRAME_0         = 0x000100d9
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: VI_CSIMUX_FRAME_STATUS_0         = 0x00000001
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: VI_CFG_INTERRUPT_STATUS_0         = 0x3f000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: VI_ISPBUFA_ERROR_0         = 0x00000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: VI_FMLITE_ERROR_0         = 0x00000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: VI_NOTIFY_ERROR_0         = 0x00000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: *****************************************
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: CSI Stream Id = 0 Brick Id = 0
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: ************CSI Debug Registers**********
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: CILA_INTR_STATUS_CILA[0x10400]         = 0x00000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: CILB_INTR_STATUS_CILB[0x10c00]         = 0x00000088
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: INTR_STATUS[0x100a4]         = 0x00000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: INTR_STATUS[0x100a4]         = 0x00000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: ERR_INTR_STATUS[0x100ac]         = 0x00000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: ERROR_STATUS2VI_VC0[0x10094]         = 0x00000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: ERROR_STATUS2VI_VC1[0x10098]         = 0x00000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: ERROR_STATUS2VI_VC2[0x1009c]         = 0x00000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: ERROR_STATUS2VI_VC3[0x100a0]         = 0x00000000
Aug 27 15:48:57 tegra-ubuntu argus_daemon[1896]: *****************************************

dmesg.txt (65.8 KB)

Hi dominik,
What is the failing resolution? Which sensor do you use?

Hi,

initial resolution that failed was 508x1520.

Other resolutions that produce the same error:

  • 508x508
  • 512x512
  • 520x512
  • 620x512
  • 632x512

Some of the resolution that work fine:

  • 640x512
  • 692x520
  • 1680x1050

I tested on two different IMX sensors.

To reiterate, all failed resolutions work with an V4L2 application, but cause argus_camera example to freeze.

It’s could be the ISP can’t support the size small than 640. What’s your case need the resolution > 640?

Hi,

it would be very helpful if existance of this limitation could be officially confirmed or denied.

I haven’t found any mention of this limitation in the docs.

Hi dominik,
For your usecase, we suggest you get 640x480 from Argus and downscale to smaller size via NvVideoConverter or NvBuffer APIs.