Hello there!
As part of our migration we’re seeing some changes in the error handling of the camera input between 32.4.4 and 35.1 on Xavier AGX.
I’m running a very simple pipeline:
gst-launch-1.0 nvarguscamerasrc ee-mode=0 tnr-mode=0 aeantibanding=0 silent=false ! fakesink
In L4T 32.4.4, whenever we get a broken frame, we saw this error occur in the nvargus-daemon. However, the pipeline continues to run.
Feb 16 09:42:38 camera nvargus-daemon[6204]: NvCaptureStatusErrorDecode Stream 0.0 failed: sof_ts 68330504004640 eof_ts 68330637136320 frame 0 error 2 data 0x000000a0
Feb 16 09:42:38 camera nvargus-daemon[6204]: NvCaptureStatusErrorDecode Capture-Error: CSIMUX_FRAME (0x00000002)
Feb 16 09:42:38 camera nvargus-daemon[6204]: CsimuxFrameError_Regular : 0x000000a0
Feb 16 09:42:38 camera nvargus-daemon[6204]: Stream ID [ 2: 0]: 0
Feb 16 09:42:38 camera nvargus-daemon[6204]:
Feb 16 09:42:38 camera nvargus-daemon[6204]: VPR state from fuse block [ 3]: 0
Feb 16 09:42:38 camera nvargus-daemon[6204]:
Feb 16 09:42:38 camera nvargus-daemon[6204]: Frame end (FE) [ 5]: 1
Feb 16 09:42:38 camera nvargus-daemon[6204]: A frame end has been found on a regular mode stream.
Feb 16 09:42:38 camera nvargus-daemon[6204]: FS_FAULT [ 7]: 1
Feb 16 09:42:38 camera nvargus-daemon[6204]: A FS packet was found for a virtual channel that was already in frame.An errored FE packet was injected before FS was allowed through.
Feb 16 09:42:38 camera nvargus-daemon[6204]: Binary VC number [3:2] [27:26]: 0
Feb 16 09:42:38 camera nvargus-daemon[6204]: To get full binary VC number, user need to concatenate VC[3:2] and VC[1:0] together.
Feb 16 09:42:38 camera nvargus-daemon[6204]: SCF: Error InvalidState: Capture error with status 2 (channel 0) (in src/services/capture/NvCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 880)
In L4T 35.1 we see this error instead, and the pipeline fully stops. This is problematic because it breaks our pipeline. Some sensors have this issue too often for it to start and stop completely every time.
Feb 16 09:20:50 camera nvargus-daemon[2164]: SCF: Error InvalidState: Timeout waiting on frame start sensor guid 0, capture sequence ID = 612 (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 507)
Feb 16 09:20:50 camera nvargus-daemon[2164]: SCF: Error InvalidState: (propagating from src/common/Utils.cpp, function workerThread(), line 114)
Feb 16 09:20:50 camera nvargus-daemon[2164]: SCF: Error InvalidState: Worker thread ViCsiHw frameStart failed (in src/common/Utils.cpp, function workerThread(), line 133)
Feb 16 09:20:50 camera nvargus-daemon[2164]: SCF: Error Timeout: (propagating from src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 593)
Feb 16 09:20:50 camera nvargus-daemon[2164]: SCF: Error Timeout: (propagating from src/common/Utils.cpp, function workerThread(), line 114)
Feb 16 09:20:50 camera nvargus-daemon[2164]: SCF: Error Timeout: Worker thread ViCsiHw frameComplete failed (in src/common/Utils.cpp, function workerThread(), line 133)
Feb 16 09:20:50 camera nvargus-daemon[2164]: Module_id 30 Severity 2 : (fusa) Error: Timeout propagating from:/capture/src/fusaViHandler.cpp 776
Is there a way to enable the error recovery on 35.1 so the pipeline will continue to run, even when these types of errors occur?