Xavier / CBoot and TFTP kernel loading

I’m having issues loading a kernel image over TFTP using CBoot. I’ve followed the instructions from here:


…and whether I configure things via DHCP or static IP, my TFTP server does not see anything from the Xavier board upon power-up. I know the TFTP server works as I can download the images from other machines on the same network just fine. Watching the console when CBoot is active shows that my server’s IP address configuration is correct so I’m not sure what may be up. I see the following in the console:

[0006.932] I> Configure Static IP …
[0006.932] I> netif status changed
[0006.932] I> netif status changed
[0006.933] I> Our IP:
[0006.933] TFTP Client: Init
[0006.933] TFTP Client: Server IP:
[0006.933] TFTP Client: Send RRQ, file: tegra194-p2888-0001-p2822-0000.dtb
[0011.940] TFTP Client: Connection failed

Running tcpdump on the TFTP server shows absolutely nothing from the Xavier board until it gives up and boots from eMMC.

Anybody have any troubleshooting guides for using CBoot? I’m using the version packaged with Jetpack 4.1.1: Cboot Version: 4e3f0bea4cf94837f65ddb512d987e4e8589e811.10.31.2018.43-t194-3d46

I’ve got the Xavier board and TFTP server connected through a Netgear FS108 switch if that makes a difference. If it was a problem, I would expect that booting the Xavier to the kernel/rootfs on eMMC would show similar issues but communications between the machines work fine at that point.

One other oddity is that when I have DHCP enabled, it doesn’t look like the Xavier gets an IP address which makes me suspect CBoot is not properly communicating with my network. Once again, booting everything from eMMC gets a proper DHCP address so things do work downstream.



I’ve attempted to track this down by compiling cboot from source and deploying that. That results in a cboot that continuously resets (get an error about not being able to allocate enough memory for the kernel image). I enabled the shell console, but that only exposes a very limited set of commands – none of which are helpful with TFTP problem.

This may have been a Jetpack 4.1 vs Jetpack 4.1.1 DP thing. I reprogrammed everything via “sudo ./flash.sh jetson-xavier mmcbl0p1” under Jetpack 4.1.1 and the eMMC kernel can boot with no memory allocation reported. TFTP is still broken, however.

Must be a switch issue. If I connect from the TFTP server to the Xavier board using an Ethernet crossover cable, TFTP appears to work. Currently running into a DTB authentication issue now. One step forward, two steps back.

I haven’t confirmed it, but I’m fairly certain the authentication issue was due to not using tegraflash.py to sign the binaries before upload.