ORIN Nano Custom Sensor Device Tree MIPI-CSI2

We have a custom sensor running on a custom board for ORIN nano. Our sensor is connected to CSI0/CSI1 4-lane, and I2C is working, while CSI is not. We can measure CSI data on the pins arriving at the framerate we have set.

However, streaming with v4l2 does not work and the dmesg logs show errors.

We are running on Jetpack 5.

Here is our trace log:

Last login: Wed Apr 29 15:02:23 2026 from 10.0.3.3
jetson@jetson:~$ sudo cat /sys/kernel/debug/tracing/trace
[sudo] password for jetson:

tracer: nop



entries-in-buffer/entries-written: 15/15   #P:6



_-----=> irqs-off

/ _----=> need-resched

| / _—=> hardirq/softirq

|| / _–=> preempt-depth

||| /     delay

TASK-PID     CPU#      ||||    TIMESTAMP  FUNCTION

| |         |       ||||       |         |

kworker/4:2-115    [004] …   338.108242: rtcpu_string: tstamp:11117098283 id:0x04010000 str:“VM0 deactivating.”
kworker/4:2-115    [004] …   359.844984: rtcpu_string: tstamp:111797453942 id:0x04010000 str:“VM0 activating.”
kworker/4:2-115    [004] …   359.901001: rtcpu_vinotify_event: tstamp:11797921729 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:377523269152 data:0x759d580010000000
kworker/4:2-115    [004] …   359.901003: rtcpu_vinotify_event: tstamp:11797921993 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:377523278944 data:0x0000000031000001
kworker/4:2-115    [004] …   359.901003: rtcpu_vinotify_event: tstamp:11797922284 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:377523369952 data:0x759d550010000000
kworker/4:2-115    [004] …   359.901003: rtcpu_vinotify_event: tstamp:11797922531 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:377523379872 data:0x0000000031000002
kworker/4:2-115    [004] …   362.537058: rtcpu_vinotify_event: tstamp:11880703256 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:380178291232 data:0x759d580010000000
kworker/4:2-115    [004] …   362.537063: rtcpu_vinotify_event: tstamp:11880703514 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:380178300928 data:0x0000000031000001
kworker/4:2-115    [004] …   362.537064: rtcpu_vinotify_event: tstamp:11880703806 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:380178391968 data:0x759d550010000000
kworker/4:2-115    [004] …   362.537065: rtcpu_vinotify_event: tstamp:11880704055 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:380178401920 data:0x0000000031000002
kworker/4:2-115    [004] …   365.121121: rtcpu_vinotify_event: tstamp:11961100018 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:382748198016 data:0x759d580010000000
kworker/4:2-115    [004] …   365.121125: rtcpu_vinotify_event: tstamp:11961100280 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:382748207776 data:0x0000000031000001
kworker/4:2-115    [004] …   365.121126: rtcpu_vinotify_event: tstamp:11961100573 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:382748269408 data:0x759d550010000000
kworker/4:2-115    [004] …   365.121127: rtcpu_vinotify_event: tstamp:11961100831 cch:0 vi:0 tag:VIFALC_TDSTATE channel:0x23 frame:0 vi_tstamp:382748279296 data:0x0000000031000002
kworker/4:2-115    [004] …   376.041540: rtcpu_string: tstamp:12303137146 id:0x04010000 str:“VM0 deactivating.”

jetson@jetson:~$

I noticed this thread had similar problems that could be solved by increasing the clocks. This did not solve it for me.

dmesg error:

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

[  373.995454] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel

[  374.005860] (NULL device *): vi_capture_control_message: NULL VI channel received

[  374.013697] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=1, csi_port=1

[  374.024807] (NULL device *): vi_capture_control_message: NULL VI channel received

[  374.032650] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 1 vc- 0

[  374.043531] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel

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

[  376.811206] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel

[  376.820797] (NULL device *): vi_capture_control_message: NULL VI channel received

