What can be the cause of the MIPI CSI error ERR_LOST_FS "...image data is received without frame start packet."?
Description
What could be the reason for this?
Thanks in advance
Mario
Did you manage to solve it? I have the same problem, I get a lot of ERR_LOST_FS errors and every 40 errors or so it seems to capture a frame (I have a frame start and frame stop interruption) and although the video plays, it seems to move and is not stable. Also if I use interlaced mode the frequency of the ERR_LOST_FS error changes.
Unfortunately we could not solve the problem. Since the i.mx8mplus does not support deinterlacing (see https://community.nxp.com/t5/i-MX-Processors/IMX8MP-De-interleave-CSI2-PAL-576i-video/m-p/1451160/hi... ), the project has been put on hold.
From the description of register, it shows that MIPI CSI don't recevice a frame start packet in your image data. You need check your image data why it doesn't contain frame start packet.
If your driver is correct , you should use oscilloscope to see your signal received in MIPI CSI.
I have also suspected this.
The test of the MIPI CSI-2 lines with an oscilloscope corresponds to the adv7280-m specification.
The oscilloscope is not a protocol analyzer, it cannot check whether a start packet was sent.
However, 50 half frames per second are received in user space.
And the error bit 0x8 ERR_LOST_FE is never set.
There is no reason that the adv7280-m sends the frame end packet but not the frame start packet.
Can something be configured on the mx8mplus?
How do you test in userspace? Can you share the command you use?
gst-launch-1.0 -v v4l2src ! video/x-raw,width=720,height=576 ! waylandsink sync=false
The images can be seen on a display.
I can find similiar PAL issue about adv7182 in internal.
Are you losing frames on your video screen? You need to count how many frames your command is actually displaying.
Can you share the full log about gst?
You can try below command:
gst-launch-1.0 v4l2src io-mode=4 device=/dev/video0 ! video/x-raw,framerate=30/1,format=UYVY ! imxvideoconvert_g2d ! queue ! waylandsink name=sink window-width=720 window-height=576 sync=false
The following command with output of the fps.
gst-launch-1.0 -v v4l2src device=/dev/video2 io-mode=4 ! video/x-raw,width=720,height=576,framerate=25/1 ! imxvideoconvert_g2d ! queue ! fpsdisplaysink sync=false video-sink=waylandsink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstWaylandSink:waylandsink0: sync = false
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1
/GstPipeline:pipeline0/imxvideoconvert_g2d:imxvideoconvert_g2d0.GstPad:src: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstTextOverlay:fps-display-text-overlay.GstPad:src: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstWaylandSink:waylandsink0.GstPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstTextOverlay:fps-display-text-overlay.GstPad:video_sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0.GstGhostPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1, format=(string)BGRx
/GstPipeline:pipeline0/imxvideoconvert_g2d:imxvideoconvert_g2d0.GstPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, width=(int)720, height=(int)576, framerate=(fraction)25/1, format=(string)YUY2, interlace-mode=(string)progressive, colorimetry=(string)1:4:5:1
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstWaylandSink:waylandsink0: sync = false
Even after 5 minutes the full 50 fps are displayed. There is no frame loss.
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 15353, dropped: 0, current: 50.11, average: 50.01
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstTextOverlay:fps-display-text-overlay: text = rendered: 15378, dropped: 0, current: 49.62, average: 50.01
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0: last-message = rendered: 15378, dropped: 0, current: 49.62, average: 50.01
/GstPipeline:pipeline0/GstFPSDisplaySink:fpsdisplaysink0/GstTextOverlay:fps-display-text-overlay: text = rendered: 15404, dropped: 0, current: 49.95, average: 50.01
The adv7280-m is in progressive mode and sends 50 full frames per second. But the error bit ERR_LOST_FS is still set.
We are designing a new board and want be sure that threre will be no problems later.