OTA Update from 28.2 to 32.x

My company has a couple hundred of Jetson TX2s in the field still running L4T 28.2. We are about to switch onto the TX2 NX and would like to be able to update our legacy devices to the latest L4T release (32.x) to keep them in sync with the new devices we manufacture.

Is there any way we can get access to tools and resources for performing this update? We have hear through the grapevine that it is possible and has been successfully conducted internally.

Please check the image based OTA upgrade.


Thanks @WayneWWW for the reply. That documentation is very helpful.

I have some (possibly dumb) followup thoughts and questions. I’m not a low-level Linux expert, and the OTA process in the documentation sounds a bit daunting and high risk. I don’t totally understand everything that is getting upgraded in the process, so please excuse any ignorance.

One simple question: Is there any way to do a less invasive upgrade with the only goal of being able to use newer CUDA / cuDNN (and thereby TensoRT)? That is our chief goal in performing OTA updates.

We utilize TensorRT and CUDA, and our app runs inside a docker container. Our base L4T OS (with tons of stuff uninstalled) + CUDA / cuDNN / TensorRT + our container produces about a 13GB compressed system.img file and uses about 9GB of disk on a running TX2.

If I understand correctly, the OTA process does not require you to download a full filesystem image to perform the update and you can instead only update the relevant portions (namely the bootloader / core parts of the OS / etc) of the filesystem and retain files in userspace.

However, since there is a direct dependency chain from the GPU driver → CUDA → TensorRT → our app, is there any way we can we update the GPU driver / CUDA without simultaneously requiring a new docker image built against the newer TensorRT / CUDA?

I’m not sure if you have any recommended strategies for navigating these waters, but any insights would be appreciated.

This is a strong dependency between CUDA version and the L4T release. You cannot mix and match, so if you want the CUDA version of a certain release, then you must flash that release. R28.x predates using packages for versions, and so there is no OTA update with this. You can clone to save a copy of the original rootfs, but you really have to do a full flash to go from R28.x to R32.x+.

The GPU driver is similar in its dependency.