Unable to flash my Jetson AGX Xavier

I tried to flash my Advantec MIC-730AI (Jetson AGX Xavier) with SDK Manager with Host Ubuntu 18.04 and Ubuntu 20.04, tried to flash with 5.1.2, 5.1.1 and also tried with 4.x jetpacks still unable to flash my device. Using SDK manager it always throws a error saying “CPU Bootloader is not running on the device”

Then i tried using flash.sh script, the below steps is what i have followed

  1. Unzip the Jetpack version downloaded from the SDK manager
  2. Unzip the RFS files from Tegra_Linux_sample-root-filesystem_[version]
  3. Run sudo ./apply_binaries.sh
    Encountered error
    Using rootfs directory of: /home/iot/Downloads/Linux/Jetson_Linux_R35.4.1_aarch64/Linux_for_Tegra/rootfs
    ||||||||||||||||||||||| ERROR |||||||||||||||||||||||

  1. The root filesystem, provided with this package,
    has to be extracted to this directory:
    /home/iot/Downloads/Linux/Jetson_Linux_R35.4.1_aarch64/Linux_for_Tegra/rootfs

  1. The root filesystem, provided with this package,
    has to be extracted with ‘sudo’ to this directory:
    /home/iot/Downloads/Linux/Jetson_Linux_R35.4.1_aarch64/Linux_for_Tegra/rootfs

Consult the Development Guide for instructions on
extracting and flashing your device.
|||||||||||||||||||||||||||||||||||||||||||||||||||||

  1. Tried running sudo ./flash.sh jetson-agx-xavier-devkit mmcblk0p1
    (Attached the log)

I few posts related the problems I am facing, problem looks the same but the solutions doesn’t work.

The below post is pretty accurate to what I am facing when using flash.sh script, but the solution mentioned doesn’t work for me.

Continuing the discussion from Extlinux.conf is not found, exiting:

So does this rootfs really have package extracted with sudo?

No, I manually extracted Tegra_Linux package, because when I run flash.sh script it was mentioning bunch of files missing from rootfs folder.

….so are you going to extract the roofs with sudo or you don’t know what I am talking about here?

I think I dont have an idea of what you are mentioning, as far as what I found is when we run flash.sh script it would populate the rootfs folder, please correct me if am wrong. This is my first time flashing a Jetson device.

No, the roofs is a file system which would take at least a few GBs storage. It won’t just come from just a bash script…

You need to download not only the Driver Package (BSP) but also the Sample Root Filesystem in below page.

And follow this page here to prepare everything before flash process.
https://docs.nvidia.com/jetson/archives/r35.4.1/DeveloperGuide/text/IN/QuickStart.html#to-flash-the-jetson-developer-kit-operating-software

Yeah, I downloaded the File system (Not the one with suffix Source) from the same page and extracted it into the rootfs folder, still says files are missing and gives the error mentioned in the Topic. Let me know if the one with suffix “Source” is to be downloaded and extracted.

Also I see a Document to setup a sample file system with nv_build_samplefs.sh which will download the sample root file system and all the dependencies. Can I use this to build the file system required?

So could you share me the result of ls -al of your rootfs directory?

This does not matter. Please don’t waste your time doing this.

~/Downloads/Linux/Jetson_Linux_R35.4.1_aarch64/Linux_for_Tegra/rootfs$ ls -al
total 120
drwxrwxrwx 18 root root 40960 Dec 7 14:26 .
drwxrwxrwx 11 iot iot 4096 Dec 6 18:31 …
lrwxrwxrwx 1 iot iot 7 Dec 7 14:23 bin → usr/bin
drwxr-xr-x 2 iot iot 4096 Apr 15 2020 boot
drwxr-xr-x 2 iot iot 4096 Jul 31 2020 dev
drwxr-xr-x 134 iot iot 12288 Jul 20 14:14 etc
drwxr-xr-x 2 iot iot 4096 Apr 15 2020 home
lrwxrwxrwx 1 iot iot 7 Dec 7 14:23 lib → usr/lib
drwxr-xr-x 2 iot iot 4096 May 19 2021 media
drwxr-xr-x 2 iot iot 4096 Jul 31 2020 mnt
drwxr-xr-x 2 iot iot 4096 Jul 31 2020 opt
drwxr-xr-x 2 iot iot 4096 Apr 15 2020 proc
-rwxrwxrwx 1 iot iot 62 Aug 2 01:19 README.txt
drwx------ 3 iot iot 4096 Sep 20 2022 root
drwxr-xr-x 18 iot iot 4096 Jul 7 2021 run
lrwxrwxrwx 1 iot iot 8 Dec 7 14:23 sbin → usr/sbin
drwxr-xr-x 2 iot iot 4096 Feb 2 2021 snap
drwxr-xr-x 2 iot iot 4096 Jul 31 2020 srv
drwxr-xr-x 2 iot iot 4096 Apr 15 2020 sys
drwxrwxrwt 2 iot iot 4096 Jul 20 14:14 tmp
drwxr-xr-x 11 iot iot 4096 Mar 4 2021 usr
drwxr-xr-x 14 iot iot 4096 Mar 4 2021 var

Are you able to understand the point of this error?

It already told you what is wrong…

The root filesystem, provided with this package,
has to be extracted with ‘sudo’ to this directory:

Some history for flashing Jetsons might help.

Long ago, there was only command line flash. That command line content is still there, but it is surrounded by various aids. The Jetson itself, when in recovery mode, is a custom USB device. That means you need a custom USB driver. This just so happens to be named the “driver package”, and it has to run on the Linux host PC during flash because the Jetson itself does not have a BIOS (it has the equivalent in software, and cannot self-flash, but it also can’t be bricked via flash).

That means to start out, when manually installing to the host PC for flash, downloading and unpacking the driver package as a regular user.

The next thing to know is that the driver package needs content to create an image from. This is based on Ubuntu, and is known as the root filesystem. The package containing this on the downloads page, not far from the driver package download, is the “sample rootfs”. The driver package unpack would have produced the “Linux_for_Tegra/” subdirectory, and within that, the “rootfs/” subdirectory. The sample rootfs gets unpacked as user root (sudo) into “Linux_for_Tegra/rootfs/”.

At that point the NVIDIA drivers are still not ready. Within “Linux_for_Tegra/” is the “apply_binaries.sh” script. By running “sudo ./apply_binaries.sh” the “rootfs/” content is completed. NVIDIA content is now added to what was otherwise a purely Ubuntu software. You can flash all you want on command line at this point.

After command line the GUI app JetPack was added. This is a front end to the command line, plus it also has some utility after the flash completes. When the flash completes the Jetson will automatically reboot. JetPack can then use ssh to install some optional packages, e.g., CUDA. This did not exist on command line.

Later on, since JetPack still required a lot of manual download, a “smart” network layer was added. That’s SDK Manager (sdkmanager on command line). This automatically finds and installs a lot of details and is what makes it so you don’t have to manually install content. Running sdkmanager will unpack the driver package as a regular user (don’t ever start sdkmanager as root), it’ll ask for your password and unpack the sample rootfs as root, it’ll run the apply_binaries.sh, and it might download some other content as well (I haven’t even mentioned the host PC side, but there are some developer tools and such which come into play).

Incidentally, the directory you unpack the driver package into (if doing this manually) must be type ext4. If you use something like NTFS (which does not understand Linux file permissions), then it’ll “look” like it succeeded, but the install will be hopelessly broken.

If you want the least effort you’d just install sdkmanager and let it do all of the download and preparation work. The main problem there is that once you use the JetPack GUI the flash software has more dependencies on particular Ubuntu releases for the host PC.

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