How can mipi d-phy rx per lanes data rate up to 2.5Gbps?

I used a mipi pattern generator (Introspect SV3C) to test the mipi rx function of the Jetson AGX Orin.
According to the product specification, the mipi d-phy per lanes data rate can be received at 2.5Gbps, but the current test result can only capture image integrity with up to 2.45Gbps@4lanes.
Once the capture image in over 2.45Gbps, but there are pixels loss in the image.

Testing condition:
Using v4l2cuda (nvidia sample code) to capture image, and pattern generator use vertical colorbar as image pattern for testing.
The dtsi file used in the mipi pattern generator are modified from the dtsi file of verify success camera.

How can I get mipi d-phy rx per lanes data rate up to 2.5Gbps?
I will provide the dts file and the capture.cpp (v4l2cuda) to you, that can help me solve the problem, thanks!

capture.cpp (24.8 KB)
tegra234-camera-pg_4lane.dtsi (11.7 KB)

hello shawn_huang,

may I know the Jetpack release you’re working with?
as you can see in the developer guide. SerDes Pixel Clock.

Skew calibration is required if sensor or deserializer is using DPHY, and the output data rate is > 1.5Gbps.

deskew calibration is a must if data-rate > 1.5 Gbps, Else the camera firmware will continue to wait for deskew signal from the sensor side. it’ll enable pixel parser when deskew calibration has completed.

and… we did address some issues related to deskew timeout, please moving to the latest Jetpack release for verification.

Hi JerryChang:

Current version:

cat /etc/nv_tegra_release
# R35 (release), REVISION: 3.1, GCID: 32827747, BOARD: t186ref, EABI: aarch64, DATE: Sun Mar 19 15:19:21 UTC 2023

hello shawn_huang,

please see-also developer guide, Sensor Pixel Clock to review pixel clock setting,
FYI, I usually use this to examine the clock settings,
i.e. pixel_clk_hz = sensor data rate per lane (Mbps) * number of lanes / bits per pixel

if that’s possible.
please moving to the latest release, JetPack 5.1.2, thanks

Hi JerryChang:

pixel_clk_hz setting in dtsi:
1G (pixel_clk_hz) = 2.5Gbps (sensor data rate per lane) * 4 (number of lanes) / 10 (bits per pixel)

I want data rate up to 2.5Gbps must upgrade to JetPack 5.1.2?

could you please share the logs or abnormal capture results for reference, thanks

Hi JerryChang:

I use vertical colorbar for 2.45G@100fps as pattern generator pattern.

The location of loss pixel is x= 2937, y=166 for received raw file.

out_2.45g_100fps_c20_dts2.52g.raw (16.2 MB)

I would like to viewing the content, may I also know the resolution of this raw file, thanks

Hi JerryChang:

raw file as image size = 3872x2192
valid image resolution = 3864x2192, so right boundary has black column.

hello shawn_huang,

sorry, I don’t see anything wrong.
could you please take a snapshot or print screen to illustrate loss pixel.

BTW, I’m using 3rdparty tool, 7yuv to view the raw content.

Hi JerryChang:

I provide all (non-zoom) & loss pixel (zoom-in) snapshot. (31.9 KB)

I’m use ImageJ to view the raw file.

ImageJ has print x & y of loss pixel for zoom-in snapshot, BTW left-top as x=0, y=0.

hello shawn_huang,

is it random?
it looks like software TPG issue if that’s always pixel loss on the same location (2937,166).

Hi JerryChang:

is it random?
YES! The loss pixel is random for image.
The pixel error rate also random, it can 0.0001%~0.02% (number of error pixel as 1X~17XX) for 2.45Gbps, if up to 2.5Gbps, it can 0.02%~3.8% (number of error pixel as 17XX~32XXXX) ,so it isn’t stable value.