I am using Jetpack 6.2.1 Orin NX development kit. I am using 4 ar0234 sensors connected to max96724 deserializer. Using VC ID’s 0,1,2,3, i am receiving all 4 cameras data in the (4 lane) CAM1 port of Orin NX.
The resolution is 1920 x 1200 @ 30 fps (Output format UYVY 16bpp ). The sensor datarate is 400Mbps/lane. The deserializer output datarate is 1600Mbps per lane.
So,
pix_clk_hz = 400 x 4/16 = 100 MHz and
ser_des_pix_clk_hz = (1600/2) x 4/16 x 4 (Since 4 VC are used) = 800MHz.
Also, i have enabled de-skew in both deserializer settings and in the dtb. But, when i try to stream, i am facing kernel crashes. But, lower ser_des_pix_clk_hz values does not seems give kernel crash. For Example, pix_clk_hz = 216MHz and ser_des_pix_clk_hz = 325MHz does not seems to give these issues. Could you guys help me to solve this issue?
Case 1 : When i disable deskew in dtb, i could stream with the above pix_clk_hz and ser_des_pix_clk_hz values itself (The ser_des_pix_clk_hz <= 4 * pix_clk_hz does not seems to affect the stream).
Case 2 : If i remove ser_des_pix_clk_hz and disable deskew in the dtb, i could stream only with the help of boosting VI/ISP/NVCSI clocks.
So, the issue here is not the clock values, it is related to de-skew. During kernel crash (deskew enabled case), i could see that the call trace is leading to deskew setup function. The kernel crash log is as follows.
[Tue May 26 13:00:25 2026] Call trace:
[Tue May 26 13:00:25 2026] nvcsi_deskew_setup+0x298/0xc00 [nvhost_nvcsi]
[Tue May 26 13:00:25 2026] tegra_csi_s_stream+0x21c/0x2f0 [tegra_camera]
[Tue May 26 13:00:25 2026] tegra_channel_set_stream+0x4ac/0x4e0 [tegra_camera]
[Tue May 26 13:00:25 2026] vi5_channel_start_streaming+0x28c/0x410 [tegra_camera]
[Tue May 26 13:00:25 2026] tegra_channel_start_streaming+0x58/0x90 [tegra_camera]
[Tue May 26 13:00:25 2026] vb2_core_queue_release+0xe4/0x1f0 [videobuf2_common]
[Tue May 26 13:00:25 2026] vb2_core_streamon+0xac/0x470 [videobuf2_common]
[Tue May 26 13:00:25 2026] vb2_ioctl_streamon+0x74/0xd0 [videobuf2_v4l2]
[Tue May 26 13:00:25 2026] v4l2_video_std_frame_period+0x244/0x1170 [videodev]
[Tue May 26 13:00:25 2026] v4l2_norm_to_name+0x530/0x15d0 [videodev]
[Tue May 26 13:00:25 2026] video_usercopy+0x280/0x680 [videodev]
[Tue May 26 13:00:25 2026] video_ioctl2+0x44/0x90 [videodev]
[Tue May 26 13:00:25 2026] v4l2_prio_check+0x10c/0x160 [videodev]
[Tue May 26 13:00:25 2026] __arm64_sys_ioctl+0xb4/0x100
[Tue May 26 13:00:25 2026] invoke_syscall+0x5c/0x130
[Tue May 26 13:00:25 2026] el0_svc_common.constprop.0+0x64/0x110
[Tue May 26 13:00:25 2026] do_el0_svc+0x74/0xa0
[Tue May 26 13:00:25 2026] el0_svc+0x28/0x80
[Tue May 26 13:00:25 2026] el0t_64_sync_handler+0xa4/0x130
[Tue May 26 13:00:25 2026] el0t_64_sync+0x14/0x1a8
[Tue May 26 13:00:25 2026] Code: f9400780 9100e39b b9400b62 b9403b81 (f9400400)
—[ end trace 49d5cb959c652a90 ]—
[Tue May 26 13:00:26 2026] Kernel panic - not syncing:
[Tue May 26 13:00:26 2026] Oops: Fatal exception
[Tue May 26 13:00:27 2026] Index = 0x0003, format = 0x59565955, width = 1920, height = 1200, frate
num = 30
My concern is, with both cases, i am getting corr err occasionally which is leading to frame drop.
How can i eradicate this issue inorder to stabilize my stream in all 4 cameras ? I am aware that deskew is required incase of datarate>1.5Gbps/lane.
Do i need to configure anything additionally to enable deskew properly in Orin NX?
Please don’t enable the nvcsi deskew in the device tree.
Current the deskew is handle by RCE firmware(RTCPU) the kernel nvcsi deskew is deprecated.
Skew calibration is required if sensor or deserializer is using DPHY, and the output data rate is > 1.5Gbps.
An initiation deskew signal should be sent by sensor or deserializer to perform the skew calibration. If the deskew signals is not sent, the receiver will stall, and the capture will time out.
You can calculate the output data rate with the following equation:
Output data rate = (sensor or deserializer pixel clock in hertz) * (bits per pixel) / (number of CSI lanes)
So, Just enabling deskew in the serilaizer and deserializer is pretty enough. The Nvidia Orin NX will take care of the deskew in the RCE firmware itself, hence there is no need for enabling deskew in the dtb side. is that all nvidia?
Can you specify from which jetpack we should consider regarding this deskew auto enabling mechanism in RCE firmware for Orin/Xavier Series Jetson modules?
I hope by telling “AGX Orin/Xavier serials”, you are mentioning all Orin/Xavier series jetson modules. Thanks nvidia.
Just an update regarding the stream stability. While calculating datarate for deserializer output, i have not included the GMSL overhead to it. As per Max96724 datasheet, GMSL overhead is roughly 14%. So, after considering that too, i have got the updated clock values as follows, which gives stable streaming in Orin NX.
pix_clk_hz = “100000000”; // in Hz
serdes_pix_clk_hz = “950000000”; // in Hz
deserializer output clock = 1.9GBPS/lane (rounded-off from 1.824Gbps/lane).