Boot fails after upgrading to R21.3 - U-Boot: No valid FDT found

Hi all,

I re-flashed my Jetson TK1 from R21.2 to R21.3
now it only boots once, but not again after I press the reset button.

Using a terminal I can see the error is:

U-Boot SPL 2014.10-rc2-00006-g565af3f (Feb 02 2015 - 17:46:25)
No valid FDT found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d <file.dtb>
initcall sequence 83de34fc failed at call 83dc471c

ERROR ### Please RESET the board

If I flash it with R21.2 then it boots again.

I tried using a .cfg with a lower memory clock speed as suggested here:
https://devtalk.nvidia.com/default/topic/818509/reboot-failure-/
but no change.

Does anyone have some tips to diagnose this please?


I flash using these commands:

$ tar -xvf Tegra124_Linux_R21.x.0_armhf.tbz2
$ cd Linux_for_Tegra/rootfs
$ sudo tar xpf <path_to>/Tegra_Linux_Sample-Root-Filesystem_R21.x.0_armhf.tbz2
$ cd ..
$ sudo ./apply_binaries.sh
$ ./flash.sh jetson-tk1 mmcblk0p1

To reproduce the problem:

  1. I flash with R21.2, then wait until Jetson TK1 boots into the Ubuntu desktop.
    Then I do
sudo shutdown -h now

press power button
and it successfully boots again.

  1. I flash with R21.3, wait until I see the desktop.
sudo shutdown -h now

press power button
** then it displays error message “No valid FDT found” **
and does not boot.

  1. I flash with R21.2 again and everything is good.

The FDT is the firmware file, and for u-boot, this is named in the extlinux.conf file (default boot loader for R21.x, in /boot/extlinux/extlinux.conf). There should literally be a line for the kernel being booted “FDT …path”. Default line for R21.x:

FDT /boot/tegra124-jetson_tk1-pm375-000-c00-00.dtb

Does your R21.3 have this same line in extlinux.conf? Probably it does, but if not, this could be the problem.

Some of the files are populated into /boot of the sample rootfs during flash, which then gets propagated to Jetson. Changing of boot loader options or configuration may change which files get pushed into the sample rootfs (/boot). The file named in the FDT entry must be available in sample rootfs at the path named. Is the FDT file there? Should be located at rootfs/boot/tegra124-jetson_tk1-pm375-000-c00-00.dtb. However, memory clock config changes may have broken this.

This FDT file is found by u-boot before the o/s loads, so is this file present on the actual Jetson? My R21.3 file has a sha1sum of:

eb2888233cd9424155fc300dc95de3c0bec80f25  tegra124-jetson_tk1-pm375-000-c00-00.dtb

linuxdev: Thanks for your suggestion but unfortunately it did not help.
I have the correct FDT entry in extlinux.conf and the *.dtb file has the same checksum as yours, both in the rootfs on my Desktop PC and also on the Jetson.

But good news,
I spoke with Bibek from NVidia who was very kind to supply a replacement of “u-boot.bin” to overwrite the same file contained in “Linux_for_Tegra/bootloader/ardbeg/”
which is extracted from the L4T driver package archive.
After re-flashing my Jetson, it now boots properly with R21.3

For reference
http://developer.download.nvidia.com/embedded/L4T/r21_Release_v3.0/Tegra124_Linux_R21.3.0_armhf.tbz2
sha1sum: d3740d753ad8f139d22f2eec1008156f05a249ba
is the version I downloaded which has the “bootloader/ardbeg/u-boot.bin” file that doesn’t work for me.