Orin NX 5.1.2 CSI IMX 219 Camera not probing

I am trying to have IMX219 cameras working on Jetson Orin NX on a custom carrier board and Jetpack 5.1.2. The relevant dmesg outputs are as follows:

[   13.411913] imx219 9-0010: imx219_board_setup: error during i2c read probe (-121)
[   13.412905] nv_platform 13800000.display: Adding to iommu group 53
[   13.433909] platform 13800000.display:nvdisplay-niso: Adding to iommu group 54
[   13.438154] imx219 9-0010: board setup failed
[   13.442830] imx219: probe of 9-0010 failed with error -121
[   13.452812] NVRM: loading NVIDIA UNIX Open Kernel Module for aarch64  35.4.1  Release Build  (buildbrain@mobile-u64-6422-d7000)  Tue Aug  1 12:45:41 PDT 2023
[   13.456154] imx219 10-0010: tegracam sensor driver:imx219_v2.0.6
[   13.470435] imx219 10-0010: imx219_board_setup: error during i2c read probe (-121)
[   13.479763] irq: IRQ306: trimming hierarchy from :pmc@c360000
[   13.482101] r8168 0008:01:00.0: Adding to iommu group 10
[   13.482799] r8168 Gigabit Ethernet driver 8.051.02-NAPI loaded
[   13.482923] r8168 0008:01:00.0: enabling device (0000 -> 0003)
[   13.484881] nvadsp 2993000.adsp: Adding to iommu group 55
[   13.485217] nvadsp 2993000.adsp: in probe()...
[   13.489957] fusb301 1-0025: failed to read device id, err : 0xffffff87
[   13.497337] fusb301 1-0025: fusb301 not support
[   13.502731] nvadsp 2993000.adsp: nvadsp_app_module_probe
[   13.504958] imx219 10-0010: board setup failed

I can see that CAM0_PWDN is low and the camera is turned on when I trigger the same pin HIGH with a jumper.
To make the pin high by kernel at the boob, I tried to change a part of kernel_tegra234-p3767-0000-p3768-0000-a0.dtb file in Kernel as below and produced a new dtb and put it back to kernel dtb folder on the board with adding the new dtb address to extlinux.confand added a new FDT. The board is booting the seconday kernel file but I still am seeing the pins as low. Could you please help me where I could be missing?

	gpio@2200000 {
		compatible = "nvidia,tegra234-gpio";
		reg-names = "security\0gpio";
		reg = <0x00 0x2200000 0x00 0x10000 0x00 0x2210000 0x00 0x10000>;
		interrupts = <0x00 0x120 0x04 0x00 0x121 0x04 0x00 0x122 0x04 0x00 0x123 0x04 0x00 0x124 0x04 0x00 0x125 0x04 0x00 0x126 0x04 0x00 0x127 0x04 0x00 0x128 0x04 0x00 0x129 0x04 0x00 0x12a 0x04 0x00 0x12b 0x04 0x00 0x12c 0x04 0x00 0x12d 0x04 0x00 0x12e 0x04 0x00 0x12f 0x04 0x00 0x130 0x04 0x00 0x131 0x04 0x00 0x132 0x04 0x00 0x133 0x04 0x00 0x134 0x04 0x00 0x135 0x04 0x00 0x136 0x04 0x00 0x137 0x04 0x00 0x138 0x04 0x00 0x139 0x04 0x00 0x13a 0x04 0x00 0x13b 0x04 0x00 0x13c 0x04 0x00 0x13d 0x04 0x00 0x13e 0x04 0x00 0x13f 0x04 0x00 0x140 0x04 0x00 0x141 0x04 0x00 0x142 0x04 0x00 0x143 0x04 0x00 0x144 0x04 0x00 0x145 0x04 0x00 0x146 0x04 0x00 0x147 0x04 0x00 0x148 0x04 0x00 0x149 0x04 0x00 0x14a 0x04 0x00 0x14b 0x04 0x00 0x14c 0x04 0x00 0x14d 0x04 0x00 0x14e 0x04 0x00 0x14f 0x04>;
		#gpio-cells = <0x02>;
		#interrupt-cells = <0x02>;
		gpio-ranges = <0x2b4 0x00 0x00 0x8a 0x2b4 0x8a 0x92 0x1a>;
		status = "okay";
		phandle = <0x50>;

		camera-control-output-low {
			gpios = <0x3e 0x01 0xa0 0x01>;
			label = "cam0-pwdn\0cam1-pwdn";

hello farhangnaderi,

you may examine the hardware pin connections.
please access Jetson Orin NX Series and Orin Nano Series Design Guide, and review [Figure 10-1. CSI 2-Lane Connection Options].

Thanks. I went over it.

Do you also mean that the changes I did to dtb was correct? I mean is this the way to do it? Cause I cannot find any of those cpp based dtsi mentioned in other posts here in the forum. even my Linux For Tegra folder has all dtb files.

hello farhangnaderi,

what’s the difference between your custom carrier board and developer kits.
Orin NX by default support raspberry pi v2, imx219. you may examine the board schematic.

This is a schematic I have so far for one of the cameras. Not sure if it makes any sense!

hello farhangnaderi,

according to the failure… imx219_board_setup: error during i2c read probe
please check regulator settings, had you provide power to your camera board correctly?

There is a level shifter provided between CAM0_PWDN and the camera which when we replace it with a pull up resistor everything works ok. As the left side of diagram says above.

We ended up putting pull up resistors on the hardware side as none of the solutions worked in writing a custom kernel.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.