[  376.828532] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=1, csi_port=1

[  376.839214] (NULL device *): vi_capture_control_message: NULL VI channel received

[  377.858068] tegra194-vi5 13e40000.host1x:vi0@15c00000: capture control message timed out

[  377.866443] tegra194-vi5 13e40000.host1x:vi0@15c00000: vi_capture_control_send_message: failed to send IVC control message

[  378.882104] tegra194-vi5 13e40000.host1x:vi0@15c00000: capture control message timed out

[  378.890544] tegra-camrtc-capture-vi tegra-capture-vi: vi capture setup failed

[  378.897920] tegra-camrtc-capture-vi tegra-capture-vi: fatal: error recovery failed

[  384.222561] ------------[ cut here ]------------

[  384.227407] refcount_t: addition on 0; use-after-free.

[  384.227441] WARNING: CPU: 0 PID: 4979 at lib/refcount.c:25 refcount_warn_saturate+0x98/0x140

[  384.236123] Modules linked in: fuse nvidia_modeset(OE) lzo_rle lzo_compress zram ramoops reed_solomon loop nvgpu aes_ce_blk crypto_simd snd_soc_tegra186_asrc snd_soc_tegra210_ope cryptd snd_soc_tegra186_arad snd_soc_tegra210_iqc snd_soc_tegra210_mvc snd_soc_tegra186_dspk aes_ce_cipher snd_soc_tegra210_afc snd_soc_tegra210_dmic snd_soc_tegra210_adx snd_soc_tegra210_admaif snd_soc_tegra210_amx snd_soc_tegra210_i2s snd_soc_tegra210_mixer snd_soc_tegra_pcm snd_soc_tegra210_sfc ghash_ce sha2_ce snd_soc_tegra_machine_driver sha256_arm64 sha1_ce snd_soc_tegra_utils snd_soc_simple_card_utils snd_soc_spdif_tx r8168 pwm_fan snd_hda_codec_hdmi snd_hda_tegra snd_hda_codec snd_hda_core userspace_alert snd_soc_tegra210_ahub ina3221 tegra210_adma tegra_bpmp_thermal fusb301 spi_tegra114 IMX991(E) nvidia(OE) binfmt_misc nvmap ip_tables x_tables [last unloaded: mtd]

[  384.236267] CPU: 0 PID: 4979 Comm: v4l2-ctl Tainted: G           OE     5.10.216-tegra #4

[  384.236270] Hardware name: NVIDIA NVIDIA Orin Nano Developer Kit/Jetson, BIOS 6.4-43803471 01/27/2026

[  384.236276] pstate: 60400009 (nZCv daif +PAN -UAO -TCO BTYPE=--)

[  384.236281] pc : refcount_warn_saturate+0x98/0x140

[  384.236285] lr : refcount_warn_saturate+0x98/0x140

[  384.236287] sp : ffff8000235eba80

[  384.236290] x29: ffff8000235eba80 x28: ffff1f2f0eccac40

[  384.236296] x27: 0000000000000000 x26: 0000ffff817e8b0c

[  384.236302] x25: ffffdfa0d2846000 x24: ffff1f2f0eccb240

[  384.236308] x23: ffff1f30588b61f8 x22: ffff1f30588ac0a0

[  384.236313] x21: ffff1f2f0eccc9f0 x20: ffff1f30588b6550

[  384.236319] x19: ffff1f2f0eccc9c0 x18: 0000000000000010

[  384.236324] x17: 0000000000000000 x16: ffffdfa0d0e35040

[  384.236330] x15: ffff1f2f0eccb1b0 x14: ffffffffffffffff

[  384.236335] x13: ffff8000a35eb6b7 x12: ffff8000235eb6bf

[  384.236341] x11: ffffdfa0d2e02880 x10: 0000000000000ab0

[  384.236347] x9 : ffff8000235eba80 x8 : 6572662d72657466

[  384.236352] x7 : 612d657375203b30 x6 : c0000000ffffefff

