GMSL2 camera (MAX9295+MAX96712) never receives frames

Platform / hardware

- Jetson AGX Orin Developer Kit, JetPack 7.2 (L4T R39.2.0), kernel `6.8.12-1021-rt-tegra`

- Classic V4L2 (`tegra-capture-vi`/NVCSI) via `v4l2-ctl`

- Leopard IMX568 (MAX9295 serializer on-module) → Forecr GMSL2 4CH board (MAX96712 deserializer) → J509

- Driver ported from Leopard’s reference package, which targets **L4T R36.5.0/JetPack 6.x** (our board/connector differs, so the device tree is our own adaptation)

Symptom

Every capture attempt fails identically:


tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms

Full streaming attempt (module load → `STREAMON` → 3x timeout):


imx568 8-001b: imx568_power_on: power on

tegra194-vi5 13e00000.host1x:vi0@15c00000: \[PIPELINE 0\] VI capture setup complete (channel_id=0, csi_stream=0, vc=0)

imx568 8-001b: imx568_set_mode: mode index is :0

\[RCE\] ERROR: camera-ip/vi5/vi5.c:4067 \[vi5_update_channel_match_data\] "match configuration is already in use by by channel 35 cannot set channel match configuration"

imx568 8-001b: imx568_start_streaming: start

li_max929x 8-0029: max929x_read_reg_Dser: addr = 0x8a2, val = 0x4

max929x_write_reg_Dser slave:0x52, addr:0x8a2, val:0x34

imx568 8-001b: cam_index is 01

tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms

tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms

tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms

MAX96712 `MIPI_TX2` status, all 4 pipes, read mid-timeout (our active pipe = ctrl0/Pipe0/LinkA):

MIPI_TX2 ctrl0/Pipe0/LinkA(0x0902) raw=0x00 sync_en=0 video_sync=0 sync_lost=0 hdr_crc_correctable=0 hdr_crc_uncorrectable=0 data_crc_err=0 dphy2cphy_crc_err=0

MIPI_TX2 ctrl1/Pipe1/LinkB(0x0942) raw=0x00 sync_en=0 video_sync=0 sync_lost=0 hdr_crc_correctable=0 hdr_crc_uncorrectable=0 data_crc_err=0 dphy2cphy_crc_err=0

MIPI_TX2 ctrl2/Pipe2/LinkC(0x0982) raw=0x00 sync_en=0 video_sync=0 sync_lost=0 hdr_crc_correctable=0 hdr_crc_uncorrectable=0 data_crc_err=0 dphy2cphy_crc_err=0

MIPI_TX2 ctrl3/Pipe3/LinkD(0x09C2) raw=0x00 sync_en=0 video_sync=0 sync_lost=0 hdr_crc_correctable=0 hdr_crc_uncorrectable=0 data_crc_err=0 dphy2cphy_crc_err=0

MAX96712 PHY / lock registers, read mid-timeout:

MIPI_PHY0(0x08A0) raw=0xa4 force_csi_out_en=1 force_clk0_en=1 phy_2x4=1

MIPI_PHY2(0x08A2) raw=0x34 PHY0_en=1 PHY1_en=1 PHY2_en=0 PHY3_en=0

MIPI_PHY3(0x08A3) raw=0xe4 phy1_lane_map=0xe phy0_lane_map=0x4

CTRL3(0x001A) raw=0xda LOCKED_A=1 ERROR=0 CMU_LOCKED=1 LOCK_PIN=0

MAX96712 `VPRBS` Video Lock Check, all 4 pipes, read mid-timeout (real, live-active pipe = Pipe0):

VPRBS/Pipe0(0x01DC)=0x81 VIDEO_LOCK=1

VPRBS/Pipe1(0x01FC)=0x80 VIDEO_LOCK=0

VPRBS/Pipe2(0x021C)=0x80 VIDEO_LOCK=0

VPRBS/Pipe3(0x023C)=0x80 VIDEO_LOCK=0

v4l2-compliance

v4l2-compliance 1.26.1, 64 bits, 64-bit time_t

Compliance test for tegra-video device /dev/video0:

Driver Info:
        Driver name      : tegra-video
        Card type        : vi-output, imx568 8-001b
        Bus info         : platform:tegra-capture-vi:0
        Driver version   : 6.8.12
        Capabilities     : 0x84200001
                Video Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : tegra-camrtc-ca
        Model            : NVIDIA Tegra Video Input Device
        Serial           : 
        Bus info         : platform:tegra-capture-vi
        Media version    : 6.8.12
        Hardware revision: 0x00000003 (3)
        Driver version   : 6.8.12
Interface Info:
        ID               : 0x03000016
        Type             : V4L Video
Entity Info:
        ID               : 0x00000014 (20)
        Name             : vi-output, imx568 8-001b
        Function         : V4L2 I/O
        Pad 0x01000015   : 0: Sink
          Link 0x0200001a: from remote pad 0x1000003 of entity '13e00000.host1x:nvcsi@15a00000--1' (FAIL: Unknown sub-device (0002000a)): Data, Enabled

Required ioctls:
        test MC information (see 'Media Driver Info' above): FAIL
                warn: v4l2-compliance.cpp(670): media bus_info 'platform:tegra-capture-vi' differs from V4L2 bus_info 'platform:tegra-capture-vi:0'
        test VIDIOC_QUERYCAP: OK
        test invalid ioctls: OK

Allow for multiple opens:
        test second /dev/video0 open: OK
                warn: v4l2-compliance.cpp(670): media bus_info 'platform:tegra-capture-vi' differs from V4L2 bus_info 'platform:tegra-capture-vi:0'
        test VIDIOC_QUERYCAP: OK
        test VIDIOC_G/S_PRIORITY: OK
        test for unlimited opens: OK

