IMX477 does not work on JetPack5.0

Hi, is IMX477 not working on jetpack 5.0 fixed?

Also, IMX477 doesn’t work properly on jetpack 5.0.1.

JetPack5.0.1 and JetPack4.6.2 have the same problem, unable to load the extlinux.conf file correctly.

Will verify it until our office reopen.

Thanks

We don’t see the problem that jp5.0.1 cannot load extlinux.conf.

How did you know UEFI fails to load it? Any log to share?

Please be aware that 4.6.2 is using cboot but 5.0.1 does not have cboot at all, use UEFI instead.

And these two don’t affect each other. Currently, only 4.6.2 has known issue about extlinux.conf.

I replaced Image with my own compiled Image without success, and dmesg still displays the Image that comes with the image.

This phenomenon is the same as JetPack4.6.2, so I suspect this is the reason.

Try to change something to your extlinux.conf. For example, remove “quiet” and see if your uart log gets any response from it.

Or a more clear way is to build a debug UEFI build and flash that one. That will tell full log.

Ok, I’ll try the method you provided as soon as possible.

thank you for your reply.

The problem with the Image not being replaced correctly, I found the cause of the problem.

When I run jetson-io.py script to select IMX477 Dual, the tegra194-p3668-0000-p3509-0000-user-custom.dtb file for imx477 is not generated. When the device boots up, it doesn’t use my image but its own.

When I choose IMX219 Dual, the tegra194-p3668-0000-p3509-0000-user-custom.dtb file will be generated, and my Image will be used when the device starts.

My previous tests were still insufficient.

1 Like

For IMX477 please check below release note.

Jetson-IO tool may fail to configure the IMX477 sensor on Xavier-NX. In such case, this sensor can be enabled by removing the IMX219 sensor DTSI file from the main DTS file of the Tegra board and enabling the IMX477 sensor DT nodes. Below change is provided for reference.

diff --git a/common/tegra194-p3509-0000-a00.dtsi b/common/tegra194-p3509-0000-a00.dtsi
index 6f411e3..10cd7bf 100644
--- a/common/tegra194-p3509-0000-a00.dtsi
+++ b/common/tegra194-p3509-0000-a00.dtsi
@@ -17,7 +17,6 @@
 #include "tegra194-audio-p3668.dtsi"
 #include "tegra194-super-module-e2614-p3509.dtsi"
 #include "tegra194-camera-jakku-rbpcv3-imx477.dtsi"
-#include "tegra194-camera-jakku-rbpcv2-imx219.dtsi"
 / {
        gpio-keys {
                compatible = "gpio-keys";

diff --git a/common/tegra194-camera-jakku-rbpcv3-imx477.dtsi b/common/tegra194-camera-jakku-rbpcv3-imx477.dtsi
index 2cc928e..ffa3165 100644
--- a/common/tegra194-camera-jakku-rbpcv3-imx477.dtsi
+++ b/common/tegra194-camera-jakku-rbpcv3-imx477.dtsi
@@ -33,7 +33,7 @@
                        #address-cells = <1>;
                        #size-cells = <0>;
                        rbpcv3_imx477_a@1a {
-                               status = "disabled";
+                               status = "okay";
                                reset-gpios = <&tegra_main_gpio CAM0_PWDN GPIO_ACTIVE_HIGH>;
                        };
                };
@@ -42,7 +42,7 @@
                        #address-cells = <1>;
                        #size-cells = <0>;
                        rbpcv3_imx477_c@1a {
-                               status = "disabled";
+                               status = "okay";
                                reset-gpios = <&tegra_main_gpio CAM1_PWDN GPIO_ACTIVE_HIGH>;
                        };
                };

hi,

According to the above modification, the following errors occur:

I also need to modify i2c-parent to compile:

But still cannot use Jetson-Io.py to generate DTB files.

I changed the tegra194-camera-rbpcv3-imx477.dtsi file of IMX477 to be the same as imx219, and now I can see the video0 node.

But running gstreamer can’t get the data.

Could you attach your dtb here to check.

OK

imx477-dtbi.zip (4.4 KB)

dtb.zip (1.7 MB)

Here’s the working change. Need modify the pix_clk_hz too.

iff --git a/common/tegra194-camera-jakku-rbpcv3-imx477.dtsi b/common/tegra194-camera-jakku-rbpcv3-imx477.dtsi
index 2cc928e..03fe85d 100644
--- a/common/tegra194-camera-jakku-rbpcv3-imx477.dtsi
+++ b/common/tegra194-camera-jakku-rbpcv3-imx477.dtsi
@@ -27,13 +27,13 @@
                #address-cells = <1>;
                #size-cells = <0>;
                mux-gpios = <&tegra_aon_gpio CAM_I2C_MUX GPIO_ACTIVE_HIGH>;
-               i2c-parent = <&i2c7>;
+               i2c-parent = <&cam_i2c>;
                i2c@0 {
                        reg = <0>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        rbpcv3_imx477_a@1a {
-                               status = "disabled";
+                               status = "okay";
                                reset-gpios = <&tegra_main_gpio CAM0_PWDN GPIO_ACTIVE_HIGH>;
                        };
                };
