Flash/reset bricked AGX Orin after purging its kernel

Hi! I have a AGX orin dev kit.

Originally it worked great, I was able to install and boot the OS normally. and then I was trying to upgrade it to the latest Jetpack version. However the update was not successful so I stumbled into a topic with a fix:

Basically I did the following command and restart the Orin, it became bricked. (Yes I know I was totally wrong to uninstalled the kernel then shutdown)
sudo apt purge nvidia-l4t-kernel nvidia-l4t-kernel-headers nvidia-l4t-jetson-io nvidia-l4t-display-kernel nvidia-l4t-kernel-dtbs

Steps that I have taken to fix it:

  1. reset the machine and connect to usb to reflash, but the Jetson usb device cannot be found. (Tried numerous time on different host PC but can never find my Jetson)

  2. restart the machine: here’s the error that I see

  3. I etched a Jetson nano img file to a SD card following steps here: (Get Started With Jetson Nano Developer Kit | NVIDIA Developer), then booted my Orin through the SD card. It worked, but once I shutdown the machine and take out the SD card, the machine won’t start again and gives the same error.

So now I want to find a way to “format” the non-working OS in the Orin internal storage, copy the image from SD card to the internal storage. Hopefully that will make my Orin work without the SD card plugged in. However I don’t know where to copy the files from my sd card to the internal storage, and how to change the boot options.

If there’s a way to make the usb-c device work, that would be great too. Cuz I can just flash Orin from sdkmanager on my host computer, or according to the “Headless configuration” part in (Getting Started with Jetson AGX Orin Developer Kit | NVIDIA Developer). However, I tried several times and I cannot ever find that usb serial device. I did “factory reset” my orin every time I perform this action though, but still cannot see the serial device.

Have been fixing this issue for a week now and it is indeed frustrating. I’m not an expert on OS so please excuse me if I asked dumb questions. Thank you very much!

Here’s the lsblk and df-h results. This is when I boot the jetson from my sd card, and I believe the mmcblk1 corresponds to my sd card.

However I cannot see any disk that corresponds to the system disk. Is this normal?


did you get the device into force recovery mode correctly? (Press and hold the force recovery button, press and release the power button, and finally release the force recovery button) You should see 0955: 7023 showing up with lsusb if it’s done in a proper way.

Remember that only the USB-C port on the front of the AGX Orin is available for flashing, not the one on the back and above the power jack, and I think formatting the storage or not does not affect the flashing process.

If you are sure the device is in the force recovery mode, but the flashing process still fails, please put the log here.

Hi I think I was able to make it to recovery mode. However I am not sure what is the next step. I followed the guide in here (headless initial setup):
(Getting Started with Jetson AGX Orin Developer Kit | NVIDIA Developer)
but I cannot find the COM port.

Is this the correct way to do, as technically this is not “initial setup”?
If not should I use sdkmanager?

My system is Windows11 on X86. Previously I used wsl2 to download sdkmanager but there’s dependency issues which made it not working. Is it possible to use the sdkmanager docker image inside wsl to flash my Jetson Orin?

Is the host PC a VM? That usually causes problems with USB. In the case of WSL2, it also lacks loopback. You need to use JetPack/SDK Manager on an Ubuntu host (either Ubuntu 18.04 or 20.04). I would expect USB to often fail on all VMs, and loopback to fail on all WSL2 (in addition to USB).

Incidentally, if the host PC disk space is not ext4, then I expect it to also fail in other ways.

Hi linuxdev,

Thanks for the reply. I’m using just a commercial windows 11 laptop with no vm. Currently I don’t have an X86 machine with native Ubuntu on it, so I would prefer a solution to flash with wsl2.

Not sure what’s the loopback problem that you are referring to, but I executed
usbipd wsl attach -a -b 1-2 to make sure the usb auto re-attach (-a). And I could indeed see the device inside wsl with lsusb

Then I sought ways to flash. I did find something on NGC, and I used this flash container:

I verified that my APX is passed into the container, and I followed all the steps there(including download L4T Driver Package and Sample Root Filesystem) but still got stuck on the last step which is ./flash.sh

Attached the log (this is log inside the flash container) when I executed the flash command
log.txt (11.7 KB)

By the way I have Ubuntu 20.04 for my wsl2, and I used r35.3.1 of the flash container. If this flashing really cannot be done through wsl2 then I can try to look for an Ubuntu computer.


you may be able to get devices flashed with VM or WSL, but it’s not what we officially support, and you’d have to work it out on your own if there’s any issue. Please do use a real Ubuntu host.

If USB works correctly, and if the filesystem containing the Linux flash content is ext4, then the mechanics of flashing would work even with a VM. WSL2 though would probably fail to create a valid rootfs (flash would appear to work, but boot would not have a filesystem). For WSL2 to be valid (assuming the first points about USB and being on ext4 are valid) you’d also have to set up WSL2 to have loopback available (which I don’ t know how to do).

If you really want to save a lot of frustration, and you want to develop for a Jetson, you’ll be far better off with an Ubuntu 20.04 host PC (perhaps dual boot; you could also use Ubuntu 18.04 for an Orin; some earlier Jetson hardware would have to be Ubuntu 18.04). I can’t overemphasize how important it is to have a native Ubuntu host PC.

Note that if you can add another hard drive to your PC, then dual boot is rather simple. Installing Linux to the new drive would leave Windows alone, and the installed bootloader would allow picking either Linux or Windows. If you do this and want information on changing the boot timer or defaults, just ask.

After numerous tries this finally worked!!

Summary: One can use wsl2 on X86 to flash Jetson devices! And even without using SDKManager
Caution: you must use wsl Ubuntu 18.04! 20.04 does not work.

Steps to do this:

Install wsl and detach usb: (run steps 1,2,4,5,7 suggested by this link below)

Install docker in wsl: Basically just download and install docker desktop on windows, then wsl2 should be automatically enabled after rebooting the PC.

Then use the Jetson flash container for flashing:

Follow the instructions there.

Download Sample Root Filesystem and driver package(BSP) from:

To find the board name when executing the ./flash.sh command:
For Orin AGX this is “jetson-agx-orin-devkit”, you can also emulate other devices:

For board name of other devices like Xavier, Nano:

Other useful commands:
(in PowerShell) to see a list of installed distro names
wsl -l
To uninstall a linux distro (this will erase all files in that OS!):
wsl --unregister

Although figured it out myself, many thanks for y’all answering my questions! Hope my solution is helpful to others having the same problem.


This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.