Cannot update firmware from 35.3.1 on jetson orin nano

I triggered the firmware update by apt reinstall nvidia-l4t-bootloader and rebooted it. Actually it did something like updating the UEFI firmware. This is the serial log:

��OTICE:  BL31: v2.6(release):07eea4970
NOTICE:  BL31: Built : 07:55:15, Mar 19 2023
I/TC:
I/TC: Non-secure external DT found
I/TC: OP-TEE version: 3.19 (gcc version 9.3.0 (Buildroot 2020.08)) #2 Sun Mar 19 15:02:44 UTC 2023 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: WARNING: Test OEM keys are being used!
I/TC: This is only for TZ-SE testing and should NOT be used for a shipping product!
I/TC: Primary CPU switching to normal world boot
��Jetson UEFI firmware (version 3.1-32827747 built on 2023-03-19T14:56:32+00:00)

<a lot of empty lines>

Update Progress -  95% ***********************************************+++���Shutdown state requested 1
Rebooting system ...
��
  [0000.061] I> MB1 (version: 0.32.0.0-t234-54845784-57325615)
[0000.066] I> t234-A01-1-Silicon (0x12347) Prod
[0000.070] I> Boot-mode : Coldboot
[0000.074] I> Emulation:
[0000.076] I> Entry timestamp: 0x00000000
[0000.080] I> last_boot_error: 0x0
[0000.083] I> BR-BCT: preprod_dev_sign: 0

But after rebooting I found the bootloader version was the same before updating:

root@jetson-desktop:~# nvbootctrl dump-slots-info
Current version: 35.3.1
Capsule update status: 3
Current bootloader slot: A
Active bootloader slot: A
num_slots: 2
slot: 0,             status: normal
slot: 1,             status: normal

I didn’t find any explanations about capsule update status code 3. How to update firmware for this board?
Board & system info I found:

root@jetson-desktop:~# systemctl status nv-l4t-bootloader-config.service
● 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 Tue 2024-10-01 15:32:00 CST; 22s ago
    Process: 1405 ExecStart=/opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh -v (code=exited, status=0/SUCCESS)
   Main PID: 1405 (code=exited, status=0/SUCCESS)

10月 01 15:32:00 jetson-desktop nv-l4t-bootloader-config.sh[1836]: TEGRA_EMMC_ONLY false
10月 01 15:32:00 jetson-desktop nv-l4t-bootloader-config.sh[1836]: TEGRA_CHIPID 0x23
10月 01 15:32:00 jetson-desktop nv-l4t-bootloader-config.sh[1836]: TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
10月 01 15:32:00 jetson-desktop nv-l4t-bootloader-config.sh[1836]: TEGRA_OTA_GPT_DEVICE /dev/mtdblock0
10月 01 15:32:00 jetson-desktop nv-l4t-bootloader-config.sh[1405]: Info: Write TegraPlatformCompatSpec with 3767--0003--1--jetson-orin-nano-devkit-.
10月 01 15:32:00 jetson-desktop nv-l4t-bootloader-config.sh[1405]: Info. Uninstalling mtdblock.
10月 01 15:32:00 jetson-desktop nv-l4t-bootloader-config.sh[1405]: Info. Verifying boot status.
10月 01 15:32:00 jetson-desktop nv-l4t-bootloader-config.sh[1991]: Info: variable BootChainFwStatus is not found.
10月 01 15:32:00 jetson-desktop systemd[1]: nv-l4t-bootloader-config.service: Succeeded.
10月 01 15:32:00 jetson-desktop systemd[1]: Finished Configure bootloader service.
root@jetson-desktop:~# cat /etc/nv_boot_control.conf
TNSPEC 3767-300-0003-L.3-1-0-jetson-orin-nano-devkit-
COMPATIBLE_SPEC 3767--0003--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
root@jetson-desktop:~# apt show nvidia-l4t-bootloader
Package: nvidia-l4t-bootloader
Version: 35.5.0-20240613202628
Priority: standard
Section: bootloader
Maintainer: NVIDIA Corporation
Installed-Size: 360 MB
Pre-Depends: nvidia-l4t-core (>> 35.5-0), nvidia-l4t-core (<< 35.6-0)
Depends: nvidia-l4t-tools (= 35.5.0-20240613202628), nvidia-l4t-init (>> 35.5-0), nvidia-l4t-init (<< 35.6-0)
Homepage: http://developer.nvidia.com/jetson
Download-Size: 211 MB
APT-Manual-Installed: yes
APT-Sources: https://repo.download.nvidia.com/jetson/t234 r35.5/main arm64 Packages
Description: NVIDIA Bootloader Package