@@ -42,7 +42,7 @@
                        #address-cells = <1>;
                        #size-cells = <0>;
                        rbpcv3_imx477_c@1a {
-                               status = "disabled";
+                               status = "okay";
                                reset-gpios = <&tegra_main_gpio CAM1_PWDN GPIO_ACTIVE_HIGH>;
                        };
                };
diff --git a/common/tegra194-camera-rbpcv3-imx477.dtsi b/common/tegra194-camera-rbpcv3-imx477.dtsi
index 8b7b1c6..fb5f076 100644
--- a/common/tegra194-camera-rbpcv3-imx477.dtsi
+++ b/common/tegra194-camera-rbpcv3-imx477.dtsi
@@ -16,34 +16,34 @@
  */

 / {
-       host1x {
-               vi@15c10000 {
-                       num-channels = <2>;
-                       ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-                               port@0 {
-                                       reg = <0>;
-                                       rbpcv3_imx477_vi_in0: endpoint {
-                                               port-index = <0>;
-                                               bus-width = <2>;
-                                               remote-endpoint = <&rbpcv3_imx477_csi_out0>;
-                                       };
+        tegra-capture-vi  {
+                num-channels = <2>;
+                ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       port@0 {
+                               reg = <0>;
+                               rbpcv3_imx477_vi_in0: endpoint {
+                                       port-index = <0>;
+                                       bus-width = <2>;
+                                       remote-endpoint = <&rbpcv3_imx477_csi_out0>;
                                };
-                               port@1 {
-                                       reg = <1>;
-                                       rbpcv3_imx477_vi_in1: endpoint {
-                                               port-index = <4>;
-                                               bus-width = <2>;
-                                               remote-endpoint = <&rbpcv3_imx477_csi_out1>;
-                                       };
+                       };
+                       port@1 {
+                               reg = <1>;
+                               rbpcv3_imx477_vi_in1: endpoint {
+                                       port-index = <4>;
+                                       bus-width = <2>;
+                                       remote-endpoint = <&rbpcv3_imx477_csi_out1>;
                                };
                        };
                };
+       };

-               nvcsi@15a00000 {
-                       num-channels = <2>;
-                       #address-cells = <1>;
+        host1x@13e00000 {
+                nvcsi@15a00000 {
+                        num-channels = <2>;
+                        #address-cells = <1>;
                        #size-cells = <0>;
                        channel@0 {
                                reg = <0>;
@@ -207,7 +207,7 @@
                                        line_length = "11200";
                                        inherent_gain = "1";
                                        mclk_multiplier = "80";
-                                       pix_clk_hz = "840000000";
+                                       pix_clk_hz = "300000000";

                                        gain_factor = "16";
                                        framerate_factor = "1000000";
@@ -247,7 +247,7 @@
                                        line_length = "7000";
                                        inherent_gain = "1";
                                        mclk_multiplier = "80";
-                                       pix_clk_hz = "840000000";
+                                       pix_clk_hz = "300000000";

                                        gain_factor = "16";
                                        framerate_factor = "1000000";
@@ -320,7 +320,7 @@
                                        line_length = "11200";
                                        inherent_gain = "1";
                                        mclk_multiplier = "80";
-                                       pix_clk_hz = "840000000";
+                                       pix_clk_hz = "300000000";

                                        gain_factor = "16";
                                        framerate_factor = "1000000";
@@ -360,7 +360,7 @@
                                        line_length = "7000";
                                        inherent_gain = "1";
                                        mclk_multiplier = "80";
-                                       pix_clk_hz = "840000000";
+                                       pix_clk_hz = "300000000";

                                        gain_factor = "16";
                                        framerate_factor = "1000000";
diff --git a/common/tegra194-p3509-0000-a00.dtsi b/common/tegra194-p3509-0000-a00.dtsi
index 6f411e3..10cd7bf 100644
--- a/common/tegra194-p3509-0000-a00.dtsi
+++ b/common/tegra194-p3509-0000-a00.dtsi
@@ -17,7 +17,6 @@
 #include "tegra194-audio-p3668.dtsi"
 #include "tegra194-super-module-e2614-p3509.dtsi"
 #include "tegra194-camera-jakku-rbpcv3-imx477.dtsi"
-#include "tegra194-camera-jakku-rbpcv2-imx219.dtsi"
 / {
        gpio-keys {
                compatible = "gpio-keys";

Where are these files located?

hi,

I can’t change i2c7 to cam_i2c because that will cause jetson-io.py not to generate dtb file.

I modified the pix_clk_hz as per the data you gave and this can run the imx477 successfully and display the image.But there will be a delay in the image.

In addition, the v4l2-ctl command cannot measure the frame rate of imx477.

Could you try 1920*1080?

nvidia@tegra-ubuntu:~$ v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --set-ctrl bypass_mode=0 --stream-mmap
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 60.00 fps

@tyler.fedrizzi
You can check the dtb if you don’t want to compile the dtb from dts source for J5.0

kernel_tegra194-p3668-0000-p3509-0000-user-custom.dtb (236.5 KB)

I can already run IMX477 normally, thank you very much for your help.

Where is the closing bracket for “host1x@13e0000”?