How to update DTB with TX2 itself

I am using L4T R28.1 with Jetson TX 2, and I need to update the DTB frequently.

According to “Replacing the Kernel” in “NVIDIA Tegra Linux Driver Package Development Guide 28.1 Release”,
putting “kernel files” in /boot can update the kernel.

I put a DTB file in /boot to update the DTB, but I could not update it.

With reference to https://devtalk.nvidia.com/default/topic/1028843/flash-dtb-issue-on-tx2/,
using JetPack’s flash.sh, I was able to update the DTB .

Is there a way to update DTB with TX2 itself without using flash.sh?

Hi n.tazawa, since R28.1 release, updating DTB partition with the following flash.sh command is the official way:

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

The full DTB is no longer stored in /boot or fully referenced from extlinux.conf.

Unofficially, you may try using dd to update the DTB partition yourself, see these posts from users:

https://devtalk.nvidia.com/default/topic/1023007/jetson-tx2/how-to-use-uart0-as-normal-uart-port-on-r28-1-/post/5206125/#5206125
https://devtalk.nvidia.com/default/topic/1020708/jetson-tx2/method-to-modify-use-different-device-tree-in-r28-1/post/5204019/#5204019

Are there plans for an official method to update the DTB partition? We hope to be able to provide OTA upgrades to customers, and there’s a chance those would need to include device tree changes.

There’s an update process defined in the “TX2 Bootloader Update and Redundancy” section of the R28.2 docs, and the update engine is provided with the BSP. I adapted that for my project, and it works pretty well.