Cannot flash my agx-orin

Hi, I have tried everything listed on your developer forum and I cannot flash my AGX Orin devkit board. Here is a brief rundown of what I have tried so far and I cannot get past the this error which says:

sudo ./flash.sh jetson-agx-orin-devkit  mmcblk0p1
###############################################################################
# L4T BSP Information:
# R35 , REVISION: 4.1
# User release: 0.0
###############################################################################
Error: probing the target board failed.
       Make sure the target board is connected through 
       USB port and is in recovery mode.

Setup for AGX Orin

The NVIDIA AGX Orin comes with oem linux flashed but does not work. Neither the documentation is updated to reflect changes made after users registered issues about misconfigurations on the Discussion Forum.

So before setting up the first time, there are a few things to run by

  1. Setup Linux host instance
    Get a Linux host (Ubuntu) on the MacBook.
  • Go ahead and pick your fav virtualization software (VMWare Fusion) to spin up an Ubuntu 20.04 instance from the .iso files.
  • Initial storage of 20G will be insufficient so make sure to have at least 64G dedicated for the root volume mount.
  • Follow the steps listed here
    NOTE: Don’t turn off Network Adapter as mentioned in the article.
  • Hit enter and keep all defaults throughout the installation process

Post-installation steps should have a GUI-desktop environment to use Firefox to download the required drivers.

  1. Setup, Flash Jetson Linux into AGX Orin
  • Use Ubuntu’s desktop env to download *.tbz2 files included here.
  • export env variables:
export L4TRELEASEVERSION=R35.4.1_aarch64
export L4T_RELEASE_PACKAGE=Jetson_Linux_${L4TRELEASEVERSION}.tbz2
export SAMPLE_FS_PACKAGE=Tegra_Linux_Sample-Root-Filesystem_${L4TRELEASEVERSION}.tbz2
export BOARD=jetson-agx-orin-devkit
  • install dependencies

sudo apt-get install qemu-user-static minicom

  • untar files and setup Jetson Linux filesystem

