IMX219 doesn't stream on CAM0 port on Orin Nano DevKit

hello zhuda,

are you using the Rbpcv2-imx219? we’ve tested locally to verify the camera functionality.

Hi JerryChang,

Thank you for the feedback! Yes, it is the camera that we are using. Did you verify the camera’s functionality on both CAM ports? Because I’ve tested on two Orin Nano DevKits so far, both of them behave the same: CAM1 works, CAM0 not.

Cheers
zhuda

hello zhuda,

please double confirm you’re already using the latest L4T release version, i.e. l4t-r35.3.1
you may check release tag, such as… $ cat /etc/nv_tegra_release for confirmation.

furthermore,
on Orin, the CSI0 D1 and CSI1 D0 P/N will always been swizzled for P/N.
it’s configured by device tree property, i.e. lane_polarity, the settings is already included in l4t-r35.3.1 release version.
please see-also below for description,

                                * 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

Dear @JerryChang,

Yes, we are using the latest L4T i.e. R35.3.1. See $ 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

We didn’t modify the device tree or the kernel, so the lane_polarity for IMX219 is set to 6 by default.

Thank you for looking into this!

Cheers, zhuda

Hi zhuda,

Confirmed imx219 is working on our Orin Nano devkit + r35.3.1 with cam0 and cam1.
Please enable imx219 from Jetson-IO before test.

$ sudo /opt/nvidia/jetson-io/jetson-io.py
-> Configure Jetson 24pin CSI Connector 
-> Configure for compatible hardware 
-> Camera IMX219 Dual 
-> Save pin changes 
-> Save and reboot to reconfigure pins

Hi @carolyuu,

Thank you for your reply! Yes, applying the Dual-IMX219 DT-overlay via jetson-io.py works. But since the DT-overlay for IMX219 specifies the port-index for the first camera to be 1 instead of 0, it means that (with some further debugging):

  1. 2-Lane streaming at port-index = <0> doesn’t work. It only works when port-index = <1>, why so? On Orin NX (with custom carrier board), both ports work however just fine!

  2. The re-definition of port-index = <1> in t23x/p3768/kernel-dts/cvb/tegra234-p3768-0000-a0.dtsi also doesn’t take effect. I’d assume that re-defining port-index = <1> in t23x/p3768/kernel-dts/cvb/tegra234-p3768-0000-a0.dtsi is meant to avoid the streaming problem at port-index = <0>, but still, it has no impact in the final device tree. Why?

I am looking forward to your answer. @JerryChang: FYI. Thank you very much!

Cheers, zhuda

hello zhuda,

1st camera sensor now streams on CSI-B instead of CSI-A due to CSI-A will only be supported with A03.
note, CSI0 D1 and CSI1 D0 P/N will always been swizzled for P/N.

Hi @JerryChang,

Thanks for the confirmation! But what exactly is A03? The new revision of the Orin Nano module?

Cheers, zhuda

you may examine the TNSPEC of your target for confirmation. such as… $ cat /etc/nv_boot_control.conf
you may also check flash configuration file, jetson-orin-nano-devkit.conf, looking for board_sku to understand how software side to distinguish the different platform SKUs.

Hi JerryChang,

Thank you for the hint. I checked the config file that you mentioned but got a bit more confused:

  1. What does “SKU” actually mean?
  2. What is the “A03” that you mentioned above?

Cheers, zhuda

hello zhuda,

that A03 mentioned is used internally, you may check the naming of device trees files for reference.

hence,
you may check TNSPEC of your target for confirmation. such as… $ cat /etc/nv_boot_control.conf, that give you the target SKU info.
please see-also FAQ page for this section… What are the Part Numbers for Jetson products?

Hi JerryChang,

That means that the A03 version will be released in the future, right?

Cheers, zhuda

HI @JerryChang,

Could you please address the problem I mentioned above?

That means that the A03 version will be released in the future, right?

Thanks!

hello zhuda,

just forget about the board version. for any of the Orin modules, such as Orin NX 16GB, Orin NX 8GB, Orin Nano 8GB, Orin Nano 4GB…etc will all have this swizzle.
i.e. CSI0 D1 and CSI1 D0 P/N will always been swizzled for P/N.

Hi @JerryChang,

I understand that about the CSI lane swizzle. What I wanted to know is when will the CSI_A port be supported on Orin Nano since you mentioned before:

1st camera sensor now streams on CSI-B instead of CSI-A due to CSI-A will only be supported with A03.

Currently on the CAM0 port, CSI-A is NOT working, which limits the number of lanes on the CAM0 port to 2 instead of 4.

Hi @zhuda, @JerryChang

I also encountered the same issue, and today I tried the following, and it worked successfully.

hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3768-0000-a0.dtsi

	host1x@13e00000 {
		nvcsi@15a00000 {
- 			csi_chan0 {
+			channel@0 {
				ports {
					port@0 {
						endpoint@0 {
							port-index = <1>;
						};
					};
				};
			};
		};
	};

I think there is a wrong in the configuration values of L4T35.3.1.
tegra234-p3768-0000-a0.dtsi overrides the value so that it is routed to CSI-B, but the specification of nvcsi@15a00000/channel@0 is not as intended (csi_chan0 is symbol), which seems to have prevented the reception of CSI data.

I hope that this will be fixed in next version.

hello fumiya.fujinaka,

are you using Jetson-IO to re-configure the CSI channel to enable IMX219 camera support?
or, you’re testing with default Jetpack release image?

Hi @JerryChang,

I use default Jetpack release image. L4T35.3.1

The device tree where IMX219 works on CAM0 is also using the one built from the source with the above changes, without re-configure by JetsonIO.

@fumiya.fujinaka: great, that’s a nice finding! Yes, i was wondering why the hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-p3768-0000-a0.dtsi doesn’t route the CSI port to CSI-B as it is supposed to do. Now you found why. Thanks!
@JerryChang: it is an error in the JetPack L4T35.3.1. Btw, will the hardware with functional CSI-A released in the future?

1 Like

hi all,

we’ve also check locally, that device tree update as mentioned by comment #19 could enable IMX219 without configure CSI connector by Jetson-IO. let me arrange resources for code-review.

as I know… there will not have changes to the module design.
there’re some pending fixes for the camera firmware, but I don’t have the rough ETA yet.