Fails to update kernel and dtb files for Jetpack4.6


Trying to update my camera driver for IMX477 the same way I did in previous Jetpack releases. I have used this instruktion to update the driver and dtb

Updating the Image file works fine, but as soon as I try to update the dtb file the system falls back to trying to initialize the IMX219 driver.

The JetsonIO stops working as soon as the dtb file is updated as well

I am not sure why are you referring to a page that is not really related to how to update the kenrel and dtb…

You can use to update the dtb…

System is booting on NVme

You can share the uart log so that we can know where is your dtb getting loaded now.

The system is flashed with SDKManager to NVMe, works fine

The problem is when kernel and dtbs file is updated in the /boot directory

sudo apt-get upgrade reverts back to original kernel and dtbs

I get no error messages from, just blinks and exits.

Ok, this comment is more clear than your first post.

“sudo apt-get upgrade” from sdkm by default will re-install the default BSP again. Such BSP does not know you are using the NVMe. So currently your dtb is probably from the eMMC again.


Thank for the replies.

Does the Jetson NX Dev kit have eMMC?



I don’t know which kind of board you are using. This is a more complicated situation.

  1. If your module is sdcard based, then the default setting will be from sdcard

  2. However, after jeppack4.6, the nvme has higher boot priority than emmc/sdcard, thus, it also has chance to be boot from NVMe.

It is not possible for me to tell the precise boot location of your board now. That is why I asked you to dump the uart log and it will tell us what is going on. Without log, what we are doing is just guessing and guessing. No one can really know what happened to your board.

BTW, if you don’t know how to dump uart log, please refer to below page. UART log is not from the device monitor.


The setup I have is booting from NVMe, not sdcard

Havn’t set-up the uart-tracing yet, had hoped not needing to do this


This is not related to your setup. As I already told, after doing “sudo apt-get upgrade”, your setup no longer works.

Is it ok to understand this comment?

I have built a kernel image and dtb file with no changes to the source from Jetpack4.6

When I update the kernel image by running, the system is still working fine
sudo apt-get install --reinstall ./

When I try to update the dtb file by running, the problems start.
sudo apt-get install --reinstall ./nvidia-l4t-kernel-dtbs_4.9.253-tegra-32.6.1-20210726122859_arm64.deb

To revert back to a working configuration, I run this on-target
sudo apt-get upgrade

Attatched you see the bootlog
bootlog.txt (36.9 KB)

Hi @Fredde ,

What are you trying to do exactly? I have no idea why you are building a deb file.

If you are a vendor who needs to distributes your own deb file to your customers, then you can try to make a deb file.
However, if you are just trying to update the kernel and deb for yourself, then making a deb file is overkill. There is no need to that.

Just put the Image to /boot/Image and dtb to /boot/dtb and modify the “FDT” inside your extlinux.conf and it will use the updated image and dtb.

The problem here is “apt-get upgrade” is causing your setting gone. Thus, you can just remove the NVIDIA related sources from the apt source list and “apt-get upgrade” won’t affect your boot process anymore.


The reason for buildling deb files is that the updated camera driver will be deployed on multiple units, and I thought it would be simpler. I have tried the manual copying ot the Image and dtb file, with the same result.

The log file, and the problem description is prior to running the ‘apt-get upgrade’, so it’s not really a part of the equation. I just described the ‘round-trip’ solution of getting in and out of the ‘problem’.

Should the dtb file be located in /boot or /boot/dtb ?

WIth the setup I have, with direct boot from NVMe, do I need to flash the dtb file as well?

Should the FDT reference be in the primary, or JetsonIO section of the extlinux.conf file?

Should the dtb file be located in /boot or /boot/dtb ?

Does not matter. The path could be defined in FDT field.

WIth the setup I have, with direct boot from NVMe, do I need to flash the dtb file as well?

No need.

Should the FDT reference be in the primary, or JetsonIO section of the extlinux.conf file?

If you want it automatically gets loaded in each boot, then write in the primary would be better.

Any clue why the JetsonIO fails, and the imx477 driver is not loaded?

Did the logfile give any information on the problem?

If I just update the Image file it’s OK, but as soon as I update the dtb file I run into problems

I don’t have any log related to your jetson IO case… The log you just shared is not booting into the dtb provided by jetson IO.

[0009.443] W> Security fuse not burned, ignore validation failure
[0009.449] I> restore load_size to 1355
[0009.452] I> L4T boot options
[0009.455] I> [1]: ”primary kernel”
[0009.458] I> [2]: ”Custom Header Config: CSI Camera IMX477 Dual>”
[0009.464] I> Enter choice:
[0012.468] I> Continuing with default option: 1
[0012.468] I> Loading kernel …
[0012.468] I> Loading kernel binary from rootfs …
[0012.469] I> rootfs path: /nvme/boot/Image
[0012.648] I> Loading kernel sig file from rootfs …
[0012.648] I> rootfs path: /nvme/boot/Image.sig
[0012.649] I> overload load_size to 34484232 (from 34615304)

Correct, since as soon as I have updated the dtb file, JetsonIO fails to run. It just blinks and exit


I am not sure if you really understand how to share correct info. Your comment is not clear enough for other people to understand

Let me point out it first…

since as soon as I have updated the dtb file, JetsonIO fails to run.

How did you update the dtb here? And why do you mention “jetson IO”? Are you trying to say you select the boot option in the uart console and let it boot from jetson IO option?

It just blinks and exit

What blinks and exit? I totally have no idea about what could exit here.

Please provide the log that matches to your scenario. Currently, the log you shared does not use jetson IO at all.

Also, share the exlinux.conf.


Sorry for being unclear

by running JetsonIO I mean

sudo /opt/nvidia/jetson-io/

When running this, the screen just blinks and the program exits.
Thereby I can’t configure the system to dual imx477 cameras