Problem updating to JetPack 6.0 using SD card

Hello,

I am trying update to JetPack 6.0 on a Jetson Orin Nano Developer Kit using the SD card method in the following guide:

Update from jetpack 5 to jetpack 6

My UEFI version gets updated to 5.0-35500185 which can be read during bootup, however I can not install the QSPI updater due to incorrect BSP version.

sudo apt install nvidia-l4t-jetson-orin-nano-qspi-updater

Preparing to unpack .../nvidia-l4t-jetson-orin-nano-qspi-updater_36.3.0-20240424200557_arm64.deb ...
3767--0005--1--jetson-orin-nano-devkit-
Info. Installing mtdblock.
Info. Active boot storage: nvme0n1
Info. Legacy mode: false
TNSPEC 3767-300-0005-K.2-1-1-jetson-orin-nano-devkit-
COMPATIBLE_SPEC 3767--0005--1--jetson-orin-nano-devkit-
TEGRA_LEGACY_UPDATE false
TEGRA_BOOT_STORAGE nvme0n1
TEGRA_EMMC_ONLY false
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0
Info: Write TegraPlatformCompatSpec with 3767--0005--1--jetson-orin-nano-devkit-.
ERROR. BSP version 1 is not supported.
dpkg: error processing archive /var/cache/apt/archives/nvidia-l4t-jetson-orin-nano-qspi-updater_36.3.0-20240424200557_arm64.deb (--unpack):
 new nvidia-l4t-jetson-orin-nano-qspi-updater package pre-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 /var/cache/apt/archives/nvidia-l4t-jetson-orin-nano-qspi-updater_36.3.0-20240424200557_arm64.deb

I suspect that I have the incorrect version information when reading the slots info:

sudo nvbootctrl -t bootloader dump-slots-info

Current version: 0.0.1 <--- This should be 35.5.0 according to the guide
Capsule update status: 0
Current bootloader slot: A
Active bootloader slot: A
num_slots: 2
slot: 0,             status: normal
slot: 1,             status: normal

The system requests a reboot to update the bootloader, but during the reboot it is not updated since it is already the correct version if I understand correctly, since the UEFI verion is 5.0-35500185 during bootup. So after logging in again, the system requests a reboot, which is the loop I am stuck in.

The systemctl status is as follows:

sudo systemctl status nv-l4t-bootloader-config
â—Ź nv-l4t-bootloader-config.service - Configure bootloader service
     Loaded: loaded (/etc/systemd/system/nv-l4t-bootloader-config.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Thu 1970-01-01 00:00:48 UTC; 54 years 5 months ago
    Process: 1211 ExecStart=/opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh -v (code=exited, status=0/SUCCESS)
   Main PID: 1211 (code=exited, status=0/SUCCESS)

Jan 01 00:00:48 ubuntu nv-l4t-bootloader-config.sh[1814]: INFO. Copy capsule payload to /opt/nvidia/esp/EFI/UpdateCapsule/ and l4tlauncher to /opt/nvidia/esp/EFI/BOOT/ done.
Jan 01 00:00:48 ubuntu nv-l4t-bootloader-config.sh[1814]: INFO. Set capsule UEFI variable /sys/firmware/efi/efivars/OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c done.
Jan 01 00:00:48 ubuntu nv-l4t-bootloader-config.sh[1814]: Updating extlinux.conf...
Jan 01 00:00:48 ubuntu nv-l4t-bootloader-config.sh[1814]: Root device is set in the extlinux.conf
Jan 01 00:00:48 ubuntu nv-l4t-bootloader-config.sh[1814]: Reboot the target system for updates to take effect.
Jan 01 00:00:48 ubuntu nv-l4t-bootloader-config.sh[1211]: Info. Uninstalling mtdblock.
Jan 01 00:00:48 ubuntu nv-l4t-bootloader-config.sh[1211]: Info. Verifying boot status.
Jan 01 00:00:48 ubuntu nv-l4t-bootloader-config.sh[2139]: Info: variable BootChainFwStatus is not found.
Jan 01 00:00:48 ubuntu systemd[1]: nv-l4t-bootloader-config.service: Succeeded.
Jan 01 00:00:48 ubuntu systemd[1]: Finished Configure bootloader service.

The release information shows that I am using R35, which seem correct for this jetpack version before upgrade.

cat /etc/nv_tegra_release
# R35 (release), REVISION: 5.0, GCID: 35550185, BOARD: t186ref, EABI: aarch64, DATE: Tue Feb 20 04:46:31 UTC 2024

Do you have any suggestion on how I can update to JetPack 6?

Is the module originally flashed with 35.5?
Or the update to 35.5 is done via inserting a 35.5 SD card while the bootloader is still 35.3.1/35.4.1?

I inherited the Developer Kit from a colleague in this state so I don’t know. Currently he is on vacation so I cannot ask him either.

Is there any way to check this on the hardware?

Is it possible to revert back to original bootloader and restart the upgrade procedure somehow?

I just verified this workflow, and the bootloader version with nvbootctrl is correctly shown as 35.5.0, so I’m not quite sure how you got this.
It’s suggest to use an Ubuntu PC to re-flash the device with SDK Manager.

Hi,

Please read the bootloader version string following methods mentioned here:
https://docs.nvidia.com/jetson/archives/r36.3/DeveloperGuide/SD/Bootloader/UpdateAndRedundancy.html#bootloader-version-in-qspi-flash

On a normal 35.5 device, you should get 2295040 with

sudo cat /sys/firmware/efi/esrt/entries/entry0/fw_version

See if modifying it with the correct value makes nvidia-l4t-jetson-orin-nano-qspi-updater work.
I’m not sure if it’s a safe operation so please be careful with it.

Something must have gone wrong before since my version is

sudo cat /sys/firmware/efi/esrt/entries/entry0/fw_version
1

I am not sure how to modify this value since it is in the /sys path.

sudo echo "2295040" > /sys/firmware/efi/esrt/entries/entry0/fw_version
-bash: /sys/firmware/efi/esrt/entries/entry0/fw_version: Permission denied

Should I have one or multiple entries in

/sys/firmware/efi/esrt/entries/

You can do it in the similar way mentioned here to modify EFI variables:
https://docs.nvidia.com/jetson/archives/r36.3/DeveloperGuide/SD/Bootloader/UEFI.html#set-the-uefi-variable-in-the-recovery-kernel-shell

I managed to downgrade the bootloader when flashing 5.1.1 (rev. 1) release using sdkmanager. After that the version numbers were correct in the system so that I could upgrade the bootloader again using release 5.1.3. After that the bootloader could be upgraded again using nvidia-l4t-jetson-orin-nano-qspi-update.

My issue is now resolved so this thread can be closed.

1 Like

OK, that’s fine.
But if you have access to SDKM, then it’s much easier to directly flash JetPack 6 instead of going through all these update processes.

But JetPack 6 requires bootloader version 36.3 right? If not I have completely misunderstood this guide:

Flashing with SDKM updates everything including bootloader and rootfs.

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