2 Csi-mipi Camera Error on Tx2

Hello ,

We have two imx415 sensors connected to Tx2 with custom board.

Cameras can work individualy but when we connect them together sometimes it works sometimes it gave errors.

These are output log from : journalctl -u nvargus-daemon.service

Feb 22 15:46:36 4-4-1 systemd[1]: Started Argus daemon.
Feb 22 15:46:38 4-4-1 startargus.sh[6852]: === NVIDIA Libargus Camera Service (0.97.3)=== Listening for connections…=== Visra[7357]: Connection established (7F80A431D0)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
Feb 22 15:46:38 4-4-1 startargus.sh[6852]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
Feb 22 15:46:38 4-4-1 startargus.sh[6852]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Feb 22 15:46:38 4-4-1 startargus.sh[6852]: NvPclHwGetModuleList: No module data found
Feb 22 15:46:38 4-4-1 startargus.sh[6852]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Feb 22 15:46:38 4-4-1 startargus.sh[6852]: NvPclHwGetModuleList: No module data found
Feb 22 15:46:38 4-4-1 startargus.sh[6852]: OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
Feb 22 15:46:38 4-4-1 startargus.sh[6852]: ---- imager: Found override file [/var/nvidia/nvcam/settings/imx415_bottom.isp]. ----
Feb 22 15:46:38 4-4-1 startargus.sh[6852]: CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
Feb 22 15:46:38 4-4-1 startargus.sh[6852]: ---- imager: Found override file [/var/nvidia/nvcam/settings/imx415_top.isp]. ----
Feb 22 15:46:38 4-4-1 startargus.sh[6852]: CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
Feb 22 15:46:44 4-4-1 startargus.sh[6852]: === Visra[7357]: CameraProvider initialized (0x7f7cccee50)CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
Feb 22 15:46:45 4-4-1 startargus.sh[6852]: NvViErrorDecode Stream 0.0 failed: ts 27104346368 frame 4318 error 4 data 0x04470200
Feb 22 15:46:45 4-4-1 startargus.sh[6852]: NvViErrorDecode CaptureError: ChanselFault (4)
Feb 22 15:46:45 4-4-1 startargus.sh[6852]: NvViErrorDecode See https://wiki.nvidia.com/wmpwiki/index.php/Camera_Debugging/CaptureError_debugging for more information and links to documents.
Feb 22 15:46:45 4-4-1 startargus.sh[6852]: ChanselFault : 0x04470200
Feb 22 15:46:45 4-4-1 startargus.sh[6852]: PIXEL_SHORT_LINE [ 9]: 1
Feb 22 15:46:45 4-4-1 startargus.sh[6852]: A line ends with fewer pixels than expected.
Feb 22 15:46:45 4-4-1 startargus.sh[6852]: Current line in frame [31:16]: 1095
Feb 22 15:46:45 4-4-1 startargus.sh[6852]:
Feb 22 15:46:45 4-4-1 startargus.sh[6852]: captureErrorCallback Stream 0.0 capture 1 failed: ts 27104346368 frame 4318 error 4 data 0x04470200
Feb 22 15:46:45 4-4-1 startargus.sh[6852]: SCF: Error BadValue: timestamp cannot be 0 (in src/services/capture/NvViCsiHw.cpp, function waitCsiFrameStart(), line 630)
Feb 22 15:46:45 4-4-1 startargus.sh[6852]: SCF: Error BadValue: (propagating from src/common/Utils.cpp, function workerThread(), line 116)
Feb 22 15:46:45 4-4-1 startargus.sh[6852]: SCF: Error BadValue: Worker thread ViCsiHw frameStart failed (in src/common/Utils.cpp, function workerThread(), line 133)
Feb 22 15:46:46 4-4-1 startargus.sh[6852]: SCF: Error Timeout: ISP port 0 timed out! (in src/services/capture/NvIspHw.cpp, function waitIspFrameEnd(), line 478)
Feb 22 15:46:50 4-4-1 startargus.sh[6852]: === Visra[7357]: Connection closed (7F80A431D0)=== Visra[7357]: WARNING: CameraProvider was not destroyed before client connection terminated.=== Visra[7357]: The client may have abnormally terminated. Destroying CameraProvider…=== Visra[7357]: CameraProvider destroyed (0x7f7cccee50)=== Visra[7357]: WARNING: Cleaning up 1 outstanding requests…=== Visra[7357]: WARNING: Cleaning up 1 outstanding streams…SCF: Error InvalidState: 1 buffers still pending during EGLStreamProducer destruction (propagating from src/services/gl/EGLStreamProducer.cpp, function freeBuffers(), line 306)
Feb 22 15:46:50 4-4-1 startargus.sh[6852]: SCF: Error InvalidState: (propagating from src/services/gl/EGLStreamProducer.cpp, function ~EGLStreamProducer(), line 50)
Feb 22 15:46:50 4-4-1 systemd[1]: Stopping Argus daemon…
Feb 22 15:46:50 4-4-1 startargus.sh[6852]: === Visra[7357]: WARNING: Cleaning up 1 outstanding stream settings…=== Visra[7357]: WARNING: Cleaning up 1 outstanding sessions…
Feb 22 15:46:50 4-4-1 systemd[1]: Stopped Argus daemon.
Feb 22 15:46:50 4-4-1 systemd[1]: Started Argus daemon.
Feb 22 15:46:56 4-4-1 startargus.sh[8079]: === NVIDIA Libargus Camera Service (0.97.3)=== Listening for connections…=== Visra[8175]: Connection established (7F7EA8B1D0)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
Feb 22 15:46:56 4-4-1 startargus.sh[8079]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
Feb 22 15:46:56 4-4-1 startargus.sh[8079]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Feb 22 15:46:56 4-4-1 startargus.sh[8079]: NvPclHwGetModuleList: No module data found
Feb 22 15:46:56 4-4-1 startargus.sh[8079]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Feb 22 15:46:56 4-4-1 startargus.sh[8079]: NvPclHwGetModuleList: No module data found
Feb 22 15:46:56 4-4-1 startargus.sh[8079]: OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
Feb 22 15:46:56 4-4-1 startargus.sh[8079]: ---- imager: Found override file [/var/nvidia/nvcam/settings/imx415_bottom.isp]. ----
Feb 22 15:46:56 4-4-1 startargus.sh[8079]: CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
Feb 22 15:46:56 4-4-1 startargus.sh[8079]: ---- imager: Found override file [/var/nvidia/nvcam/settings/imx415_top.isp]. ----
Feb 22 15:46:56 4-4-1 startargus.sh[8079]: CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
Feb 22 15:47:01 4-4-1 startargus.sh[8079]: === Visra[8175]: CameraProvider initialized (0x7f78ccecf0)CAM: serial no file already exists, skips storing againLSC: LSC surface is not based on full res!
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: SCF: Error Timeout: ISP port 0 timed out! (in src/services/capture/NvIspHw.cpp, function waitIspFrameEnd(), line 478)
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: Error: waitCsiFrameStart timeout guid 0
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: VI Stream Id = 0 Virtual Channel = 0
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: **VI Debug Registers
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: VI_CSIMUX_STAT_FRAME_0 = 0x00000000
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: VI_CSIMUX_FRAME_STATUS_0 = 0x00000000
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: VI_CFG_INTERRUPT_STATUS_0 = 0x3f000000
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: VI_ISPBUFA_ERROR_0 = 0x00000000
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: VI_FMLITE_ERROR_0 = 0x00000000
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: VI_NOTIFY_ERROR_0 = 0x00000000
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: *****************************************
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: CSI Stream Id = 0 Brick Id = 0
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: **CSI Debug Registers
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: CILA_INTR_STATUS_CILA[0x10400] = 0x0800019b
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: CILB_INTR_STATUS_CILB[0x10c00] = 0x00000198
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: INTR_STATUS[0x100a4] = 0x00010006
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: ERR_INTR_STATUS[0x100ac] = 0x00010006
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: ERROR_STATUS2VI_VC0[0x10094] = 0x00000000
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: ERROR_STATUS2VI_VC1[0x10098] = 0x00000000
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: ERROR_STATUS2VI_VC2[0x1009c] = 0x00000000
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: ERROR_STATUS2VI_VC3[0x100a0] = 0x00000000
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: *****************************************
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: SCF: Error BadValue: timestamp cannot be 0 (in src/services/capture/NvViCsiHw.cpp, function waitCsiFrameStart(), line 630)
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: SCF: Error BadValue: (propagating from src/common/Utils.cpp, function workerThread(), line 116)
Feb 22 15:47:03 4-4-1 startargus.sh[8079]: SCF: Error BadValue: Worker thread ViCsiHw frameStart failed (in src/common/Utils.cpp, function workerThread(), line 133)
Feb 22 15:47:06 4-4-1 startargus.sh[8079]: === Visra[8175]: Connection closed (7F7EA8B1D0)=== Visra[8175]: WARNING: CameraProvider was not destroyed before client connection terminated.=== Visra[8175]: The client may have abnormally terminated. Destroying CameraProvider…=== Visra[8175]: CameraProvider destroyed (0x7f78ccecf0)=== Visra[8175]: WARNING: Cleaning up 1 outstanding requests…=== Visra[8175]: WARNING: Cleaning up 1 outstanding streams…SCF: Error InvalidState: 1 buffers still pending during EGLStreamProducer destruction (propagating from src/services/gl/EGLStreamProducer.cpp, function freeBuffers(), line 306)
Feb 22 15:47:06 4-4-1 startargus.sh[8079]: SCF: Error InvalidState: (propagating from src/services/gl/EGLStreamProducer.cpp, function ~EGLStreamProducer(), line 50)