[  384.236358] x5 : ffff1f306e8c8970 x4 : ffffdfa0d2b57b48

[  384.236363] x3 : 0000000000000001 x2 : ffff1f306e8c8978

[  384.236369] x1 : 0000000000000000 x0 : 0000000000000000

[  384.236376] Call trace:

[  384.236380]  refcount_warn_saturate+0x98/0x140

[  384.236387]  kthread_stop+0x4c/0x290

[  384.236396]  vi5_channel_stop_kthreads+0x54/0x70

[  384.236401]  vi5_channel_stop_streaming+0xa8/0xb0

[  384.236404]  tegra_channel_stop_streaming+0x3c/0x70

[  384.236411]  __vb2_queue_cancel+0x40/0x220

[  384.236415]  vb2_core_queue_release+0x30/0x60

[  384.236420]  _vb2_fop_release+0x88/0xb0

[  384.236424]  tegra_channel_close+0x68/0x190

[  384.236432]  v4l2_release+0xc0/0x100

[  384.236439]  __fput+0x80/0x260

[  384.236443]  ____fput+0x24/0x30

[  384.236449]  task_work_run+0x88/0xe0

[  384.236455]  do_exit+0x35c/0xb00

[  384.236460]  do_group_exit+0x4c/0xb0

[  384.236465]  get_signal+0x184/0x8c0

[  384.236472]  do_notify_resume+0x18c/0x990

[  384.236476]  work_pending+0xc/0x738

[  384.236480] ---[ end trace 5758ce605bf002e4 ]---

[  384.241308] ------------[ cut here ]------------

[  384.246192] refcount_t: underflow; use-after-free.

[  384.246212] WARNING: CPU: 0 PID: 4979 at lib/refcount.c:28 refcount_warn_saturate+0xec/0x140

[  384.254890] Modules linked in: fuse nvidia_modeset(OE) lzo_rle lzo_compress zram ramoops reed_solomon loop nvgpu aes_ce_blk crypto_simd snd_soc_tegra186_asrc snd_soc_tegra210_ope cryptd snd_soc_tegra186_arad snd_soc_tegra210_iqc snd_soc_tegra210_mvc snd_soc_tegra186_dspk aes_ce_cipher snd_soc_tegra210_afc snd_soc_tegra210_dmic snd_soc_tegra210_adx snd_soc_tegra210_admaif snd_soc_tegra210_amx snd_soc_tegra210_i2s snd_soc_tegra210_mixer snd_soc_tegra_pcm snd_soc_tegra210_sfc ghash_ce sha2_ce snd_soc_tegra_machine_driver sha256_arm64 sha1_ce snd_soc_tegra_utils snd_soc_simple_card_utils snd_soc_spdif_tx r8168 pwm_fan snd_hda_codec_hdmi snd_hda_tegra snd_hda_codec snd_hda_core userspace_alert snd_soc_tegra210_ahub ina3221 tegra210_adma tegra_bpmp_thermal fusb301 spi_tegra114 IMX991(E) nvidia(OE) binfmt_misc nvmap ip_tables x_tables [last unloaded: mtd]

[  384.254987] CPU: 0 PID: 4979 Comm: v4l2-ctl Tainted: G        W  OE     5.10.216-tegra #4

[  384.254990] Hardware name: NVIDIA NVIDIA Orin Nano Developer Kit/Jetson, BIOS 6.4-43803471 01/27/2026

[  384.254994] pstate: 60400009 (nZCv daif +PAN -UAO -TCO BTYPE=--)

[  384.254998] pc : refcount_warn_saturate+0xec/0x140

[  384.255001] lr : refcount_warn_saturate+0xec/0x140

[  384.255003] sp : ffff8000235eba80

[  384.255005] x29: ffff8000235eba80 x28: ffff1f2f0eccac40

[  384.255010] x27: 0000000000000000 x26: 0000ffff817e8b0c

