Hi,
I’m currently investigating on an issue we face every once in a while.
The main setup is a Jetson TX2-NX, Jetpack 4.6, a custom carrier board, and three cameras connected via CSI.
Two of the cameras are accessed via video4linux. The other camera (IMX415) is accessed via a GStreamer pipeline and nvarguscamerasrc, which sometimes seem causes errors. Example:
gst-launch-1.0 nvarguscamerasrc sensor-id=2 ! "video/x-raw(memory:NVMM),format=NV12,width=1920,height=1080,framerate=25/1" ! nvvidconv ! fpsdisplaysink video-sink=fakesink -v
Every once in a while, an error occurs when the pipeline is started after booting up the device (occurrence is around 3-5%). The error can be resolved by restarting the nvargus-dameon with systemctl restart nvargus-daemon.service
.
Has anyone an idea what causes this error and how it can be avoided?
What I have already investigated:
- I dumped the camera registers in the error case and compared them to the normal case. They don’t seem to be different. Therefore, it should not be an issue with the camera configuration.
- I have measured the CSI signals with an oscilloscope, since the nvargus-log includes some CSI errors. Unfortunately, I don’t have hardware to decode the signals. Therefore, I can only tell that something is sent via CSI in both cases, but not if the data is valid.
- I have compared the boot-logs, and they don’t show any issues in the error case.
GStreamer output in the error case, with the above-mentioned pipeline and debug flags for nvargusscamerasrc enabled:
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstFakeSink:fakesink0: sync = true
0:00:01.117092837 5166 0x5570d124a0 DEBUG nvarguscamerasrc gstnvarguscamerasrc.cpp:1468:gst_nv_argus_camera_set_caps:<nvarguscamerasrc0> Received caps video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)25/1
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstNvArgusCameraSrc:nvarguscamerasrc0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)25/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)25/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:src: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)25/1
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)25/1
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstTextOverlay:fps-display-text-overlay.GstPad:src: caps = video/x-raw(memory:NVMM, meta:GstVideoOverlayComposition), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)25/1
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstFakeSink:fakesink0.GstPad:sink: caps = video/x-raw(memory:NVMM, meta:GstVideoOverlayComposition), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)25/1
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstTextOverlay:fps-display-text-overlay.GstPad:video_sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)25/1
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0.GstGhostPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)25/1
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)25/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)25/1
0:00:05.126719265 5166 0x5570d1a190 DEBUG nvarguscamerasrc gstnvarguscamerasrc.cpp:1796:consumer_thread:<nvarguscamerasrc0>consumer_thread: stop_requested=1
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3840 x 2160 FR = 31.700001 fps Duration = 31545740 ; Analog Gain range min 1.000000, max 3981.070801; Exposure Range min 1000, max 1000000000;
GST_ARGUS: 3840 x 2160 FR = 31.700001 fps Duration = 31545740 ; Analog Gain range min 1.000000, max 3981.070801; Exposure Range min 1000, max 1000000000;
GST_ARGUS: Running with following settings:
Camera index = 2
Camera mode = 1
Output Stream W = 3840 H = 2160
seconds to Run = 0
Frame Rate = 31.700001
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
nvbuf_utils: Can not get HW buffer from FD... Exiting...
CONSUMER: Done Success
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstFakeSink:fakesink0: sync = true
Got EOS from element "pipeline0".
Execution ended after 0:00:04.010506895
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
0:01:21.765592050 5166 0x5570d1a140 DEBUG nvarguscamerasrc gstnvarguscamerasrc.cpp:1667:argus_thread:<nvarguscamerasrc0> argus_thread: stop_requested=1
GST_ARGUS: Cleaning up
GST_ARGUS: Done Success
Setting pipeline to NULL ...
Freeing pipeline ...
0:01:21.767361779 5166 0x5570b7caa0 DEBUG nvarguscamerasrc gstnvarguscamerasrc.cpp:2201:gst_nv_argus_camera_src_finalize:<nvarguscamerasrc0> finalize
(Argus) Error Timeout: (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
(Argus) Error InvalidState: Argus client is exiting with 2 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 357)
Output of jounalctl -u nvargus-daemon.service
in the error case:
Mar 14 16:01:19 jetson-tx2 systemd[1]: Started Argus daemon.
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: === NVIDIA Libargus Camera Service (0.98.3)=== Listening for connections...=== gst-launch-1.0[5168]: Connection established (7FA670F1D0)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module2
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: NvPclHwGetModuleList: No module data found
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: NvPclHwGetModuleList: No module data found
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: NvPclHwGetModuleList: No module data found
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: ---- imager: No override file found. ----
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: LSC: LSC surface is not based on full res!
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: ---- imager: No override file found. ----
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: LSC: LSC surface is not based on full res!
Mar 14 16:01:22 jetson-tx2 nvargus-daemon[4425]: ---- imager: Found override file [/var/nvidia/nvcam/settings/sla_center_imx415.isp]. ----
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: CAM: serial no file already exists, skips storing again=== gst-launch-1.0[5168]: CameraProvider initialized (0x7fa0ca22d0)CAM: serial no file already exists, skips storing againSCF: Error Timeout: ISP port 0 timed out
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: Error: waitCsiFrameStart timeout guid 2
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: VI Stream Id = 4 Virtual Channel = 0
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: ************VI Debug Registers**********
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: VI_CSIMUX_STAT_FRAME_16 = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: VI_CSIMUX_FRAME_STATUS_0 = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: VI_CFG_INTERRUPT_STATUS_0 = 0x3f000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: VI_ISPBUFA_ERROR_0 = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: VI_FMLITE_ERROR_0 = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: VI_NOTIFY_ERROR_0 = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: *****************************************
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: CSI Stream Id = 4 Brick Id = 2
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: ************CSI Debug Registers**********
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: CILA_INTR_STATUS_CILA[0x30400] = 0x080001d9
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: CILB_INTR_STATUS_CILB[0x30c00] = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: INTR_STATUS[0x300a4] = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: ERR_INTR_STATUS[0x300ac] = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: ERROR_STATUS2VI_VC0[0x30094] = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: ERROR_STATUS2VI_VC1[0x30098] = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: ERROR_STATUS2VI_VC2[0x3009c] = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: ERROR_STATUS2VI_VC3[0x300a0] = 0x00000000
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: *****************************************
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: SCF: Error BadValue: timestamp cannot be 0 (in src/services/capture/NvViCsiHw.cpp, function waitCsiFrameStart(), line 637)
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: SCF: Error BadValue: (propagating from src/common/Utils.cpp, function workerThread(), line 116)
Mar 14 16:01:24 jetson-tx2 nvargus-daemon[4425]: SCF: Error BadValue: Worker thread ViCsiHw frameStart failed (in src/common/Utils.cpp, function workerThread(), line 133)
Mar 14 16:01:31 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: (propagating from src/services/capture/CaptureServiceEvent.cpp, function wait(), line 59)
Mar 14 16:01:31 jetson-tx2 nvargus-daemon[4425]: Error: Camera HwEvents wait, this may indicate a hardware timeout occured,abort current/incoming cc
Mar 14 16:01:33 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: ISP Stats timed out! (in src/services/capture/NvIspHw.cpp, function waitIspStatsFinished(), line 566)
Mar 14 16:01:35 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: ISP port 0 timed out! (in src/services/capture/NvIspHw.cpp, function waitIspFrameEnd(), line 478)
Mar 14 16:01:35 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: (propagating from src/services/capture/CaptureServiceDeviceIsp.cpp, function waitCompletion(), line 423)
Mar 14 16:01:35 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: (propagating from src/services/capture/CaptureServiceDevice.cpp, function pause(), line 949)
Mar 14 16:01:35 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: During capture abort, syncpoint wait timeout waiting for current frame to finish (in src/services/capture/CaptureServiceDevice.cpp, function handleCancelSourceRequests(), line 1032)
Mar 14 16:01:35 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: ISP Stats timed out! (in src/services/capture/NvIspHw.cpp, function waitIspStatsFinished(), line 566)
Mar 14 16:01:35 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: Sending critical error event (in src/api/Session.cpp, function sendErrorEvent(), line 997)
Mar 14 16:01:35 jetson-tx2 nvargus-daemon[4425]: SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
Mar 14 16:01:36 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: ISP port 1 timed out! (in src/services/capture/NvIspHw.cpp, function waitIspFrameEnd(), line 501)
Mar 14 16:01:38 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: ISP port 2 timed out! (in src/services/capture/NvIspHw.cpp, function waitIspFrameEnd(), line 512)
Mar 14 16:01:38 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: (propagating from src/services/capture/NvIspHw.cpp, function waitIspFrameEnd(), line 524)
Mar 14 16:01:38 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: (propagating from src/common/Utils.cpp, function workerThread(), line 116)
Mar 14 16:01:38 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: Worker thread IspHw frameComplete failed (in src/common/Utils.cpp, function workerThread(), line 133)
Mar 14 16:01:38 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: NvRmSyncWait failed (in src/api/Buffer.cpp, function cpuWaitFences(), line 621)
Mar 14 16:01:38 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: (propagating from src/api/Buffer.cpp, function cpuWaitInputFences(), line 542)
Mar 14 16:01:38 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: (propagating from src/api/Buffer.cpp, function acquire(), line 679)
Mar 14 16:01:38 jetson-tx2 nvargus-daemon[4425]: SCF: Error Timeout: (propagating from src/api/Buffer.cpp, function ScopedBufferLock(), line 656)