R32.1 TX2 how to update my own kernel Image and dtb?

In r28.1 ,I do update with bellow cmd:
sudo cp arch/arm64/boot/Image /boot/Image
sudo cp arch/arm64/boot/dts/tegra186-quill-p3310-1000-c03-00-base.dtb /boot/
sudo dd if=/boot/tegra186-quill-p3310-1000-c03-00-base.dtb of=/dev/mmcblk0p15

but In r32.1 tx2 does not work after I do this update.

I need help…


Yes, this method is no longer working on rel-32.1. All dtb on devices are signed during flash.
So “dd” would only work for “signed” dtb/image.

I would suggest you to directly use flash script with

sudo ./flash -r -k kernel-dtb jetson-tx2 mmcblk0p1 for dtb
sudo ./flahs -r -k kernel jetson-tx2 mmcblk0p1 for kernel.

THANKS for your reply.

sudo ./flash -r -k kernel-dtb jetson-tx2 mmcblk0p1

Should this command be run on the host pc?

I want know do can I update dtb directly on tx2 itself.

This method should still work.


Hello WayneWWW,

So TX2 with Jetpack4.2 can’t update DTB itself, is there no way to do remote upgrade?

I mean if a tx2 is not in my office or without my host pc and dtb update is necessary, there is nothing we can do?

Hi suchb,

You could try to use dd to update specific partition. But please note that dtb needs to be “signed”.
During the flash, the flash script will sign the dtb and flash that signed dtb to tegra. If there is no sign, the boot procedure will reject this dtb.

However, you may still need a host pc to do this work.

For the purposes of signing without flashing take a look at the flash.sh script argument “–no-flash”, and if you are looking at using tegraflash.py directly, take a look at the argument “–keep”. Keep in mind that you can edit flash.sh, and that flash.sh calls tegraflash.py.

Thank you linuxdev,

It’s worked