[  384.255016] x25: ffffdfa0d2846000 x24: ffff1f2f0eccb240

[  384.255021] x23: ffff1f30588b61f8 x22: ffff1f30588ac0a0

[  384.255026] x21: ffff1f2f0eccc9f0 x20: 0000000000000000

[  384.255031] x19: ffff1f2f0eccc9c0 x18: 0000000000000010

[  384.255036] x17: 0000000000000000 x16: ffffdfa0d0e35040

[  384.255041] x15: ffff1f2f0eccb1b0 x14: ffffffffffffffff

[  384.255046] x13: ffff8000a35eb6b7 x12: ffff8000235eb6bf

[  384.255051] x11: ffffdfa0d2e02880 x10: 0000000000000ab0

[  384.255056] x9 : ffff8000235eba80 x8 : 72657466612d6573

[  384.255061] x7 : 75203b776f6c6672 x6 : c0000000ffffefff

[  384.255066] x5 : ffff1f306e8c8970 x4 : ffffdfa0d2b57b48

[  384.255071] x3 : 0000000000000001 x2 : ffff1f306e8c8978

[  384.255076] x1 : 0000000000000000 x0 : 0000000000000000

[  384.255081] Call trace:

[  384.255085]  refcount_warn_saturate+0xec/0x140

[  384.255089]  kthread_stop+0x27c/0x290

[  384.255094]  vi5_channel_stop_kthreads+0x54/0x70

[  384.255098]  vi5_channel_stop_streaming+0xa8/0xb0

[  384.255101]  tegra_channel_stop_streaming+0x3c/0x70

[  384.255105]  __vb2_queue_cancel+0x40/0x220

[  384.255109]  vb2_core_queue_release+0x30/0x60

[  384.255113]  _vb2_fop_release+0x88/0xb0

[  384.255117]  tegra_channel_close+0x68/0x190

[  384.255122]  v4l2_release+0xc0/0x100

[  384.255127]  __fput+0x80/0x260

[  384.255131]  ____fput+0x24/0x30

[  384.255136]  task_work_run+0x88/0xe0

[  384.255141]  do_exit+0x35c/0xb00

[  384.255144]  do_group_exit+0x4c/0xb0

[  384.255149]  get_signal+0x184/0x8c0

[  384.255154]  do_notify_resume+0x18c/0x990

[  384.255158]  work_pending+0xc/0x738

[  384.255160] ---[ end trace 5758ce605bf002e5 ]---

[  384.268666] bwmgr API not supported

[  385.282196] tegra194-vi5 13e40000.host1x:vi0@15c00000: capture control message timed out

[  385.294132] tegra194-vi5 13e40000.host1x:vi0@15c00000: csi_stream_release: failed to disable nvcsi tpg on stream 1 virtual channel 0

device tree:

