This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: The splicing display of the images from the four-way cameras failed.

Part Number: TDA4VM

Tool/software:

Hi expert,

I'm working on displaying the images from four cameras simultaneously. It fails to display the images of four cameras simultaneously.  The following error is displayed.

[  921.676101] ds90ub960 5-003d: rx2 CSI error: 0xc
[  921.680724] ds90ub960 5-003d: rx2 CSI checksum error
[  921.685682] ds90ub960 5-003d: rx2 CSI length error
[  922.221586] ds90ub960 5-003d: rx1 buffer error
[  922.227764] ds90ub960 5-003d: rx3 buffer error
[  922.232212] ds90ub960 5-003d: rx3 CSI error: 0xc
[  922.236833] ds90ub960 5-003d: rx3 CSI checksum error
[  922.241800] ds90ub960 5-003d: rx3 CSI length error
[  922.764084] ds90ub960 5-003d: rx0 buffer error
[  922.769119] ds90ub960 5-003d: rx1 buffer error
[  922.774152] ds90ub960 5-003d: rx3 buffer error
[  923.308087] ds90ub960 5-003d: rx0 buffer error
[  923.313122] ds90ub960 5-003d: rx1 buffer error
[  923.318153] ds90ub960 5-003d: rx2 buffer error
[  923.323192] ds90ub960 5-003d: rx3 buffer error

Here are my GStreamer commands. I modified them based on the commands for two cameras.

gst-launch-1.0 -v \
v4l2src device=/dev/video-ox03c10-cam0 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-ox03c10-subdev0 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_0 \
v4l2src device=/dev/video-ox03c10-cam1 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-ox03c10-subdev1 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_1 \
v4l2src device=/dev/video-ox03c10-cam2 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-ox03c10-subdev2 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_2 \
v4l2src device=/dev/video-ox03c10-cam3 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-ox03c10-subdev3 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_3 \
tiovxmosaic name=mosaic \
sink_0::startx="<0>" sink_0::starty="<0>" sink_0::widths="<640>" sink_0::heights="<360>" \
sink_1::startx="<640>" sink_1::starty="<0>" sink_1::widths="<640>" sink_1::heights="<360>" \
sink_2::startx="<0>" sink_2::starty="<360>" sink_2::widths="<640>" sink_2::heights="<360>"  \
sink_2::startx="<640>" sink_2::starty="<360>" sink_2::widths="<640>" sink_2::heights="<360>" ! \
video/x-raw, width=2560, height=1440 ! kmssink driver-name=tidss sync=false

In addition, sometimes when switching between the images of a single camera, the video stream may also fail to be output.  It needs to be restarted to be achieved. Could you give me some suggestions? Do I need to upgrade to the latest SDK version? Thanks!

0:00:04.650278950  2623     0x3c4b19e0 INFO              aggregator gstaggregator.c:612:gst_aggregator_push_mandatory_events:<tiovxisp0> pushing stream start
0:00:04.650461620  2623     0x3c4b19e0 FIXME               basesink gstbasesink.c:3395:gst_base_sink_default_event:<kmssink0> stream-start event without group-id. Consider implementing group-id handling in the upstream elements
0:00:04.650555575  2623     0x3c4b19e0 INFO              aggregator gstaggregator.c:623:gst_aggregator_push_mandatory_events:<tiovxisp0> pushing caps: video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1280, framerate=(fraction)0/1
0:00:04.650583720  2623     0x3c4b19e0 INFO               GST_EVENT gstevent.c:892:gst_event_new_caps: creating caps event video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1280, framerate=(fraction)0/1
0:00:04.650652660  2623     0x3c4b19e0 INFO           basetransform gstbasetransform.c:1326:gst_base_transform_setcaps:<capsfilter1> reuse caps
0:00:04.650675530  2623     0x3c4b19e0 INFO               GST_EVENT gstevent.c:892:gst_event_new_caps: creating caps event video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1280, framerate=(fraction)0/1
0:00:04.650810830  2623     0x3c4b19e0 INFO                tiovxisp gsttiovxisp.c:1122:gst_tiovx_isp_init_module:<tiovxisp0> Input parameters:
        Width: 1920
        Height: 1280
        Num exposures: 1
        Lines interleaved: 0
        Format pixel container: 0x101000
        Format MSB: 11
        Meta height before: 0
        Meta height after: 0
0:00:04.650847170  2623     0x3c4b19e0 INFO                tiovxisp gsttiovxisp.c:1214:gst_tiovx_isp_init_module:<tiovxisp0> Output parameters:
        Width: 1920
        Height: 1280

0:00:04.650861850  2623     0x3c4b19e0 INFO                tiovxisp gsttiovxisp.c:1223:gst_tiovx_isp_init_module:<tiovxisp0> Initializing ISP object
0:00:04.652112625  2623     0x3c4b19e0 INFO                tiovxisp gsttiovxisp.c:1285:gst_tiovx_isp_init_module:<tiovxisp0:sink_0> TI 2A parameters:
        Sensor DCC ID: 233
        Sensor Image Format: 0
        Sensor Image Phase: 0
        Sensor AWB Mode: 0
        Sensor AE Mode: 0
        Sensor AWB number of skipped frames: 0
        Sensor AE number of skipped frames: 0