mv ~/Downloads/* .
tar xf ${L4T_RELEASE_PACKAGE}
cd Linux_for_Tegra/rootfs/
sudo tar xpf ../../${SAMPLE_FS_PACKAGE}
cd ..
sudo ./apply_binaries.sh
  • Here is another kicker: you have to setup the user and password BEFORE flashing else you will get a black screen.
sudo ./tools/l4t_create_default_user.sh -u <username> -p <password>
$ Creating: Username - *****, Password - ********, Autologin - false
...
$ Creating: Hostname - tegra-ubuntu

Keep this layout handy, since during flash step, you will need the debug-UART with minicom to flash the board, but for oem-config to actually setup Linux in the next step, you will need the USB-C cable. Flashing with USB-C cable does not seem to work. And the UART debug is also not robust.

  • Connect the USB-C cable for power. The board will power up by default

  • So power-off by pressing the power button for 10s

  • IMPORTANT: Connect a micro-USB for flashing and debugging as mentioned in this link

  • Put the board in force-recovery mode:

  1. Hold down the force-recovery (middle) button
  2. Push and release the power button (left)
  3. Release the middle button. A white light will turn on with no fan running.
  • Upon connecting, AGX will ask you to connect to either Mac or Linux. My guess is that one should select Linux.
  • To determine whether it is in force-recovery mode run lsusb. The output should read out

Bus <bbb> Device <ddd>: ID 0955: 7023 Nvidia Corp
where, bbb, ddd are three-digit numbers, and 7023 refers to AGX Orin

Bus 002 Device 007: ID 0955:7023 NVIDIA Corp. VMware Virtual USB Mouse
  • Why is this a USB Mouse? Maybe because I was using USB-C cable to flash the board. That doesn’t seem to be the case, since this article wants you to use the serial console via a USB-micro for flashing and debugging.
  • Well when I connect with a micro-USB (via a docking hub), then lsusb reads out
Bus 002 Device 013: ID 0955:7045 NVIDIA Corp. VMware Virtual USB Keyboard

Alright here’s the fun part. The so-called “documentation” will ask you to run

sudo ./flash.sh jetson-agx-orin-devkit  mmcblk0

and this is where I am stuck.

I cannot find any /dev/ttyUSB* device to run minicom, neither the screen cmd displays anything. Also upon connecting the board the first time, I do find a bunch of README files in the Tegra folder that mounts onto the Ubuntu VM (i.e. README-usb-dev-mode, etc), but there is no filesystem that I see, so I believe the board needs to be flashed.

Hi,

Please don’t use virtual machines unless you know how to setup all the connection details.

I will also add that a 20 GB partition of the host is drastically insufficient. The error you gave is related to the VM not passing through USB properly (VMs are not a real host PC until you configure it to match a real PC; losing and not reacquiring USB is a VM fault), but if it had worked, then flash would generate a rootfs image which is equal to the size of the partition. If the Orin has a 64 GB rootfs partition, then that image alone will require 64 GB on the host PC. It gets worse because a sparse image is created from the previous image (which was a raw image). That sparse image is about the same size as the content on the partition, so if the partition is 64 GB, and the content is 5 GB, then you’ve spent 69 GB just from the rootfs partition. After the o/s is installed, and after sdkmanager is installed, I’d suggest you want another 150 GB of spare space.

Thanks for your replies. As someone with a MacBook, what is a possible workaround if VMs are not the way to go? Clearly one cannot be forced to buy a Linux workstation just to flash or reflash the board which should have been shipped with a working OS. I also feel like Ubuntu is a bloated OS that shouldn’t be used for embedded devices. Any help would be much appreciated since I have invested thousands of dollars into your product.

If you cannot get it done with virtual machines, and you also don’t have an x86 Linux PC, then I don’t see anything else you can do.

Most virtual machine softwares come with the setting of transferring USB connection from the host OS to the VM, and that is what you should take care of, because the device will be connected and disconnected multiple times, which may not be handled well by the VM.

Maybe something like this:

Thanks for that link. What I observe on VMWare Fusion is that as soon as the device is plugged to my host MacBook, the Ubuntu VM recognizes the USB device and mounts to it. So the device via USB is visible and accessible to the VM. Would there be a way to correctly config it? I cannot be forced to buy a Linux PC just to flash a device. Is there a workaround that NVIDIA has published since very few of us buy Linux PCs at home? I do have a Raspberry Pi 4 at home and could install Ubuntu for Raspberry Pi, if that could possibly be a potential option. Will much appreciate your inputs and pointers. Thanks!

We don’t officially support virtual machines, so you should get it done yourself. Dual boot your PC with Ubuntu would also be an feasible option.

Raspberry Pi is not going to work because flashing requires not only shell scripts, but some of our proprietary binaries, which only come in x86, but not aarch64.

Just for clarity, I want to emphasize that most VM issues are not with the original recognition of the device; the error tends to occur because the VM must reacquire the USB as it disconnects and reconnects. If the VM is not set up to hold onto this device every time it disconnects, causing the VM to reconnect, then it won’t work.

1 Like

This is a FAQ: You absolutely MUST use a baremetal Ubuntu 20.04 machine. Does not need to be a particular powerful one, an Atom J4125 is enough. Must be amd64/x86-64 though, 32 bit is not enough.

This FAQ should go into the documentation.

1 Like

That brings back memories! I used to use an old dual core Atom notebook (it still views email)…as slow as it was, it actually worked. My real problems came because it had only a 10.1 inch screen, and I had to use command line. JetPack doesn’t seem to have a resizable GUI, so it couldn’t be viewed. My desktop was Fedora, and I needed Ubuntu for the GUI, so I did remote display from the dual core Atom laptop to the Fedora PC and flash was from the laptop.

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