Easily upgrading TX1 to R24.1

Hi everyone,
We have a Jetson TX1 dev board that shipped with 32-bit R23. We’re developing software that works with large datasets and we need to run our software in 64-bit. So we need all the 64-bit libraries for that. It seems those libraries exist in R24.1.

I found the lengthy instructions here:
http://ecee.colorado.edu/~ecen5653/ecen5653/doc/JETSON/Tegra_Linux_Driver_Package_Developers_Guide.pdf

But I was hoping for a simpler installation. In particular:

  • Can we upgrade without recompiling a kernel?
  • Can we upgrade without flashing the firmware?
  • Is the word “flash” being used to mean “write to the eMMC drive”, rather than “flashing a bios”?

Additionally, we have a separate SATA SSD we’re using. It seems like we should be able to just stick the ubuntu image on the SSD and change the boot disk from the eMMC to the SATA disk.

We don’t have a second linux host system set up. Can the upgrade be done without one? Can the ./flash script be run from a Mac?

I’ve also looked at the quick start guide here:
http://developer.download.nvidia.com/embedded/L4T/r24_Release_v1.0/24.1_64bit/t210ref_release_aarch64/l4t_quick_start_guide.txt

I’m not sure if that’s what I want. Part of my confusion might be over the repeated use of the word flash… when it seems to just be copying files over a USB connection… or perhaps acting functionally like dd-ing an image to a disk.

Thanks in advance!

What you want is to install R24.1 with the 64-bit sample file system (driver+sample rootfs packages). This will install 64-bit user land plus 64-bit kernel (actually, all of the R24.x has 64-bit kernel, it’s only the user space which differs). Flashing is the easiest thing to do. Trying to overwrite an entire operating system while it runs is problematic. Kernel and firmware are simple file copies and boot config edit, but it’s user space you can’t get around.

If you flash, you don’t need to do kernel compile, the kernel is in there.

Flash writes directly to eMMC by means of an installer program. That program requires x86_64 Linux. Ubuntu is only required if you use JetPack front end to install. eMMC is not that different from a BIOS, but on a Jetson u-boot has the equivalent function of the BIOS (the boot loader is more complicated on embedded because of this). During flash all file system content will be lost and replaced with a new file system. This includes some invisible partitions, not just the obvious one.

You can boot external devices, but the catch is that both the kernel and u-boot must support it. The kernel supports most anything, but it’s back to the issue of having no BIOS…if u-boot can’t do it, then you can’t boot from it. A USB external drive will work if the kernel is told to keep it in USB2 mode…that’s because u-boot only supports USB2 and you’d lose the hard drive as the kernel loads and tries to reload a new USB3 driver. SD card is a good choice for alternate boot and testing. If you have a serial console it’s nothing more than an edit of “/boot/extlinux/extlinux.conf”, and then you can test any boot entry you want on the SD without fear of losing anything or needing flash. A SATA connector drive should also work, but I’m not sure about SSD issues (I have none to test with, and even had to recently scavenge my Jetson HD to replace a failing drive on my host).

As a note, when a Jetson is in recovery mode it becomes a custom device which the flash software can run. It isn’t quite a direct write to eMMC (the Jetson does not become a standard flash drive), flash software temporarily uses fastboot to load minimal functionality…then fastboot goes away after the flash is done. Typically flash is close to the same as dd of the eMMC if you exclude the fastboot temporary software and custom USB software.

Thanks for clearing that up, linuxdev. That was a big help.

I successfully flashed to R24.1! The actual flashing process was easier than I expected, it just took a while to get and set up a linux host.

We haven’t set it up to boot off the SSD yet- we wrote over the eMMC. But we’ll keep it for our datasets.