N: There are 2 additional records. Please use the '-a' switch to see them.
root@jetson-desktop:~# apt install nvidia-l4t-jetson-orin-nano-qspi-updater
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  apt-clone archdetect-deb bogl-bterm busybox-static cryptsetup-bin dctrl-tools dpkg-repack gir1.2-timezonemap-1.0 gir1.2-xkl-1.0 grub-common libdebian-installer4 libtimezonemap-data libtimezonemap1 os-prober
  python3-icu python3-pam rdate tasksel tasksel-data
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  nvidia-l4t-jetson-orin-nano-qspi-updater
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/8,939 kB of archives.
After this operation, 11.0 MB of additional disk space will be used.
(Reading database ... 160240 files and directories currently installed.)
Preparing to unpack .../nvidia-l4t-jetson-orin-nano-qspi-updater_36.3.0-20240424200557_arm64.deb ...
3767--0003--1--jetson-orin-nano-devkit-
Info. Installing mtdblock.
Info. Active boot storage: nvme0n1
Info. Legacy mode: false
TNSPEC 3767-300-0003-L.3-1-0-jetson-orin-nano-devkit-
COMPATIBLE_SPEC 3767--0003--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--0003--1--jetson-orin-nano-devkit-.
ERROR. Board 3767--0003--1--jetson-orin-nano-devkit- is not supported. Only Orin Nano devkit is 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
E: Sub-process /usr/bin/dpkg returned an error code (1)

PS: This board does not have microSD slot. It boot from nvme disk only.

Hi sots,

Are you using the devkit or custom board for Orin Nano?

Are you trying to update bootloader from R35.3.1 to R35.5.0?
If so, please refer to Generating the Capsule Update Payload for details.

I made a capsule with command

$ cd ${ToT_BSP}
$ sudo ./l4t_generate_soc_bup.sh -e t23x_3767_bl_spec t23x
$ ./generate_capsule/l4t_generate_soc_capsule.sh -i bootloader/payloads_t23x/bl_only_payload -o ./TEGRA_BL.Cap t234

but after updating:

root@jetson-desktop:~# nvbootctrl dump-slots-info
Current version: 35.3.1
Capsule update status: 3
Current bootloader slot: A
Active bootloader slot: A
num_slots: 2
slot: 0,             status: normal
slot: 1,             status: normal

still failed to update
This board has no eMMC or microSD slot. I don’t know if it is a custom board, and the ID 3767--0003--1--jetson-orin-nano-devkit- contains devkit, so I think I’m using the real devkit.

According to that page: To verify the single partition image Capsule update status, check the value of the /sys/firmware/efi/esrt/entries/entry0/last_attempt_status file after system boots up. 0 means that the verification was successful. For other values, check the error code:

Here is the error code:

root@jetson-desktop:~# cat /sys/firmware/efi/esrt/entries/entry0/last_attempt_status
6157

What’s the meaning of this error code?

According to Microsoft document, this value should be a number between 0~7:

One of the following values that describes the status of the last firmware update attempt:

0: Success

1: Unsuccessful

2: Insufficient resources

3: Incorrect version

4: Invalid image format

5: Authentication error

6: Power event - AC not connected

7: Power event - Insufficient battery

jetson-orin-nano-devkit is the board config you are using.
Some custom carrier board may use the same board config name.
Where did you get this board?

If you are using the devkit, have you tried just using SDK Manager to flash R35.5.0?

Okay finally I managed to get the device updated to jetpack 6.1 using sdkmanager and flash scripts. There are some bugs in sdkmanager flashing program that take a lot of time and then crash with strange and fking reasons, e.g. command ‘systemctl’ not found, nfs mount point not exist, kernel module path not exist, etc. But at least it helps me update the firmware and generate images. Then I use flash.sh to flash the system manually and finally it works.

My professor bought this board in secondhand market, and after updating the firmware the edk2 menu says it’s ‘NVIDIA Jetson Orin NX Engineering Reference Developer Kit’. Is it a ‘custom’ board?

1 Like

It should be NVIDIA Jetson Orin Nano Developer Kit if you are using the Orin Nano devkit.

But it seems you’ve managed to get it work.

1 Like