Raspberry PI IMX219 Orin-NX Devkit CAM1 port Not Streaming L4T 35.2.1 Jetpack 5.1

Hi Nvidia,

I noticed you have native support for rpi-imx219 and rpi-imx477 cameras in Jetpack5.1 so I started to create a device tree for a custom board that has the same layout as the orin-nx devkit. 2 cameras at width x2, one on serial_a and another on serial_c.

I noticed that while the camera could stream off of serial_a, serial_c seemed to freeze.
When using the command:
gst-launch-1.0 nvarguscamerasrc /dev/video0 ! nv3dsink
this would manifest as a black screen.
When using the command
v4l2-ctl -d /dev/video0 --stream-mmap
the pipeline would just freeze.

both commands would yield this dmesg log, “NULL VI channel received”

I tried this on the orin-nx devkit, and sure enough CAM1 was giving me this same issue.
I tried the following dtbs:
tegra234-p3767-0000-p3509-a02.dtb
and
tegra234-p3767-0000-p3768-0000-a0.dtb

and the sources seem to be using this dts source for the imx219:
Linux_for_Tegra/sources/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-camera-rbpcv2-imx219.dtsi

Is this a known issue? Is the dts supplied with this Jetpack validated and operational?
Let me know what I can do to further debug this issue on serial_c.

Thanks,

Matt

hello mfischer,

since Jetpack-5.1 have several device tree overlays, which might override your settings.
please have a try to remove those device tree overlays for a quick test.
for example,

$ ls boot/*219*.dtbo
boot/tegra194-p3668-all-p3509-0000-camera-imx219-dual.dtbo    boot/tegra234-p3767-camera-imx477-imx219.dtbo
boot/tegra194-p3668-all-p3509-0000-camera-imx477-imx219.dtbo  boot/tegra234-p3767-camera-p3768-imx219-dual.dtbo
boot/tegra234-p3767-camera-imx219-dual.dtbo                   boot/tegra234-p3767-camera-p3768-

Hi Jerry,

I never had any dtbo’s in my boot directory:

My extlinux.conf:

I’m currently trying with the devkit, but my custom board’s nvme is also without any device tree overlays.

Thanks,

Matt

could you please check # cat /etc/nv_tegra_release to confirm the release version.

When I have encountered issues like this, it has been related to the Sensor → CSI → VI pipeline definition in my device tree. I would make sure your port-indexs, tegra_sinterfaces, etc. are all correct and that there are not conflicts between the two pipelines.

Hi pwolfe,

Thanks for your input!

I understand this and the entries from the dev kit device tree do seem like they should be right:
image

ports in CAM0 node:
image

ports in CAM1 node:
image

Also I noticed this pinmux change dtbo tegra234-p3767-0000-p3768-0000-csi.dtbo
and added it to the devkit device tree, but it didn’t help. What is the significance of that file? Is there a pinmux change that needs to be done to enable the csi lines on tegra_sinterface serial_c? Should the device tree on it’s own work by default? Note that I am testing the devkit implementation that is currently shipped with l4t 35.2.1 tegra234-p3767-0000-p3768-0000-a0.dtb which includes cvb/tegra234-camera-rbpcv2-imx219.dtsi, I haven’t modified anything and CAM0 is working, just not CAM1.

yeah, that all looks right

have you encountered this document before? I’ve found it useful when debugging low level camera issues

https://elinux.org/Jetson/l4t/Camera_BringUp

I’ll try this out and let you know,

Thanks

hello mfischer,

this looks like an issue without lane_polarity configuration.
as you may knew… CSI0 D1 and CSI1 D0 P/N will always been swizzled for P/N.

BTW,
since Jetpack-5.1.1 is now available, could you please moving to the latest release.
there’re fixes check-in to address some camera related issues.

Hi Jerry,

I’ve moved to Jetpack 5.1.1 and am working on a Orin-NANO release, and the issues are still present, I have the following lane_polarity in my mode table for both camera ports:
image

I just noticed the devkit config has been changed for the second camera to lane_polarity=0 I’ll try that.

Thanks,

Matt

Hi Jerry,

This worked, I just heard from someone that worked on the early hardware bringup yesterday that they noticed there was something flipped on csi2 (different polarity from xavier-nx)…

Do you have a definition for this lane_polarity variable? Can you post it here I can’t find it in the module-properties section of the jetson developer guide.

I’m guessing it will always be “6” for csi0 and “0” for csi2.

Will all other lanes be “6” or? It would good if you can point to some documentation regarding that variable.

hello mfischer,

it’s mentioned in reference camera driver,
for example, $public_sources/kernel_src/hardware/nvidia/platform/t23x/p3768/kernel-dts/cvb/tegra234-camera-rbpcv2-imx219.dtsi

                                * 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

and…
please see-also developer guide, To verify that mode-specific settings are correct.

lane_polarity must be 0x6 for sensors attached to CSI0/1 port, since CSI0 D1 and CSI1 D0 has P/N swizzled, in Orin NX 16GB, Orin NX 8GB, Orin Nano 8GB and Orin Nano 4GB modules. Set it by 0x0 for other cases.

Perfect, Thanks for your help Jerry!

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