Full Recovery Imaging from a Windows 10 PC

Is it currently possible to do a full recovery of a Jetson Nano using a Windows 10 PC without using a Linux VM of any kind?

I know it’s easy to use the NVidia provided script file to do the full recovery using Ubuntu, but I don’t know if it’s possible to do this from a pure Windows environment.

What I want to be able to do is to create a stand alone device that plugs into a PC to download data collected, and to update the Neural Network models. Where the device was typically updated via existing SW upgrade solutions like what RidgeRun sells.

But, where the device also has a full recovery mode where a Windows based PC based application could do a complete total upgrade of the image on the eMMC of the production level Jetson Module

I’ve done some searching around, and i haven’t found anything. Sure I could use a Ubuntu VM, but I’m looking for something more straight forwards. Isn’t it just a disk image? Or is it more complicated than that?


I can’t answer that due to we only use the tool - Etcher to get the image write on SD card at Windows environment, no further activities/investigation with Windows. May other developers share their experiences.

If you are working on an SD card you can pretty much do everything from Windows (assuming you don’t need to create an ext4 filesystem…working with a binary clone of ext4 is just data, creating ext4 is the realm of Linux). A recovery mode Jetson of any kind is a different story. When in recovery mode the Jetsons are custom devices, and not bulk storage. So far as I know there is only a single program which understands and works with a recovery mode Jetson: The driver package.

The driver package itself uses binary executables which run only on Linux.

The Problem with trying to flash a Jetson from within a virtual machine is that during the process the device is ejected and that interrupts the device pass-through. As a result it really must* be done on bare metal by installing Ubuntu.

It’s not very hard to set up a dual boot system to do this, however. If you run into any trouble, feel free to ask. There are probably hundreds of years worth of combined dual boot experience on the forum here.

Linuxdev’s suggestion to use a SD card instead is a good one if you really want to avoid Linux. You can master an sd card image from within the virtual machine using SDK manager and associated tools and flash the resulting image either by passing through a usb device (not really recommended) or moving that image to some shared storage and flashing from any native OS.

Really any application that can write an image to a block device will work to flash an SD card image, from dd to etcher to gnome-disks… likely even mac os disk utility, but etcher is probably a better option since on all platforms I have used it does a verification pass as well.

*there is supposedly a work around involving passing through the device a second time, after it is ejected, but I wouldn’t trust this in a production environment.

I want to clarify that I’m looking into how I would design a product to sell to an end customer. I can’t expect the end customer to have a Ubuntu workstation or for a VM to be a feasible solution even if it did work.

There needs to be a windows driver, and a mechanism for a Windows based PC to update the Jetson Nano to make something like this practical.

From the discussion so far it doesn’t seem like there is so I’m going to consider this possible path to be non-viable.

You have few options. I do not have a production module personally, but I believe it can boot off SD card just like the development module can. Flashing to the integrated flash is optional. If your customer needs to update, they need only flash a sd card (from any os) and insert it. Preferably this is only done once, by you, prior to shipping your product because…

That would be the least preferable way to update, since it’s a lot of manual labor, and it would overwrite everything on the sd card. Thanks to Linux for Tegra being Debian based, you can set up over the air updates by adding your own apt repository to the image you make for your customer. then you publish debian packages containing your software to your update server (after testing, of course) and your customers can update your software from there using unattended-upgrades (which you can set up on the image you master for them initially).

Requiring your customers to update the device seems like a lot of labor for them, no? Plus they might never do it, leading to more compromised IOT devices. Would it not be preferable for them to just plug your device in and have it work out of the box with minimal setup at all – having updates automatically performed?

This would only be used as a recovery mechanism, and wouldn’t be used as the mechanism for a normal update.

As a consumer I like to have devices where I can fully recover them if something goes wrong during an update.

Thanks for your help.

I’m going to assume that this recovery method simply isn’t possible, and I’ll look into other methods. Or I’ll just accept that it can’t be made 100% bulletproof.

I see. A SD card is out of the question for your purposes? If that’s the case, I am unaware of any way to flash the emmc without using SDK manager and flash.sh in Linux. You could read the script, figure out what it does, and probably port it to Windows yourself, but so far I’m not aware of anybody who has done so.