Debug ioctls:
        test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
        test VIDIOC_LOG_STATUS: OK

Input ioctls:
        test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
        test VIDIOC_ENUMAUDIO: OK (Not Supported)
        test VIDIOC_G/S/ENUMINPUT: OK
        test VIDIOC_G/S_AUDIO: OK (Not Supported)
        Inputs: 1 Audio Inputs: 0 Tuners: 0

Output ioctls:
        test VIDIOC_G/S_MODULATOR: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_ENUMAUDOUT: OK (Not Supported)
        test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
        test VIDIOC_G/S_AUDOUT: OK (Not Supported)
        Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:
        test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
        test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
        test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
        test VIDIOC_G/S_EDID: OK (Not Supported)

Control ioctls (Input 0):
        test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
        test VIDIOC_QUERYCTRL: OK
                fail: v4l2-test-controls.cpp(552): could not set valid menu item 1
        test VIDIOC_G/S_CTRL: FAIL
        test VIDIOC_G/S/TRY_EXT_CTRLS: OK
        test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
        test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
        Standard Controls: 1 Private Controls: 14
        Standard Compound Controls: 0 Private Compound Controls: 7

Format ioctls (Input 0):
        test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
        test VIDIOC_G/S_PARM: OK
        test VIDIOC_G_FBUF: OK (Not Supported)
                fail: v4l2-test-formats.cpp(470): pixelformat 56595559 (YUYV) for buftype 1 not reported by ENUM_FMT
        test VIDIOC_G_FMT: FAIL
                fail: v4l2-test-formats.cpp(470): pixelformat 56595559 (YUYV) for buftype 1 not reported by ENUM_FMT
        test VIDIOC_TRY_FMT: FAIL
                fail: v4l2-test-formats.cpp(462): expected EINVAL, but got 16 when getting format for buftype 1
        test VIDIOC_S_FMT: FAIL
        test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
        test Cropping: OK (Not Supported)
        test Composing: OK (Not Supported)
                fail: v4l2-test-formats.cpp(1824): doioctl(node, VIDIOC_S_FMT, &fmt)
                fail: v4l2-test-formats.cpp(1972): testBasicScaling(node, fmt)
        test Scaling: FAIL

Codec ioctls (Input 0):
        test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
        test VIDIOC_G_ENC_INDEX: OK (Not Supported)
        test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)

Buffer ioctls (Input 0):
                fail: v4l2-test-buffers.cpp(573): ret && ret != EINVAL (got 16)
        test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL
                fail: v4l2-test-buffers.cpp(780): q.create_bufs(node, q.g_max_num_buffers())
        test CREATE_BUFS maximum buffers: FAIL
                fail: v4l2-test-buffers.cpp(814): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing or malfunctioning.
                fail: v4l2-test-buffers.cpp(815): VIDIOC_EXPBUF is supported, but the V4L2_MEMORY_MMAP support is missing, probably due to earlier failing format tests.
        test VIDIOC_EXPBUF: OK (Not Supported)
        test Requests: OK (Not Supported)

Total for tegra-video device /dev/video0: 47, Succeeded: 39, Failed: 8, Warnings: 2

hello oleksandr.kovalchuk,

just for confirmation,
Leopard team is one of ecosystem partners, did you contact with Leopard team for the supports?
for instance, you should also check whether they’ve sensor driver that’s ready for JP-7.2/r39.2

Yes — Leopard Imaging is our module/sensor vendor and we’re in direct contact with them. Their official reference driver package for this IMX568 + MAX9295 GMSL2 kit currently targets L4T R36.5.0 / JetPack 6.x. They have not shipped us a package built against JetPack 7.2/R39.2, so to get the cameras running on 7.2 we rebuilt their reference driver against R39.2 ourselves.
We wanted to raise it on this side, because the failure signature - deserializer confirmed fully healthy at the register level, yet a persistent uncorr_err timeout on tegra-capture-vi is occurred.
That makes us suspect this may not be purely a Leopard-driver-porting issue, but something in the NVCSI/RCE receive-path’s interaction with GMSL2 deserializers more generally.

We were able to get the video stream up and running on JP 6.2. But if possible, we’d like to figure out how to port it to a newer version.
Are there perhaps some specific considerations we haven’t taken into account?

hello oleksandr.kovalchuk,

thanks for sharing the information.

here’s developer guide, Camera Driver Porting.
please review your driver accordingly.

Hi @oleksandr.kovalchuk,

Thanks for the detailed information. Since the GMSL link is locked and the MAX96712 reports video lock, the main concern appears to be on the Orin VI/NVCSI configuration side rather than the GMSL link itself.

The key message is:

vi5_update_channel_match_data: match configuration is already in use

This usually points to a conflict in the CSI stream / virtual channel configuration.

As a first step, please check the following in the active device tree:

  • Make sure only one camera is using the same csi_stream and vc-id.

  • Verify that the vc-id matches between the GMSL link, sensor mode, NVCSI endpoint, and VI endpoint.

  • Verify that the port-index used by NVCSI and VI matches the physical CSI port connected to the MAX96712.

  • Disable any unused/default camera nodes or overlays that may still be enabled.

  • Compare these values with the working JetPack 6.2 configuration.

It would also be useful to test with only one camera enabled. If the same error remains, then we can focus specifically on the VI/NVCSI mapping or any changes required when moving the driver from JP6 to JP7.

If you can share the relevant vi, nvcsi, sensor, and gmsl-link device-tree sections, it would be helpful to review the mapping and check for possible issues/solutions.

Regards,
Pedro

Embedded SW Engineer at RidgeRun
Contact us: support@ridgerun.com
Developers wiki: https://developer.ridgerun.com
Website: www.ridgerun.com