Sorry, I think your reply is not helpful because I already knew how to program and debug the camera driver.
Actually, I have successfully migrated the other YUV format camera from R35.4 to R36.3.
My problem now is for Bayer format camera which not works when using nvarguscamerasrc.
If you can point out what’s the differences between R35.4 and R36.3, and why does the nvarguscamerasrc not work, that will be very helpful.
Thank you.
(1) could you please also execute below to check the supported formats. $ v4l2-ctl -d /dev/video0 --list-formats-ext
(2) it looks you’re having multi-camera setup, did you had all 8 cameras connected to system before testing?
(3) please refer to Sensor Pixel Clock section, and please double check pix_clk_hz property settings since it must be set correctly to avoid potential issues.
(4) BTW, please also give it a try with below commands to boost all the VI/CSI/ISP clocks for verification.
sudo su
echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/isp/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/mrq_rate_locked
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate |tee /sys/kernel/debug/bpmp/debug/clk/vi/rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/isp/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/emc/rate
=> The device tree is for 8 cameras but the problem happens even when there is only one camera connected.
=> For the value of pix_clk_hz and serdes_pix_clk_hz, I use the same value as R35.4 and it works well. Are there any reasons I have to modify the value on R36.3?
let’s narrow down the issue,
it’s likely that nvarguscamerasrc sensor-id=0 did not select the physical camera you’ve connected.
for instance,
please check you’ve camera (i.e. cam0) well connected to your system.
cam0 {
status = "okay";
compatible = "leopard,ar0233";
and, please leave only this camera node in the tegra-camera-platform{} for testing.
besides, for testing sensor stream.
you may try exclude all other elements by preview disabled and shows frame-rate only
for example, $ gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM),width=2048, height=1280, framerate=30/1, format=NV12' ! nvvidconv ! fpsdisplaysink text-overlay=0 name=sink_0 video-sink=fakesink sync=0 -v
I have resolved the issue on my own. In JetPack 6 (R36.3), it is necessary to use sysfs-device-tree instead of proc-device-tree in the camera DTS. Additionally, use /sys/firmware/devicetree/base/xxx instead of the symbolic path /proc/device-tree/xxx. It is also essential to remove devname from the camera DTS.
For those looking to port the camera DTS from JetPack 5 to JetPack 6, I have summarized my experiences below:
Path Changes: Some paths have changed. For example, /i2c@xxxxx and /host1x@13e00000 have been changed to /bus@0/i2c@xxxxx and /bus@0/host1x@13e00000.
Remove devname: Ensure to remove devname in drivernode0{}.
Use sysfs-device-tree: Replace proc-device-tree with sysfs-device-tree in drivernode0{}.
Update Paths: Use /sys/firmware/devicetree/base/xxx instead of the symbolic path /proc/device-tree/xxx.