IttCtrl_registerHandler: command echo registered at location 0
IttCtrl_registerHandler: command iss_read_2a_params registered at location 1
IttCtrl_registerHandler: command iss_write_2a_params registered at location 2
IttCtrl_registerHandler: command iss_raw_save registered at location 3
IttCtrl_registerHandler: command iss_yuv_save registered at location 4
IttCtrl_registerHandler: command iss_read_sensor_reg registered at location 5
IttCtrl_registerHandler: command iss_write_sensor_reg registered at location 6
IttCtrl_registerHandler: command dev_ctrl registered at location 7
IttCtrl_registerHandler: command iss_send_dcc_file registered at location 8
 NETWORK: Opened at IP Addr = 0.0.0.0, socket port=5000!!!

  • Hello,

    Did you configure the media-ctl pipeline? Please share the output for media-ctl -p to confirm. One the sensor has been configured, could you try running the following GStreamer pipeline?

    gst-launch-1.0 -v \
    v4l2src device=/dev/video-ox03c10-cam0 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-ox03c10-subdev0 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_0 \
    v4l2src device=/dev/video-ox03c10-cam1 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-ox03c10-subdev1 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_1 \
    v4l2src device=/dev/video-ox03c10-cam2 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-ox03c10-subdev2 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_2 \
    v4l2src device=/dev/video-ox03c10-cam3 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-ox03c10-subdev3 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_3 \
    tiovxmosaic name=mosaic \
    sink_0::startx="<0>" sink_0::starty="<0>" sink_0::widths="<640>" sink_0::heights="<360>" \
    sink_1::startx="<640>" sink_1::starty="<0>" sink_1::widths="<640>" sink_1::heights="<360>" \
    sink_2::startx="<0>" sink_2::starty="<360>" sink_2::widths="<640>" sink_2::heights="<360>"  \
    sink_3::startx="<640>" sink_3::starty="<360>" sink_3::widths="<640>" sink_3::heights="<360>" ! \
    video/x-raw, width=2560, height=1440 ! kmssink driver-name=tidss sync=false

    Thank you,

    Fabiana

  • Hi,

    Thank you for your reply. I have double-checked the output result of "media-ctl -p", and it should be correct. Please help me check it. Thank you.

    Media controller API version 6.1.33
    
    Media device information
    ------------------------
    driver          j721e-csi2rx
    model           TI-CSI2RX
    serial
    bus info        platform:4500000.ticsi2rx
    hw revision     0x1
    driver version  6.1.33
    
    Device topology
    - entity 1: 4500000.ticsi2rx (17 pads, 17 links, 4 routes)
                type V4L2 subdev subtype Unknown flags 0
                device node name /dev/v4l-subdev3
            routes:
                    0/0 -> 2/0 [ACTIVE]
                    0/1 -> 3/0 [ACTIVE]
                    0/2 -> 4/0 [ACTIVE]
                    0/3 -> 5/0 [ACTIVE]
            pad0: Sink
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:1 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:2 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:3 fmt:SBGGR12_1X12/1920x1280 field:none]
                    <- "cdns_csi2rx.4504000.csi-bridge":1 [ENABLED,IMMUTABLE]
            pad1: Source
                    -> "4500000.ticsi2rx context 0":0 [ENABLED,IMMUTABLE]
            pad2: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    -> "4500000.ticsi2rx context 1":0 [ENABLED,IMMUTABLE]
            pad3: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    -> "4500000.ticsi2rx context 2":0 [ENABLED,IMMUTABLE]
            pad4: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    -> "4500000.ticsi2rx context 3":0 [ENABLED,IMMUTABLE]
            pad5: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    -> "4500000.ticsi2rx context 4":0 [ENABLED,IMMUTABLE]
            pad6: Source
                    -> "4500000.ticsi2rx context 5":0 [ENABLED,IMMUTABLE]
            pad7: Source
                    -> "4500000.ticsi2rx context 6":0 [ENABLED,IMMUTABLE]
            pad8: Source
                    -> "4500000.ticsi2rx context 7":0 [ENABLED,IMMUTABLE]
            pad9: Source
                    -> "4500000.ticsi2rx context 8":0 [ENABLED,IMMUTABLE]
            pad10: Source
                    -> "4500000.ticsi2rx context 9":0 [ENABLED,IMMUTABLE]
            pad11: Source
                    -> "4500000.ticsi2rx context 10":0 [ENABLED,IMMUTABLE]
            pad12: Source
                    -> "4500000.ticsi2rx context 11":0 [ENABLED,IMMUTABLE]
            pad13: Source
                    -> "4500000.ticsi2rx context 12":0 [ENABLED,IMMUTABLE]
            pad14: Source
                    -> "4500000.ticsi2rx context 13":0 [ENABLED,IMMUTABLE]
            pad15: Source
                    -> "4500000.ticsi2rx context 14":0 [ENABLED,IMMUTABLE]
            pad16: Source
                    -> "4500000.ticsi2rx context 15":0 [ENABLED,IMMUTABLE]
    
    - entity 19: cdns_csi2rx.4504000.csi-bridge (5 pads, 2 links, 4 routes)
                 type V4L2 subdev subtype Unknown flags 0
                 device node name /dev/v4l-subdev4
            routes:
                    0/0 -> 1/0 [ACTIVE]
                    0/1 -> 1/1 [ACTIVE]
                    0/2 -> 1/2 [ACTIVE]
                    0/3 -> 1/3 [ACTIVE]
            pad0: Sink
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:1 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:2 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:3 fmt:SBGGR12_1X12/1920x1280 field:none]
                    <- "ds90ub960 5-003d":4 [ENABLED,IMMUTABLE]
            pad1: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:1 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:2 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:3 fmt:SBGGR12_1X12/1920x1280 field:none]
                    -> "4500000.ticsi2rx":0 [ENABLED,IMMUTABLE]
            pad2: Source
            pad3: Source
            pad4: Source
    
    - entity 25: ds90ub960 5-003d (6 pads, 5 links, 4 routes)
                 type V4L2 subdev subtype Unknown flags 0
                 device node name /dev/v4l-subdev5
            routes:
                    0/0 -> 4/0 [ACTIVE]
                    1/0 -> 4/1 [ACTIVE]
                    2/0 -> 4/2 [ACTIVE]
                    3/0 -> 4/3 [ACTIVE]
            pad0: Sink
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    <- "ds90ub953 5-0044":1 [ENABLED,IMMUTABLE]
            pad1: Sink
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    <- "ds90ub953 5-0045":1 [ENABLED,IMMUTABLE]
            pad2: Sink
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    <- "ds90ub953 5-0046":1 [ENABLED,IMMUTABLE]
            pad3: Sink
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    <- "ds90ub953 5-0047":1 [ENABLED,IMMUTABLE]
            pad4: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:1 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:2 fmt:SBGGR12_1X12/1920x1280 field:none]
                    [stream:3 fmt:SBGGR12_1X12/1920x1280 field:none]
                    -> "cdns_csi2rx.4504000.csi-bridge":0 [ENABLED,IMMUTABLE]
            pad5: Source
    
    - entity 34: ds90ub953 5-0047 (2 pads, 2 links, 1 route)
                 type V4L2 subdev subtype Unknown flags 0
                 device node name /dev/v4l-subdev6
            routes:
                    0/0 -> 1/0 [ACTIVE]
            pad0: Sink
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    <- "ox03c10 10-0036":0 [ENABLED,IMMUTABLE]
            pad1: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    -> "ds90ub960 5-003d":3 [ENABLED,IMMUTABLE]
    
    - entity 39: ds90ub953 5-0046 (2 pads, 2 links, 1 route)
                 type V4L2 subdev subtype Unknown flags 0
                 device node name /dev/v4l-subdev7
            routes:
                    0/0 -> 1/0 [ACTIVE]
            pad0: Sink
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    <- "ox03c10 9-0036":0 [ENABLED,IMMUTABLE]
            pad1: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    -> "ds90ub960 5-003d":2 [ENABLED,IMMUTABLE]
    
    - entity 44: ds90ub953 5-0045 (2 pads, 2 links, 1 route)
                 type V4L2 subdev subtype Unknown flags 0
                 device node name /dev/v4l-subdev8
            routes:
                    0/0 -> 1/0 [ACTIVE]
            pad0: Sink
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    <- "ox03c10 8-0036":0 [ENABLED,IMMUTABLE]
            pad1: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    -> "ds90ub960 5-003d":1 [ENABLED,IMMUTABLE]
    
    - entity 49: ds90ub953 5-0044 (2 pads, 2 links, 1 route)
                 type V4L2 subdev subtype Unknown flags 0
                 device node name /dev/v4l-subdev9
            routes:
                    0/0 -> 1/0 [ACTIVE]
            pad0: Sink
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    <- "ox03c10 7-0036":0 [ENABLED,IMMUTABLE]
            pad1: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280 field:none]
                    -> "ds90ub960 5-003d":0 [ENABLED,IMMUTABLE]
    
    - entity 54: ox03c10 7-0036 (1 pad, 1 link, 2 routes)
                 type V4L2 subdev subtype Sensor flags 0
                 device node name /dev/v4l-subdev10
            routes:
                    0/0 -> 0/0 [ACTIVE]
                    0/0 -> 0/1 [INACTIVE]
            pad0: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280@1/60 field:none colorspace:smpte170m]
                    -> "ds90ub953 5-0044":0 [ENABLED,IMMUTABLE]
    
    - entity 58: ox03c10 8-0036 (1 pad, 1 link, 2 routes)
                 type V4L2 subdev subtype Sensor flags 0
                 device node name /dev/v4l-subdev11
            routes:
                    0/0 -> 0/0 [ACTIVE]
                    0/0 -> 0/1 [INACTIVE]
            pad0: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280@1/60 field:none colorspace:smpte170m]
                    -> "ds90ub953 5-0045":0 [ENABLED,IMMUTABLE]
    
    - entity 62: ox03c10 9-0036 (1 pad, 1 link, 2 routes)
                 type V4L2 subdev subtype Sensor flags 0
                 device node name /dev/v4l-subdev12
            routes:
                    0/0 -> 0/0 [ACTIVE]
                    0/0 -> 0/1 [INACTIVE]
            pad0: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280@1/60 field:none colorspace:smpte170m]
                    -> "ds90ub953 5-0046":0 [ENABLED,IMMUTABLE]
    
    - entity 66: ox03c10 10-0036 (1 pad, 1 link, 2 routes)
                 type V4L2 subdev subtype Sensor flags 0
                 device node name /dev/v4l-subdev13
            routes:
                    0/0 -> 0/0 [ACTIVE]
                    0/0 -> 0/1 [INACTIVE]
            pad0: Source
                    [stream:0 fmt:SBGGR12_1X12/1920x1280@1/60 field:none colorspace:smpte170m]
                    -> "ds90ub953 5-0047":0 [ENABLED,IMMUTABLE]
    
    - entity 72: 4500000.ticsi2rx context 0 (1 pad, 1 link, 0 route)
                 type Node subtype V4L flags 0
                 device node name /dev/video18
            pad0: Sink
                    <- "4500000.ticsi2rx":1 [ENABLED,IMMUTABLE]
    
    - entity 78: 4500000.ticsi2rx context 1 (1 pad, 1 link, 0 route)
                 type Node subtype V4L flags 0
                 device node name /dev/video19
            pad0: Sink
                    <- "4500000.ticsi2rx":2 [ENABLED,IMMUTABLE]
    
    - entity 84: 4500000.ticsi2rx context 2 (1 pad, 1 link, 0 route)
                 type Node subtype V4L flags 0
                 device node name /dev/video20
            pad0: Sink
                    <- "4500000.ticsi2rx":3 [ENABLED,IMMUTABLE]
    
    - entity 90: 4500000.ticsi2rx context 3 (1 pad, 1 link, 0 route)
                 type Node subtype V4L flags 0
                 device node name /dev/video21
            pad0: Sink
                    <- "4500000.ticsi2rx":4 [ENABLED,IMMUTABLE]
    
    - entity 96: 4500000.ticsi2rx context 4 (1 pad, 1 link, 0 route)
                 type Node subtype V4L flags 0
                 device node name /dev/video22
            pad0: Sink
                    <- "4500000.ticsi2rx":5 [ENABLED,IMMUTABLE]
    
    - entity 102: 4500000.ticsi2rx context 5 (1 pad, 1 link, 0 route)
                  type Node subtype V4L flags 0
                  device node name /dev/video23
            pad0: Sink
                    <- "4500000.ticsi2rx":6 [ENABLED,IMMUTABLE]
    
    - entity 108: 4500000.ticsi2rx context 6 (1 pad, 1 link, 0 route)
                  type Node subtype V4L flags 0
                  device node name /dev/video24
            pad0: Sink
                    <- "4500000.ticsi2rx":7 [ENABLED,IMMUTABLE]
    
    - entity 114: 4500000.ticsi2rx context 7 (1 pad, 1 link, 0 route)
                  type Node subtype V4L flags 0
                  device node name /dev/video25
            pad0: Sink
                    <- "4500000.ticsi2rx":8 [ENABLED,IMMUTABLE]
    
    - entity 120: 4500000.ticsi2rx context 8 (1 pad, 1 link, 0 route)
                  type Node subtype V4L flags 0
                  device node name /dev/video26
            pad0: Sink
                    <- "4500000.ticsi2rx":9 [ENABLED,IMMUTABLE]
    
    - entity 126: 4500000.ticsi2rx context 9 (1 pad, 1 link, 0 route)
                  type Node subtype V4L flags 0
                  device node name /dev/video27
            pad0: Sink
                    <- "4500000.ticsi2rx":10 [ENABLED,IMMUTABLE]
    
    - entity 132: 4500000.ticsi2rx context 10 (1 pad, 1 link, 0 route)
                  type Node subtype V4L flags 0
                  device node name /dev/video28
            pad0: Sink
                    <- "4500000.ticsi2rx":11 [ENABLED,IMMUTABLE]
    
    - entity 138: 4500000.ticsi2rx context 11 (1 pad, 1 link, 0 route)
                  type Node subtype V4L flags 0
                  device node name /dev/video29
            pad0: Sink
                    <- "4500000.ticsi2rx":12 [ENABLED,IMMUTABLE]
    
    - entity 144: 4500000.ticsi2rx context 12 (1 pad, 1 link, 0 route)
                  type Node subtype V4L flags 0
                  device node name /dev/video30
            pad0: Sink
                    <- "4500000.ticsi2rx":13 [ENABLED,IMMUTABLE]
    
    - entity 150: 4500000.ticsi2rx context 13 (1 pad, 1 link, 0 route)
                  type Node subtype V4L flags 0
                  device node name /dev/video31
            pad0: Sink
                    <- "4500000.ticsi2rx":14 [ENABLED,IMMUTABLE]
    
    - entity 156: 4500000.ticsi2rx context 14 (1 pad, 1 link, 0 route)
                  type Node subtype V4L flags 0
                  device node name /dev/video32
            pad0: Sink
                    <- "4500000.ticsi2rx":15 [ENABLED,IMMUTABLE]
    
    - entity 162: 4500000.ticsi2rx context 15 (1 pad, 1 link, 0 route)
                  type Node subtype V4L flags 0
                  device node name /dev/video33
            pad0: Sink
                    <- "4500000.ticsi2rx":16 [ENABLED,IMMUTABLE]
    

  • Hi,

    Could you try the following?

    gst-launch-1.0 -v \
    v4l2src device=/dev/video18 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-subdev10 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_0 \
    v4l2src device=/dev/video19 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-subdev11 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_1 \
    v4l2src device=/dev/video20 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-subdev12 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_2 \
    v4l2src device=/dev/video21 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-subdev13 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_3 \
    tiovxmosaic name=mosaic \
    sink_0::startx="<0>" sink_0::starty="<0>" sink_0::widths="<640>" sink_0::heights="<360>" \
    sink_1::startx="<640>" sink_1::starty="<0>" sink_1::widths="<640>" sink_1::heights="<360>" \
    sink_2::startx="<0>" sink_2::starty="<360>" sink_2::widths="<640>" sink_2::heights="<360>"  \
    sink_3::startx="<640>" sink_3::starty="<360>" sink_3::widths="<640>" sink_3::heights="<360>" ! \
    video/x-raw, width=2560, height=1440 ! kmssink driver-name=tidss sync=false

    Thank you,

    Fabiana

  • Hi,

    It's not video 18 to 21, but video 19 to 22. So I used videos 19 to 22 to capture the video stream, but the previous error still occurred. 
    I'm sorry to trouble you again. Please help me check it.
    ds90ub960 5-003d: rx2 CSI error: 0xc
    [  297.330189] ds90ub960 5-003d: rx2 CSI checksum error
    [  297.335156] ds90ub960 5-003d: rx2 CSI length error
    [  297.868155] ds90ub960 5-003d: rx0 buffer error
    [  297.872596] ds90ub960 5-003d: rx0 CSI error: 0xc
    [  297.877205] ds90ub960 5-003d: rx0 CSI checksum error
    [  297.882163] ds90ub960 5-003d: rx0 CSI length error
    [  297.887554] ds90ub960 5-003d: rx1 buffer error
    [  297.892584] ds90ub960 5-003d: rx2 buffer error
    [  297.897616] ds90ub960 5-003d: rx3 buffer error
    
  • Hi Ying,

    Fabiana is currently out, so I will try to fill in.

    To narrow down the issue, can the experiment be ran with two cameras? 

    And if the issue is seen with two cameras, please share the GStreamer pipeline that was used, and the full logs generated from running the GStreamer pipeline?

    Regards,

    Takuma

  • Hi Takuma,

    Thanks for your help. 

    Two cameras can sometimes output video streams. However, they can also freeze up sometimes, resulting in the inability to output video streams. It is necessary to restart in order to output the video stream again.
    root@j721e-evm:/opt/edgeai-gst-apps# GST_DEBUG=3 gst-launch-1.0 -v \
    > v4l2src device=/dev/video19 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=30/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-subdev8 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_0 \
    > v4l2src device=/dev/video20 io-mode=5 ! video/x-bayer, width=1920, height=1280, framerate=30/1, format=bggr12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-subdev9 sensor-name=SENSOR_SONY_OX03C10_UB953_D3 dcc-isp-file=/opt/imaging/ox03c10/wdr/dcc_viss_wdr.bin sink_0::dcc-2a-file=/opt/imaging/ox03c10/wdr/dcc_2a_wdr.bin format-msb=11 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1280 ! queue ! mosaic.sink_1 \
    > tiovxmosaic name=mosaic \
    > sink_0::startx="<0>" sink_0::starty="<0>" sink_0::widths="<960>" sink_0::heights="<640>" \
    > sink_1::startx="<960>" sink_1::starty="<0>" sink_1::widths="<960>" sink_1::heights="<640>" ! \
    > video/x-raw, width=2560, height=1440 ! kmssink driver-name=tidss sync=false
    APP: Init ... !!!
    MEM: Init ... !!!
    MEM: Initialized DMA HEAP (fd=6) !!!
    MEM: Init ... Done !!!
    IPC: Init ... !!!
    IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
       535.170268 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
       535.170336 s:  VX_ZONE_INIT:Enabled
       535.170344 s:  VX_ZONE_ERROR:Enabled
       535.170350 s:  VX_ZONE_WARNING:Enabled
       535.171106 s:  VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
       535.171603 s:  VX_ZONE_INIT:[tivxHostInitLocal:96] Initialization Done for HOST !!!
    Setting pipeline to PAUSED ...
    0:00:00.241700935  2151      0xc24daa0 WARN                 v4l2src gstv4l2src.c:814:gst_v4l2src_query:<v4l2src0> Can't give latency since framerate isn't fixated !
    0:00:00.241793380  2151      0xc24daa0 WARN              aggregator gstaggregator.c:2104:gst_aggregator_query_latency_unlocked:<tiovxisp0> Latency query failed
    0:00:00.241959045  2151      0xc24daa0 WARN                 v4l2src gstv4l2src.c:814:gst_v4l2src_query:<v4l2src1> Can't give latency since framerate isn't fixated !
    0:00:00.241988240  2151      0xc24daa0 WARN              aggregator gstaggregator.c:2104:gst_aggregator_query_latency_unlocked:<tiovxisp1> Latency query failed
    0:00:00.242007010  2151      0xc24daa0 WARN              aggregator gstaggregator.c:2104:gst_aggregator_query_latency_unlocked:<mosaic> Latency query failed
    0:00:00.242989585  2151      0xc24d920 WARN                 v4l2src gstv4l2src.c:814:gst_v4l2src_query:<v4l2src0> Can't give latency since framerate isn't fixated !
    0:00:00.243025830  2151      0xc24d920 WARN              aggregator gstaggregator.c:2104:gst_aggregator_query_latency_unlocked:<tiovxisp0> Latency query failed
    0:00:00.243161870  2151      0xc24d800 WARN                 v4l2src gstv4l2src.c:814:gst_v4l2src_query:<v4l2src1> Can't give latency since framerate isn't fixated !
    0:00:00.243194065  2151      0xc24d800 WARN              aggregator gstaggregator.c:2104:gst_aggregator_query_latency_unlocked:<tiovxisp1> Latency query failed
    Pipeline is live and does not need PREROLL ...
    0:00:00.243727125  2151      0xc24d920 WARN                 v4l2src gstv4l2src.c:814:gst_v4l2src_query:<v4l2src0> Can't give latency since framerate isn't fixated !
    0:00:00.243755675  2151      0xc24d920 WARN              aggregator gstaggregator.c:2104:gst_aggregator_query_latency_unlocked:<tiovxisp0> Latency query failed
    /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 2560
    /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 1440
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    0:00:00.244747655  2151      0xc24d800 WARN                 v4l2src gstv4l2src.c:814:gst_v4l2src_query:<v4l2src1> Can't give latency since framerate isn't fixated !
    0:00:00.244781650  2151      0xc24d800 WARN              aggregator gstaggregator.c:2104:gst_aggregator_query_latency_unlocked:<tiovxisp1> Latency query failed
    0:00:00.245370700  2151      0xc24d920 WARN                 v4l2src gstv4l2src.c:814:gst_v4l2src_query:<v4l2src0> Can't give latency since framerate isn't fixated !
    0:00:00.245405370  2151      0xc24d920 WARN              aggregator gstaggregator.c:2104:gst_aggregator_query_latency_unlocked:<tiovxisp0> Latency query failed
    0:00:00.245527190  2151      0xc24d800 WARN                 v4l2src gstv4l2src.c:814:gst_v4l2src_query:<v4l2src1> Can't give latency since framerate isn't fixated !
    0:00:00.245550710  2151      0xc24d800 WARN              aggregator gstaggregator.c:2104:gst_aggregator_query_latency_unlocked:<tiovxisp1> Latency query failed
    0:00:00.245934820  2151      0xc24d800 WARN                 v4l2src gstv4l2src.c:814:gst_v4l2src_query:<v4l2src1> Can't give latency since framerate isn't fixated !
    0:00:00.245965740  2151      0xc24d800 WARN              aggregator gstaggregator.c:2104:gst_aggregator_query_latency_unlocked:<tiovxisp1> Latency query failed
    /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    New clock: GstSystemClock
    /GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstTIOVXISP:tiovxisp0.GstTIOVXIspPad:sink_0: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstV4l2Src:v4l2src1.GstPad:src: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter2.GstPad:src: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstQueue:queue2.GstPad:src: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstTIOVXISP:tiovxisp1.GstTIOVXIspPad:sink_0: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstQueue:queue2.GstPad:sink: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter2.GstPad:sink: caps = video/x-bayer, width=(int)1920, height=(int)1280, framerate=(fraction)30/1, format=(string)bggr12, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
    0:00:00.703720875  2151      0xc24d700 WARN          v4l2bufferpool gstv4l2bufferpool.c:1397:gst_v4l2_buffer_pool_dqbuf:<v4l2src0:pool0:src> Driver should never set v4l2_buffer.field to ANY
    /GstPipeline:pipeline0/GstTIOVXISP:tiovxisp0.GstTIOVXMisoPad:src: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1280, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1280, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1280, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1280, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1280, framerate=(fraction)0/1
    /GstPipeline:pipeline0/GstTIOVXMosaic:mosaic.GstTIOVXMosaicPad:sink_0: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1280, framerate=(fraction)0/1
    IttCtrl_registerHandler: command echo registered at location 0
    IttCtrl_registerHandler: command iss_read_2a_params registered at location 1
    IttCtrl_registerHandler: command iss_write_2a_params registered at location 2
    IttCtrl_registerHandler: command iss_raw_save registered at location 3
    IttCtrl_registerHandler: command iss_yuv_save registered at location 4
    IttCtrl_registerHandler: command iss_read_sensor_reg registered at location 5
    IttCtrl_registerHandler: command iss_write_sensor_reg registered at location 6
    IttCtrl_registerHandler: command dev_ctrl registered at location 7
    IttCtrl_registerHandler: command iss_send_dcc_file registered at location 8
    Error: failed to open i2c bus at /dev/i2c-9
    Warning: Failed to initialize i2c bus. Register read/write will not work !!![  345.228723] ds90ub960 5-003d: rx0 CSI error: 0xc
    
     NETWORK: Opened at IP Addr = 0.0.0.0, socket port=5000!!!
    0:[  345.235384] ds90ub960 5-003d: rx0 CSI checksum error
    00:00.757867975  2151      0xc24d920 FIXME    345.245885] ds90ub960 5-003d: rx0 CSI length error
    00m           aggregator gstaggregator.c:1412:gst_aggreg[  345.256809] ds90ub960 5-003d: rx1 CSI error: 0xc
    ator_aggregate_func:<tiovxisp0> Subclass should call gst_ag[  345.266368] ds90ub960 5-003d: rx1 CSI checksum error
    gregator_selected_samples() from its aggregate implementation.
    [  345.276865] ds90ub960 5-003d: rx1 CSI length error
    
    ink0> stream-start event without group-id. Consider implementing group-id handling in the upstream elements
    /GstPipeline:pipeline0/GstTIOVXMosaic:mosaic.GstTIOVXMisoPad:src: caps = video/x-raw, format=(string)NV12, width=(int)2560, height=(int)1440, framerate=(fraction)25/1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter4.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)2560, height=(int)1440, framerate=(fraction)25/1
    /GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)2560, height=(int)1440, framerate=(fraction)25/1
    /GstPipeline:pipeline0/GstCapsFilter:capsfilter4.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)2560, height=(int)1440, framerate=(fraction)25/1
    0:00:03.543071325  2006     0x1d677aa0 WARN            kmsallocator gstkmsallocator.c:553:gst_kms_allocator_dmabuf_import:<KMSMemory::allocator> Failed to close GEM handle: Invalid argument 22
    Redistribute latency...
    0:00:03.606203260  2006     0x1d677aa0 FIXME             aggregator gstaggregator.c:1412:gst_aggregator_aggregate_func:<mosaic> Subclass should call gst_aggregator_selected_samples() from its aggregate implementation.
    0:00:03.650547830  2006     0x1d677aa0 WARN            kmsallocator gstkmsallocator.c:553:gst_kms_allocator_dmabuf_import:<KMSMemory::allocator> Failed to close GEM handle: Invalid argument 22
    0:00:00.3 / 99:99:99.
    
    If there are four cameras, the driver will cyclically print the following log.
    [  125.069110] ds90ub960 5-003d: rx0 CSI error: 0xc
    [  125.073734] ds90ub960 5-003d: rx0 CSI checksum error
    [  125.078700] ds90ub960 5-003d: rx0 CSI length error
    [  125.612880] ds90ub960 5-003d: rx0 buffer error
    [  125.619494] ds90ub960 5-003d: rx1 buffer error
    [  125.625471] ds90ub960 5-003d: rx2 buffer error
    [  126.155688] ds90ub960 5-003d: rx0 buffer error
    [  126.160722] ds90ub960 5-003d: rx1 buffer error
    [  126.165753] ds90ub960 5-003d: rx2 buffer error
    [  126.170795] ds90ub960 5-003d: rx3 buffer error
    [  126.699686] ds90ub960 5-003d: rx1 buffer error
    [  126.704720] ds90ub960 5-003d: rx2 buffer error
    [  126.709755] ds90ub960 5-003d: rx3 buffer error
    [  127.243684] ds90ub960 5-003d: rx0 buffer error
    [  127.248726] ds90ub960 5-003d: rx1 buffer error
    [  127.253769] ds90ub960 5-003d: rx2 buffer error
    [  127.258808] ds90ub960 5-003d: rx3 buffer error
    
    My current version is  EdgeAI 09.01.00.06, and I'm not sure if it's related to the SDK version. Thank you again for your help.
  • Hi Ying,

    Thank you for sharing the logs and thanks for specifying the SDK and SDK version. 

    Could I get a clarification on your statements and explanation of the logs?

    1. With the two camera pipeline sometimes outputting video stream, does it mean all pipelines that are started eventually freeze up? Or are there some times when the freeze never happen and the pipeline runs without issues?
    2. Are the first two logs from the same run? Meaning, CSI errors observed at 0:00:00.3 seconds into the pipeline and the pipeline freezes?

    I am trying to determine whether this issue looks like an initialization issue of the camera, or a runtime issue like lacking bandwidth somewhere within the camera input pipeline. So far, I am leaning more towards initialization issue, since your original post also mentions issues are seen with just a single camera.

    Regards,

    Takuma

  • Hi,

    1. When using a single camera, there is no issue with continuously using one device node to obtain the video stream. However, if you switch to another device node to obtain a different video stream, the device may sometimes freeze and require a restart.  
    2. The first two logs are not from the same run. These are logs from two separate runs. If it's a device initialization issue, how should I check it? Thanks for the help.
  • Hi Ying,

     If it's a device initialization issue, how should I check it?

    If the issue is happening when the pipeline is started at frame 0 or frame 1, or the pipeline cannot be started at all, then I would suspect an issue with initialization.

    The first two logs are not from the same run. 

    Then can I get an explanation of what was happening when these logs were obtained? For example, is the first log the logs that were printed out when the pipeline was running without issue continuously? And the second an example log from when a freeze occurred?

    When using a single camera, there is no issue with continuously using one device node to obtain the video stream. However, if you switch to another device node to obtain a different video stream, the device may sometimes freeze and require a restart.  

    Then this sounds more like an issue with de-initialization of the pipeline. Is the issue seen when the video stream is stopped and restarted using the same video stream/device node again?

    Regards,

    Takuma

  • Hi,

    The logs are roughly those mentioned above.
    Then this sounds more like an issue with de-initialization of the pipeline. Is the issue seen when the video stream is stopped and restarted using the same video stream/device node again?
    Basically not.
     Thanks!
  • Hi Yang,

    Is my understanding correct that even in the case where the pipeline has no issues, there are some I2C/CSI related warning/error messages printed out?

    Specifically, the following lines are printed out when pipeline is working?

    Error: failed to open i2c bus at /dev/i2c-9
    Warning: Failed to initialize i2c bus. Register read/write will not work !!![ 345.228723] ds90ub960 5-003d: rx0 CSI error: 0xc

    Basically not.

    Could you clarify if "basically no issues are seen when video stream is stopped and restarted using same device node", or "basically no, my assumption is wrong, and the issue is seen when video stream is stopped and restarted using the same device node".

    Regards,

    Takuma

  • Hi,

    Is my understanding correct that even in the case where the pipeline has no issues, there are some I2C/CSI related warning/error messages printed out?

    Yes, it appears every time.

    Could you clarify if "basically no issues are seen when video stream is stopped and restarted using same device node", or "basically no, my assumption is wrong, and the issue is seen when video stream is stopped and restarted using the same device node".

    There is no problem when continuously stopping and restarting the video stream using the same device node. However, if the data stream 启动 (started) by another device node gets stuck midway, the previous device node will also fail to launch the video stream.

    Thanks!

  • Hi Ying,

    Understood. That sounds like something is not being cleaned up properly when the pipeline is stopped. A bit concerning to see the I2C error messages at runtime as well.

    You mentioned 9.1 SDK version was used, but could you see if you can replicate the issue on the latest 10.1 SDK?

    In the meantime, I will try to see if I can replicate the issue on my end on 9.1 SDK.

    Regards,

    Takuma

  • Hi Takuma,

    Okay, please help me with that. Thanks!

  • Hi Ying,

    Can you share the dtso files in-use, and the uEnv.txt environment variables that are set up to overlay the device tree?

    Regards,

    Takuma

  • Hi,

    Here are my uEnv.txt and k3-fpdlink-ox03c10-rcm-0-0.dtso.

    root@j721e-evm:/opt/edgeai-gst-apps# cat /run/media/BOOT-mmcblk1p1/uEnv.txt
    # This uEnv.txt file can contain additional environment settings that you
    # want to set in U-Boot at boot time.  This can be simple variables such
    # as the serverip or custom variables.  The format of this file is:
    #    variable=value
    # NOTE: This file will be evaluated after the bootcmd is run and the
    #       bootcmd must be set to load this file if it exists (this is the
    #       default on all newer U-Boot images.  This also means that some
    #       variables such as bootdelay cannot be changed by this file since
    #       it is not evaluated until the bootcmd is run.
    psdk_setup_file=.psdk_setup
    check_psdk_setup=load mmc 1:1 ${loadaddr} ${psdk_setup_file}
    
    # Reset to the default environment
    do_psdk_setup=env default -f -a; saveenv
    
    # If not done previously, then reset to the default environment and indicate this by writing a file
    # Also update the Linux hostname based on board_name
    uenvcmd=if run check_psdk_setup; then echo "Already setup."; else run do_psdk_setup; mw.b ${loadaddr} 0 1; fatwrite mmc 1:1 ${loadaddr} .psdk_setup 1; reset; fi; if test "$board_name" = "j721e-sk"; then ; setenv args_all $args_all systemd.hostname=tda4vm-sk ; fi; if test ${boot_fit} -eq 1; then  setenv name_overlays $name_overlays_fit; fi;
    
    # Setting the right U-Boot environment variables
    dorprocboot=1
    name_overlays=ti/k3-j721e-edgeai-apps.dtbo ti/k3-j721e-evm-fusion.dtbo ti/k3-fpdlink-ox03c10-rcm-0-0.dtbo ti/k3-fpdlink-ox03c10-rcm-0-1.dtbo ti/k3-fpdlink-ox03c10-rcm-0-2.dtbo ti/k3-fpdlink-ox03c10-rcm-0-3.dtbo
    # Name overlays when booting from fit image
    name_overlays_fit=conf-ti_k3-j721e-edgeai-apps.dtbo
    
    // SPDX-License-Identifier: GPL-2.0
    /*
     * IMX390 FPD-Link 3 Camera Module
     * https://www.d3engineering.co/product/designcore-d3rcm-imx390-953-rugged-camera-module/
     *
     * Copyright (c) 2023 Texas Instruments Incorporated - http://www.ti.com/
     */
    
    /dts-v1/;
    /plugin/;
    
    #include <dt-bindings/gpio/gpio.h>
    
    &ds90ub960_0_ports {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	/* FPDLink RX 0 */
    	port@0 {
    		reg = <0>;
    
    		ub960_fpd3_1_in: endpoint {
    			remote-endpoint = <&ub953_1_out>;
    		};
    	};
    };
    
    &ds90ub960_0_links {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	link@0 {
    		reg = <0>;
    		i2c-alias = <0x44>;
    
    		ti,rx-mode = <3>;
    
    		serializer: serializer {
    			compatible = "ti,ds90ub953-q1";
    			gpio-controller;
    			#gpio-cells = <2>;
    
    			#clock-cells = <0>;
    
    			ports {
    				#address-cells = <1>;
    				#size-cells = <0>;
    
    				port@0 {
    					reg = <0>;
    					ub953_1_in: endpoint {
    						data-lanes = <1 2 3 4>;
    						remote-endpoint = <&sensor_1_out>;
    					};
    				};
    
    				port@1 {
    					reg = <1>;
    
    					ub953_1_out: endpoint {
    						remote-endpoint = <&ub960_fpd3_1_in>;
    					};
    				};
    			};
    
    			i2c {
    				#address-cells = <1>;
    				#size-cells = <0>;
    
    				sensor@36 {
    				    compatible = "ovti,ox03c10";
    					reg = <0x36>;
    
    					clocks = <&serializer>;
    					clock-names = "inck";
    					assigned-clocks = <&serializer>;
    					assigned-clock-rates = <27000000>;
    
    					port {
    						sensor_1_out: endpoint {
    							remote-endpoint = <&ub953_1_in>;
    						};
    					};
    				};
    			};
    		};
    	};
    };
    

    The figure shows the differences between k3-fpdlink-ox03c10-rcm-0-0.dtso and k3-fpdlink-ox03c10-rcm-0-1.dtso. The other dtso files also only have these two differences.

    Thank you for your help.

  • Hi Takuma,

    I tested with the SDK-10-01 version and found that the problem was not solved. Even when I used the driver framework of imx390 and only modified the register configuration table, the same phenomenon occurred. Should I check the driver code for 960? Thanks!

    ds90ub960 4-003d: rx0 buffer error
    [  111.020597] ds90ub960 4-003d: rx1 buffer error
    [  111.025646] ds90ub960 4-003d: rx2 buffer error
    [  111.030706] ds90ub960 4-003d: rx3 buffer error

  • Hi Ying,

    Thank you for sharing the uEnv.txt and dtso. It does not look much different from the imx390 dts that we have in our SDK, so a bit strange to see this much difference in behavior.

    As a different idea that you can look into, I remember a colleague of mine had some issues when they were enabling multiple 8MP cameras to stream at once. He created a FAQ with his findings: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1476091/faq-am6x-how-do-i-fix-stream-fifo-overflow-errors-in-the-csi2rx-linux-driver-with-num_pixels

    You could try following his FAQ to see if you see something similar in the registers in case the issue you are observing is related. The error logs and how it is failing seems different, but I do see similarities in that the issue only occurs with multiple cameras and it is buffer related.

    Regards,

    Takuma

  • Hi Ying,

    If this issue is still open, can you try the following 3 experiments:

    1. In a fresh boot
      1. Run "gst-launch-1.0 -v \
        v4l2src device=/dev/video-ox03c10-cam0 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! fakesink"
      2. Stop it with CTRL + C
      3. Run "gst-launch-1.0 -v \
        v4l2src device=/dev/video-ox03c10-cam1 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! fakesink"
    2. In another fresh boot
      1. Run "gst-launch-1.0 -v \
        v4l2src device=/dev/video-ox03c10-cam0 num-buffers=600 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! fakesink"
      2. Wait for it to stop automatically after 10 or so seconds
      3. Run "gst-launch-1.0 -v \
        v4l2src device=/dev/video-ox03c10-cam1 num-buffers=600 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! fakesink"
    3. In another fresh boot
      1. Run "gst-launch-1.0 -v \
        v4l2src device=/dev/video-ox03c10-cam0 num-buffers=600 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! fakesink & v4l2src device=/dev/video-ox03c10-cam1 num-buffers=600 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! fakesink & v4l2src device=/dev/video-ox03c10-cam2 num-buffers=600 ! video/x-bayer, width=1920, height=1280, framerate=60/1, format=bggr12 ! queue leaky=2 ! fakesink"

    Essentially, all of these experiments are trying to simplify the pipeline by using fakesink to see if we can narrow down the issue. First and second experiment is to see if there is a difference in behavior between CTRL+C and an EOS signal, to see if that impacts the issue where you cannot start a stream using a different camera until a reboot. Third experiment is to run 3 camera input pipelines in parallel instead of 4, using fakesink. We can scale this example for 2 camera and 4 camera to see if the CSI errors are due to having more traffic.

    Regards,

    Takuma