Jetson Xavier NX could not load new DTB. jetson-io.py does not work

Hi, everyone, I just got my Xavier NX.
I want to run RaspberryPi HQ Camera on Xavier NX.

I have edited /boot/extlinux/extlinux.conf to load new DTB file, but dmesg shows old DTB build time, and IMX477 is not the default camera.

/opt/nvidia/jetson-io/jetson-io.py: Camera IMX477 Dual

/boot/extlinux/extlinux.conf

TIMEOUT 30
DEFAULT JetsonIO

MENU TITLE L4T boot options

LABEL JetsonIO
        MENU LABEL Custom Header Config: <CSI Camera IMX477 Dual>
        LINUX /boot/Image
        FDT /boot/kernel_tegra194-p3668-all-p3509-0000-user-custom.dtb
        INITRD /boot/initrd
        APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0
dmesg | grep DTB
[    0.458647] DTB Build time: Jul 26 2021 12:22:25
[    0.737301] DTB Build time: Jul 26 2021 12:22:25
dmesg | grep imx
[    5.201697] imx219 9-0010: tegracam sensor driver:imx219_v2.0.6
[    5.226905] imx219 9-0010: imx219_board_setup: error during i2c read probe (-121)
[    5.228784] imx219 9-0010: board setup failed
[    5.230515] imx219: probe of 9-0010 failed with error -121
[    5.232571] imx219 10-0010: tegracam sensor driver:imx219_v2.0.6
[    5.259279] imx219 10-0010: imx219_board_setup: error during i2c read probe (-121)
[    5.261168] imx219 10-0010: board setup failed
[    5.262894] imx219: probe of 10-0010 failed with error -121

Thanks in advance for any help!

hello 915505626,

could you please share your steps to configure with Jetson-IO,
there should be *.dtbo generated, it’ll load that device tree while rebooting.

sudo /opt/nvidia/jetson-io/jetson-io.py

cat /boot/extlinux/extlinux.conf

TIMEOUT 30
DEFAULT JetsonIO

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0

# When testing a custom kernel, it is recommended that you create a backup of
# the original kernel and add a new entry to this file so that the device can
# fallback to the original kernel. To do this:
#
# 1, Make a backup of the original kernel
#      sudo cp /boot/Image /boot/Image.backup
#
# 2, Copy your custom kernel into /boot/Image
#
# 3, Uncomment below menu setting lines for the original kernel
#
# 4, Reboot

# LABEL backup
#    MENU LABEL backup kernel
#    LINUX /boot/Image.backup
#    INITRD /boot/initrd
#    APPEND ${cbootargs}


LABEL JetsonIO
	MENU LABEL Custom Header Config: <CSI Camera IMX477 Dual>
	LINUX /boot/Image
	FDT /boot/kernel_tegra194-p3668-all-p3509-0000-user-custom.dtb
	INITRD /boot/initrd
	APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyTCU0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0

ls -lah /boot/kernel_tegra194-p3668-all-p3509-0000-user-custom.dtb

-rw-r–r-- 1 root root 201K 10月 8 13:37 /boot/kernel_tegra194-p3668-all-p3509-0000-user-custom.dtb

hello ypw,

there should be two boot options,
instead of using primary label, did you select JetsonIO from the boot-up menu for verification?

Problem solved.

My jetson is jetson-xavier-nx-devkit-emmc, must use this command to flash dtb:

sudo ./flash.sh -k kernel-dtb jetson-xavier-nx-devkit-emmc mmcblk0p1

Full script:

# Jetson
# Choose IMX477 to generate custom dtb file
sudo /opt/nvidia/jetson-io/jetson-io.py

# Host Machine
# Copy custom dtb file to SDK
scp 192.168.55.1:/boot/kernel_tegra194-p3668-all-p3509-0000-user-custom.dtb ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_XAVIER_NX_TARGETS/Linux_for_Tegra/kernel/dtb

# Flash dtb file
cd ~/nvidia/nvidia_sdk/JetPack_4.6_Linux_JETSON_XAVIER_NX_TARGETS/Linux_for_Tegra
sudo ./flash.sh -k kernel-dtb jetson-xavier-nx-devkit-emmc mmcblk0p1