Updating the Device Tree in system without using a PC

We are working on a custom carrier board for the Jetson Nano platform. We are currently working on the firmware upgrade method and have run into a roadblock. We need to be able to update the device tree post product launch. Our platform does NOT have any USB interfaces. So we can’t connect a PC to the target to perform the firmware update. I have tried to reverse engineer the NVidia update scripts to replicate the device tree signing. Here is what I’ve tried:

./tegrahost --chip 0x21 --align test.dtb
./tegrahost --magicid DTB --appendsigheader test.dtb test.dtb_blheader
./tegrasign --key None --file test.dtb_blheader
./tegrahost --updatesigheader test_encrypt.dtb_blheader test.hash zerosbk

It seems to generate the correct files, although what looks like the signed key is different than the one I dump from the DTB partitions. How can I create a valid DTB partition on the PC WITHOUT connecting to the SOM?


Which release are you using? Actually, you could just put it under /boot/dtb and write a FDT field in extlinux.conf to point to it.

No need to update the partition.

We are using Yocto so we can precisely control our Linux ecosystem. But it is based on the R32.4.2 L4T release and the 4.4 Jetpack release.

Can you point me to some documentation on the FDT/extlinux.conf options?


I would suggest you could upgrade to rel-32.4.3 to prevent this bug.