/ {
tegra-capture-vi {
num-channels = <1>;
ports {
#address-cells = <1>;
#size-cells = <0>;

		vi_port0: port@0 {
			reg =<0>;
			IMX991_vi_in0: endpoint {
				port-index = <0>;
				bus-width =	<4>;
				remote-endpoint =<&IMX991_csi_out0>;
			};
		};
	};
};

host1x@13e00000 {
	nvcsi@15a00000 {
		num-channels = <1>;
		#address-cells = <1>;
		#size-cells = <0>;
		csi_chan0: channel@0 {
			reg = <0>;
			ports {
				#address-cells = <1>;
				#size-cells = <0>;
				csi_chan0_port0: port@0 {
					reg =<0>;
					IMX991_csi_in0: endpoint@0 {
						port-index = <0>;
						bus-width = <4>;
						remote-endpoint = <&IMX991_dual_out0>;
					};
				};

				csi_chan0_port1: port@1 {
					reg =<1>;
					IMX991_csi_out0: endpoint@1 {
						remote-endpoint =<&IMX991_vi_in0>;
					};
				};
			};
		};
	};
};

i2c@3180000 {
	IMX991_cam0: IMX991_a@36 {
		status = "okay";
		compatible = "nvidia,IMX991";
		reg = <0x36>;

		devnode = "video0";

		/* Physical dimensions of sensor */
		physical_w = "15.0";
		physical_h = "12.5";

		sensor_model ="IMX991";
		/* Define any required hw resources needed by driver */
		/* ie. clocks, io pins, power sources */

		/* Defines number of frames to be dropped by driver internally after applying */
		/* sensor crop settings. Some sensors send corrupt frames after applying */
		/* crop co-ordinates */
		post_crop_frame_drop = "0";

		/* Convert Gain to unit of dB (decibel) befor passing to kernel driver */
		use_decibel_gain = "false";

		/* if true, delay gain setting by one frame to be in sync with exposure */
		delayed_gain = "true";

		/* enable CID_SENSOR_MODE_ID for sensor modes selection */
		use_sensor_mode_id = "true";

		/**
		* ==== Modes ====
		* A modeX node is required to support v4l2 driver
		* implementation with NVIDIA camera software stack
		*
		* == Signal properties ==
		*
		* phy_mode = "";
		* PHY mode used by the MIPI lanes for this device
		*
		* tegra_sinterface = "";
		* CSI Serial interface connected to tegra
		* Incase of virtual HW devices, use virtual
		* For SW emulated devices, use host
		*
		* pix_clk_hz = "";
		* Sensor pixel clock used for calculations like exposure and framerate
		*
		* readout_orientation = "0";
		* Based on camera module orientation.
		* Only change readout_orientation if you specifically
		* Program a different readout order for this mode
		*
		* lane_polarity
		* Based on the camera connector pin.
		* CSIx_D0 | CSIx_D1 | CSI(X+1)_D0 | CSI(X+1)CSIx_D1
		*    LSB  |   BIT1  |     BIT2    |      MSB
		* if there is a polarity swap on any lane, the bit corrsponding
		* to the lane should be set
		* e.g. polarity swap on CSIx_D0 only -> lane_polarity = "1"; 0001
		* e.g. polarity swap on CSIx_D1 and CSI(X+1)_D0 -> lane_polarity = "6"; 0110
		*
		* == Image format Properties ==
		*
		* active_w = "";
		* Pixel active region width
		*
		* active_h = "";
		* Pixel active region height
		*
		* pixel_t = "";
		* The sensor readout pixel pattern
		*
		* line_length = "";
		* Pixel line length (width) for sensor mode.
		*
		* == Source Control Settings ==
		*
		* Gain factor used to convert fixed point integer to float
		* Gain range [min_gain/gain_factor, max_gain/gain_factor]
		* Gain step [step_gain/gain_factor is the smallest step that can be configured]
		* Default gain [Default gain to be initialized for the control.
		*     use min_gain_val as default for optimal results]
		* Framerate factor used to convert fixed point integer to float
		* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
		* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
		* Default Framerate [Default framerate to be initialized for the control.
		*     use max_framerate to get required performance]
		* Exposure factor used to convert fixed point integer to float
		* For convenience use 1 sec = 1000000us as conversion factor
		* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
		* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
		* Default Exposure Time [Default exposure to be initialized for the control.
		*     Set default exposure based on the default_framerate for optimal exposure settings]
		*
		* gain_factor = ""; (integer factor used for floating to fixed point conversion)
		* min_gain_val = ""; (ceil to integer)
		* max_gain_val = ""; (ceil to integer)
		* step_gain_val = ""; (ceil to integer)
		* default_gain = ""; (ceil to integer)
		* Gain limits for mode
		*
		* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
		* min_exp_time = ""; (ceil to integer)
		* max_exp_time = ""; (ceil to integer)
		* step_exp_time = ""; (ceil to integer)
		* default_exp_time = ""; (ceil to integer)
		* Exposure Time limits for mode (sec)
		*
		* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
		* min_framerate = ""; (ceil to integer)
		* max_framerate = ""; (ceil to integer)
		* step_framerate = ""; (ceil to integer)
		* default_framerate = ""; (ceil to integer)
		* Framerate limits for mode (fps)
		*
		* embedded_metadata_height = "";
		* Sensor embedded metadata height in units of rows.
		* If sensor does not support embedded metadata value should be 0.
		*/
		mode0 {
			mclk_khz = "74250";
			num_lanes = "4";
			tegra_sinterface = "serial_a";
			lane_polarity = "6";
			phy_mode = "DPHY";
			discontinuous_clk = "no";
			dpcm_enable = "false";
			cil_settletime = "0";
			dynamic_pixel_bit_depth = "10";
			csi_pixel_bit_depth = "10";
			mode_type = "bayer";
			pixel_phase = "rggb";

			active_w = "768";
			active_h = "539";
			readout_orientation = "0";
			line_length = "1000";
			inherent_gain = "1";
			pix_clk_hz = "237600000";

			gain_factor = "10";
			min_gain_val = "0";
			max_gain_val = "420";
			step_gain_val = "1";
			default_gain = "0";
			min_hdr_ratio = "1";
			max_hdr_ratio = "1";
			framerate_factor = "1000000";
			min_framerate = "1000000";
			max_framerate = "240000000";
			step_framerate = "1";
			default_framerate= "30000000";
			exposure_factor = "1000000";
			min_exp_time = "100";
			max_exp_time = "1000000";
			step_exp_time = "1";
			default_exp_time = "9000";
			embedded_metadata_height = "0";
		};
		mode1 {
			mclk_khz = "24000";
			num_lanes = "4";
			tegra_sinterface = "serial_a";
			lane_polarity = "6";
			phy_mode = "DPHY";
			discontinuous_clk = "no";
			dpcm_enable = "false";
			cil_settletime = "0";
			dynamic_pixel_bit_depth = "10";
			csi_pixel_bit_depth = "10";
			mode_type = "bayer";
			pixel_phase = "rggb";

			active_w = "384";
			active_h = "279";
			readout_orientation = "0";
			line_length = "1000";
			inherent_gain = "1";
			pix_clk_hz = "237600000";

			gain_factor = "10";
			min_gain_val = "0";
			max_gain_val = "420";
			step_gain_val = "1";
			default_gain = "0";
			min_hdr_ratio = "1";
			max_hdr_ratio = "1";
			framerate_factor = "1000000";
			min_framerate = "1000000";
			max_framerate = "451000000";
			step_framerate = "1";
			default_framerate= "30000000";
			exposure_factor = "1000000";
			min_exp_time = "100";
			max_exp_time = "1000000";
			step_exp_time = "1";
			default_exp_time = "9000";
			embedded_metadata_height = "0";
		};
		mode2 {
			mclk_khz = "24000";
			num_lanes = "4";
			tegra_sinterface = "serial_a";
			lane_polarity = "6";
			phy_mode = "DPHY";
			discontinuous_clk = "no";
			dpcm_enable = "false";
			cil_settletime = "0";
			dynamic_pixel_bit_depth = "10";
			csi_pixel_bit_depth = "10";
			mode_type = "bayer";
			pixel_phase = "rggb";

			active_w = "768";
			active_h = "279";
			readout_orientation = "0";
			line_length = "1000";
			inherent_gain = "1";
			pix_clk_hz = "237600000";

			gain_factor = "10";
			min_gain_val = "0";
			max_gain_val = "420";
			step_gain_val = "1";
			default_gain = "0";
			min_hdr_ratio = "1";
			max_hdr_ratio = "1";
			framerate_factor = "1000000";
			min_framerate = "1000000";
			max_framerate = "451000000";
			step_framerate = "1";
			default_framerate= "30000000";
			exposure_factor = "1000000";
			min_exp_time = "100";
			max_exp_time = "1000000";
			step_exp_time = "1";
			default_exp_time = "9000";
			embedded_metadata_height = "0";
		};
		mode3 {
			mclk_khz = "24000";
			num_lanes = "4";
			tegra_sinterface = "serial_a";
			lane_polarity = "6";
			phy_mode = "DPHY";
			discontinuous_clk = "no";
			dpcm_enable = "false";
			cil_settletime = "0";
			dynamic_pixel_bit_depth = "10";
			csi_pixel_bit_depth = "10";
			mode_type = "bayer";
			pixel_phase = "rggb";

			active_w = "768";
			active_h = "83";
			readout_orientation = "0";
			line_length = "1000";
			inherent_gain = "1";
			pix_clk_hz = "237600000";

			gain_factor = "10";
			min_gain_val = "0";
			max_gain_val = "420";
			step_gain_val = "1";
			default_gain = "0";
			min_hdr_ratio = "1";
			max_hdr_ratio = "1";
			framerate_factor = "1000000";
			min_framerate = "1000000";
			max_framerate = "3000000000";
			step_framerate = "1";
			default_framerate= "30000000";
			exposure_factor = "1000000";
			min_exp_time = "100";
			max_exp_time = "1000000";
			step_exp_time = "1";
			default_exp_time = "9000";
			embedded_metadata_height = "0";
		};
		mode4 {
			mclk_khz = "24000";
			num_lanes = "4";
			tegra_sinterface = "serial_a";
			lane_polarity = "6";
			phy_mode = "DPHY";
			discontinuous_clk = "no";
			dpcm_enable = "false";
			cil_settletime = "0";
			dynamic_pixel_bit_depth = "10";
			csi_pixel_bit_depth = "10";
			mode_type = "bayer";
			pixel_phase = "rggb";

			active_w = "768";
			active_h = "83";
			readout_orientation = "0";
			line_length = "1000";
			inherent_gain = "1";
			pix_clk_hz = "237600000";

			gain_factor = "10";
			min_gain_val = "0";
			max_gain_val = "420";
			step_gain_val = "1";
			default_gain = "0";
			min_hdr_ratio = "1";
			max_hdr_ratio = "1";
			framerate_factor = "1000000";
			min_framerate = "1000000";
			max_framerate = "3000000000";
			step_framerate = "1";
			default_framerate= "30000000";
			exposure_factor = "1000000";
			min_exp_time = "100";
			max_exp_time = "1000000";
			step_exp_time = "1";
			default_exp_time = "9000";
			embedded_metadata_height = "0";
		};
		mode5 {
			mclk_khz = "24000";
			num_lanes = "4";
			tegra_sinterface = "serial_a";
			lane_polarity = "6";
			phy_mode = "DPHY";
			discontinuous_clk = "no";
			dpcm_enable = "false";
			cil_settletime = "0";
			dynamic_pixel_bit_depth = "10";
			csi_pixel_bit_depth = "10";
			mode_type = "bayer";
			pixel_phase = "rggb";

			active_w = "768";
			active_h = "147";
			readout_orientation = "0";
			line_length = "1000";
			inherent_gain = "1";
			pix_clk_hz = "237600000";

			gain_factor = "10";
			min_gain_val = "0";
			max_gain_val = "420";
			step_gain_val = "1";
			default_gain = "0";
			min_hdr_ratio = "1";
			max_hdr_ratio = "1";
			framerate_factor = "1000000";
			min_framerate = "1000000";
			max_framerate = "3000000000";
			step_framerate = "1";
			default_framerate= "30000000";
			exposure_factor = "1000000";
			min_exp_time = "100";
			max_exp_time = "1000000";
			step_exp_time = "1";
			default_exp_time = "9000";
			embedded_metadata_height = "0";
		};
		mode6 {
			mclk_khz = "24000";
			num_lanes = "4";
			tegra_sinterface = "serial_a";
			lane_polarity = "6";
			phy_mode = "DPHY";
			discontinuous_clk = "no";
			dpcm_enable = "false";
			cil_settletime = "0";
			dynamic_pixel_bit_depth = "10";
			csi_pixel_bit_depth = "10";
			mode_type = "bayer";
			pixel_phase = "rggb";

			active_w = "768";
			active_h = "83";
			readout_orientation = "0";
			line_length = "1000";
			inherent_gain = "1";
			pix_clk_hz = "237600000";

			gain_factor = "10";
			min_gain_val = "0";
			max_gain_val = "420";
			step_gain_val = "1";
			default_gain = "0";
			min_hdr_ratio = "1";
			max_hdr_ratio = "1";
			framerate_factor = "1000000";
			min_framerate = "1000000";
			max_framerate = "3000000000";
			step_framerate = "1";
			default_framerate= "30000000";
			exposure_factor = "1000000";
			min_exp_time = "100";
			max_exp_time = "1000000";
			step_exp_time = "1";
			default_exp_time = "9000";
			embedded_metadata_height = "0";
		};

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg =<0>;

				IMX991_dual_out0: endpoint {
					port-index =<0>;
					bus-width =<4>;
					remote-endpoint =<&IMX991_csi_in0>;
				};
			};
		};
	};
};

};

