Platform : Orin NX
JetPack:JP-6.1, L4T-36.3
Camera Module: max9296+max96717+imx556
Description:
My hardware module is not very stable. When I use below command to run my sensor, it runs normally for several days, and will stuck suddenly. v4l2-ctl --set-fmt-video=width=640,height=480,pixelformat=RG12 --stream-mmap --set-ctrl=sensor_mode=0 -d /dev/video2
I checkcd the mipi signal from oscilloscope and comfirmed that sensor gone wrong.
So I refresh all the register of my module, incluing sensor, serdes, and deserdes, and make sure the waveform correct. But VI couldn’t resume capturing data. Only reruning v4l2 command can resume capturing.
Yes, I want to keep v4l2 IOCTL running always, and getting the correct data.
I am not sure if restarting the capture pipeline is the same as re-running v4l2 command.
Recorvering the stream needs first refreshing all the register and then re-running the v4l2 command. Just executing any of them won’t work.
The dmesg below shows that the VI driver attempts to reset the capture channel after encountering error and resume successfully.
that logs indicate VI’s error recover mechanism has worked normally.
however, let us arrange resources to test with v4l2 pipeline to keep fetching the stream, and software simulation to corrupt the stream.
FYI,
we’re testing with CSI bayer camera sensor, using software simulation approach to stop/resume the stream.
it’s tested on developer kit to confirm this use-case, and, it’s verified VI able to resume capture after sensor output stream again.
It might be that I didn’t express it clearly before. Sometimes it can recover, but sometimes it can’t, especially when the length of the input data suddenly changes and is inconsistent with the correct length. After correcting the length, it turns out that it cannot be captured again.