Out of 20 reboot ,17 time connect without error. 3 times connected with error or not connected at all.
After I saw error log I just restart nvargus-daemon service and try to connect camera again.

startargus.sh →
#!/bin/bash
nice -n -15 /usr/sbin/nvargus-daemon

There have two error here.

  1. PIXEL_SHORT_LINE that could be the output pixel didn’t as expect.
  2. Below error tell the ecc and crc error. Check the REG NVCSI_STREAM_0_ERR_INTR_STATUS_0 from the TRM.
    Feb 22 15:47:03 4-4-1 startargus.sh[8079]: ERR_INTR_STATUS[0x100ac] = 0x00010006

Hello ShaneCCC,

We tried to change different values in imx driver like pixel clock rate , line length etc, Still got same error. And also some times I got this error.

Jan 28 18:58:33 4-4-1 nvargus-daemon[7110]: ChanselFault : 0x08900040
Jan 28 18:58:33 4-4-1 nvargus-daemon[7110]: PIXEL_RUNAWAY [ 6]: 1
Jan 28 18:58:33 4-4-1 nvargus-daemon[7110]: At least one more line of pixels has been received than that expected. See FRAME_Y_HEIGHT register field for expected line height.
Jan 28 18:58:33 4-4-1 nvargus-daemon[7110]: Current line in frame [31:16]: 2192
Jan 28 18:58:33 4-4-1 nvargus-daemon[7110]:
Jan 28 18:58:33 4-4-1 nvargus-daemon[7110]: captureErrorCallback Stream 0.0 capture 1 failed: ts 24504627136 frame 132 error 4 data 0x08900040

The error happening %10 of trials.

  1. PIXEL_SHORT_LINE that could be the output pixel didn’t as expect. >
    I am not sure how to overcome this issue.
  2. Below error tell the ecc and crc error. Check the REG NVCSI_STREAM_0_ERR_INTR_STATUS_0 from the TRM.
    Feb 22 15:47:03 4-4-1 startargus.sh[8079]: ERR_INTR_STATUS[0x100ac] = 0x00010006 , not sure how to use this value.

Have a try below patch to disable the crc/ecc error.