/ {
tcp: tegra-camera-platform {
compatible = “nvidia, tegra-camera-platform”;
/**
* Physical settings to calculate max ISO BW
*
* num_csi_lanes = <>;
* Total number of CSI lanes when all cameras are active
*
* max_lane_speed = <>;
* Max lane speed in Kbit/s
*
* min_bits_per_pixel = <>;
* Min bits per pixel
*
* vi_peak_byte_per_pixel = <>;
* Max byte per pixel for the VI ISO case
*
* vi_bw_margin_pct = <>;
* Vi bandwidth margin in percentage
*
* max_pixel_rate = <>;
* Max pixel rate in Kpixel/s for the ISP ISO case
*
* isp_peak_byte_per_pixel = <>;
* Max byte per pixel for the ISP ISO case
*
* isp_bw_margin_pct = <>;
* Isp bandwidth margin in percentage
*/
num_csi_lanes =
<4>;
max_lane_speed =
<1500000>;
min_bits_per_pixel =
<10>;
vi_peak_byte_per_pixel =
<2>;
vi_bw_margin_pct =
<25>;
max_pixel_rate =
<240000>;
isp_peak_byte_per_pixel =
<5>;
isp_bw_margin_pct =
<25>;

	/**
	 * The general guideline for naming badge_info contains 3 parts, and is as follows,
	 * The first part is the camera_board_id for the module; if the module is in a FFD
	 * platform, then use the platform name for this part.
	 * The second part contains the position of the module, ex. "rear" or "front".
	 * The third part contains the last 6 characters of a part number which is found
	 * in the module's specsheet from the vendor.
	 */
	modules {
		cam_module0: module0 {
			badge = "porg_front_IMX991";
			position = "front";
			orientation = "0";
			cam_module0_drivernode0: drivernode0 {
				pcl_id = "v4l2_sensor";
				devname = "IMX991 2-0036";
				proc-device-tree = "/proc/device-tree/i2c@3180000/IMX991_a@36";
			};
		};
	};
};

};

The log shows NVCSI/VI doesn’t receive any validate from the sensor.

You may need to confirm the output signal timing.

Thanks

Thanks for the fast response.
Sorry, can you describe a little more what you mean by validate from the sensor?
It is working with Jetson Nano Jetpack 4.5. So the sensor settings should be fine normally.

Best,
Johannes

You may need to check the pix_clk_hz/serdes_pix_clk_hz if need send deskew word by sensor or not.

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)

This should not be necessary since we have 594Mbps/lane.

Do you know of any difference why it should work with the Jetson Nano but not with the Jetson ORIN Nano?
Is there any settings that is handled differently? Other than lane polarity?

Best,
Johannes

Noop, BTW you may check on another camera port.