IMX477 4lane on CAM1

I’ve read throughout the forum how the CAM0 port cannot support 4lane mode due to the incorrect clock signal (CSI1) being routed. This makes sense and is corroborated with the design guide. There is an overlay that comes with the Jetpack6 kernel Camera IMX477 Dual 4 laneimx477-dual-4lane.dts which has this relationship reversed – CAM0 is being configured for 4lane and CAM1 is configured for 2lane.

We’ve made the same mistake on our carrier with CSI1 on CAM0 so I am trying to get 4lane working on CAM1. Our carrier is almost identical to the dev kit. I’ve modified the overlay to attempt to enable 4 lane mode on CAM1. The device is instantiated on I2C and I see /dev/video0, but I am not having any luck getting frames from the sensor. I am connecting a single Arducam IMX477 to CAM1 with a 22pin FFC.

Could someone review the overlay and let me know what is wrong?
tegra234-p3767-camera-p3768-imx477-dual-4lane.dts.txt (15.4 KB)

I am testing it like so

v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080 --set-ctrl bypass_mode=0 --stream-mmap --stream-count=500

and nothing happens. When I look at dmesg I see:

[   37.344057] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[   37.344080] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   37.345226] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel

hello dakejahl,

let me double check.. it’s CAM1 which route to CSI-C/D, right?

according to your device tree, there should be two video node created.
please check it’s launching rbpcv3_imx477_c@1a from your video0.

Correct CSI-C/D

jetson@jetson:~$ ls /dev/video*
/dev/video0

jetson@jetson:~$ sudo dmesg | grep imx
[sudo] password for jetson: 
[    9.031304] imx477 9-001a: tegracam sensor driver:imx477_v2.0.6
[    9.332858] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx477 9-001a bound
[    9.364932] imx477 10-001a: tegracam sensor driver:imx477_v2.0.6
[    9.665696] imx477 10-001a: imx477_board_setup: error during i2c read probe (-121)
[    9.665730] imx477 10-001a: board setup failed
[    9.665806] imx477: probe of 10-001a failed with error -121

please double check the register nodes.
it looks like i2c@0/rbpcv3_imx477_a@1a has register to system node instead of i2c@1/rbpcv3_imx477_c@1a

Ahh you’re saying CAM0 should be 9-001a and CAM1 should be 10-001a ?

When I have the camera plugged into CAM0 its showing 10-001a…

jetson@jetson:~$ sudo dmesg | grep -i imx
[    7.477720] imx477 9-001a: tegracam sensor driver:imx477_v2.0.6
[    7.779725] imx477 9-001a: imx477_board_setup: error during i2c read probe (-121)
[    7.779761] imx477 9-001a: board setup failed
[    7.779836] imx477: probe of 9-001a failed with error -121
[    7.780165] imx477 10-001a: tegracam sensor driver:imx477_v2.0.6
[    8.082613] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx477 10-001a bound

This pinout looks correct to me though

hello dakejahl,

please arrange your hardware resources to examine the board schematic again,
anyways, let’s update device tree to enable only i2c@1/rbpcv3_imx477_c@1a to test the sensor stream from software perspective.

Can you clarify what you mean by this?

let’s update device tree to enable only i2c@1/rbpcv3_imx477_c@1a to test the sensor stream from software perspective.

I tried this and am still having issues. I have an official NVIDIA Orin Nano dev kit in the mail to test 4lane mode on CAM1. Currently there is no overlay to test this though. Can you please confirm if this works on your dev board?

hello dakejahl,

CAM0 will not work with 4-lane config with any carrier board config.
we’ve also tested IMX477 with 4-lane on Jetson Orin-NX devkit (P3767+P3768)
it’s only works with CAM1 slot.

we’ve also tested IMX477 with 4-lane on Jetson Orin-NX devkit (P3767+P3768)

Can you please share the overlay you used to test 4 lane on CAM1 slot? The overlay included with the kernel (Camera IMX477 Dual 4 lanetegra234-p3767-camera-p3768-imx477-dual-4lane.dts) configures CAM1 as 2 lane only.

As seen with jetson-io

jetson@jetson:~$ sudo /opt/nvidia/jetson-io/config-by-hardware.py -l
[sudo] password for jetson: 
Header 1 [default]: Jetson 40pin Header
  Available hardware modules:
  1. Adafruit SPH0645LM4H
  2. Adafruit UDA1334A
  3. FE-PI Audio V1 and Z V2
  4. ReSpeaker 4 Mic Array
  5. ReSpeaker 4 Mic Linear Array
Header 2: Jetson 24pin CSI Connector
  Available hardware modules:
  1. Camera IMX219 Dual
  2. Camera IMX219-A
  3. Camera IMX219-A and IMX477-C
  4. Camera IMX219-C
  5. Camera IMX477 Dual
  6. Camera IMX477 Dual 4 lane
  7. Camera IMX477-A
  8. Camera IMX477-A and IMX219-C
  9. Camera IMX477-C
Header 3: Jetson M.2 Key E Slot
  No hardware configurations found!

hello dakejahl,

FYI,
we’re using below overlays on Orin-Nano + imx477 on CAM1 + JP-6.2, confirmed it’s working.

LABEL JetsonIO
...
	OVERLAYS /boot/tegra234-p3767-camera-p3768-imx477-dual-4lane.dtbo

Yes… it works in 2 lane mode. That overlay does not configure CAM1 for 4 lane.
tegra234-p3767-camera-p3768-imx477-dual-4lane.dts.txt (15.4 KB)

hello dakejahl,

CAM0 sensor streams on CSI-B, CAM1 sensor streams on CSI-C.
besides.. here’s 4-lane settings,

rbpcv3_imx477_out0: endpoint {
    port-index = <1>;
    bus-width = <4>;

Yes Jerry, CAM0 streams on CSI-B which is configured for 4 lanes, as I stated in my first post.

There is an overlay that comes with the Jetpack6 kernel Camera IMX477 Dual 4 laneimx477-dual-4lane.dts which has this relationship reversed – CAM0 is being configured for 4lane and CAM1 is configured for 2lane.

I am trying to get 4 lane mode working on CAM1. There is not an overlay for this.

hello dakejahl,

ahh.. I see something wrong here.
could you please swap the settings for testing?
for instance..
please based-on JP-6.2/r36.4.3 to apply this patch for testing,
0001-Revert-imx477-dual-4lane-settings.patch (5.6 KB)

Thanks for the patch Jerry. It looks similar to what I’ve tried before, and unfortunately it does not work.

I applied the patch, built the dtbo, and installed it into the filesystem. I re-selected the overlay and reboot. The camera still does not work on CAM1. The behavior is the same, it hangs and the kernel reports timeouts:

jetson@jetson:~$ v4l2-ctl --set-fmt-video=width=3840,height=2160,pixelformat=RG10 --stream-mmap --stream-count=300 -d /dev/video0
^C^C^C

[   45.539950] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[   45.539974] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   45.541180] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel

Can you please test this on your end? To date I have not been able to get any cameras working in 4 lane mode on the dev kit or on any of the custom carriers I’ve tested.

@JerryChang do you have an update on this? Does 4-lane work at all on the Jetson with Jetpack 6.2? At this point I am assuming it does not work.

ya, it’s not working, we’ve arranged resources for checking this internally.

1 Like

Thank you, I look forward to hearing more soon!

@JerryChang any update on this?