Cannot update firmware 35.5.0

Hello,

I am attempting to update my firmware through OTA but seem to be running into some issues. I am currently on 35.5.0 and wish to update to 36.3.0. I am using a Connect Tech Hadron carrier with an Orin Nano 8Gb. I was able to get this to work flawlessly using the Orin AGX on another connect tech carrier (both mmc and nvme).

I’ve updated the ota_board_spec.conf accordingly, so I am confused to where I am going wrong.

Jetson UEFI firmware (version 5.0-35550185 built on 2024-02-20T04:21:22+00:00)
ESC   to enter Setup.
F11   to enter Boot Manager Menu.
Enter to continue boot.

Update Progress - 100% **************************************************▒▒▒▒Shutdown state requested 1
Rebooting system ...
▒▒
[0000.060] I> MB1 (version: 1.4.0.2-t234-54845784-08a4de08)
[0000.066] I> t234-A01-1-Silicon (0x12347) Prod
[0000.070] I> Boot-mode : Coldboot
[0000.073] I> Entry timestamp: 0x00000000
[0000.077] I> last_boot_error: 0x0
[0000.080] I> BR-BCT: preprod_dev_sign: 0
[0000.084] I> rst_source: 0xb, rst_level: 0x1
[0000.088] I> Task: SE error check
[0000.091] I> Task: Bootchain select WAR set
[0000.095] I> Task: Enable SLCG
[0000.098] I> Task: CRC check
[0000.101] I> Task: Initialize MB2 params
[0000.105] I> MB2-params @ 0x40060000
[0000.109] I> Task: Crypto init
[0000.111] I> Task: Perform MB1 KAT tests
[0000.115] I> Task: NVRNG health check
[0000.119] I> NVRNG: Health check success
[0000.123] I> Task: MSS Bandwidth limiter settings for iGPU clients
[0000.129] I> Task: Enabling and initialization of Bandwidth limiter
[0000.135] I> No request to configure MBWT settings for any PC!
[0000.140] I> Task: Secure debug controls

Then I reboot to the following screen, that runs endlessly but does nothing until re-flashed.

Jetson UEFI firmware (version 5.0-35550185 built on 2024-02-20T04:21:22+00:00)
ESC   to enter Setup.
F11   to enter Boot Manager Menu.
Enter to continue boot.
**  WARNING: Test Key is used.  **
...
   L4TLauncher: Attempting Direct Boot
EFI stub: Booting Linux Kernel...
EFI stub: ERROR: Invalid header detected on UEFI supplied FDT, ignoring ...
EFI stub: Generating empty DTB
EFI stub: Loaded initrd from LINUX_EFI_INITRD_MEDIA_GUID device path
EFI stub: Exiting boot services...

Here is what my spec_entry for the carrier looks like.

cti_orin_nano_ngx012_00_ota_emmc_r35_r36_spec=(
	# External device
	# orin-nx 16GB
	#'boardid=3767;fab=000;boardsku=0000;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:D3;board=cti-orin-nano-ngx012-00;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT'
	# orin-nx 8GB
	#'boardid=3767;fab=000;boardsku=0001;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:D4;board=cti-orin-nano-ngx012-00;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT'
	# orin-nano 8GB
	'boardid=3767;fab=300;boardsku=0003;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:D5;board=cti-orin-nano-ngx012-00;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT'
	# orin-nano devkit 8GB
	#'boardid=3767;fab=000;boardsku=0005;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:D5;board=cti-orin-nano-ngx012-00;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT'
	# orin-nano 4GB
	'#boardid=3767;fab=000;boardsku=0004;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:D6;board=cti-orin-nano-ngx012-00;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT'
)
CTI_ORIN_NANO_NGX012_00_R35_5_ALIAS="cti_orin_nano_ngx012_00_ota_emmc_r35_r36_spec"
CTI_ORIN_NANO_NGX012_00_R36_3_ALIAS="cti_orin_nano_ngx012_00_ota_emmc_r35_r36_spec"
# List the supported t23x devices
	
T23X_DEVICES=(
	'JETSON_AGX_ORIN_DEVKIT'
	'JETSON_AGX_ORIN_DEVKIT_INDUSTRIAL'
	'JETSON_ORIN_NANO_DEVKIT'
	'CTI_ORIN_NANO_NGX012_00'
)

I should mention that I do not encounter any issues generating the OTA payload.

Thanks.

Hi,

Could you provide the step by steps commands for us to review?

Thanks

These are the commands executed thus far.

To generate the system.img on both base and target.

sudo ./tools/kernel_flash/l4t_initrd_flash.sh  --no-flash --external-device nvme0n1p1 \
		  -c tools/kernel_flash/flash_l4t_external.xml -p “-c bootloader/generic/cfg/flash_t234_qspi.xml” \
		  –showlogs --network usb0 cti-orin-nano-ngx012-00 internal

To generate the payload.

./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh --external-device nvme0n1 cti-orin-nano-ngx012-00 R35-5 2>&1 | tee -a /nvme/support-scripts/ota_update/logs/35.5.0-logs

To launch the capsule on target device.

sudo su
mkdir /ota
mv ota_payload_package.tar.gz /ota
tar -xvf ota_tools_R36.3.0_aarch64.tbz2
cd Linux_for_Tegra/tools/ota_tools/version_upgrade
./nv_ota_start.sh /ota/ota_payload_package.tar.gz

Here are the logs as well.

nx-nano ota failure logs.txt (173.7 KB)

Hi David,

Just to provide more details I tried only updating UEFI through a CAPSULE update and was unable to update from 35.5.0 to 36.3.0, However this time I was atleast able to load past the UEFI screen.

Here is the output from nvbootctrl

nvbootctrl dump-slots-info
Current version: 35.5.0
Capsule update status: 2
Current bootloader slot: A
Active bootloader slot: A
num_slots: 2
slot: 0,             status: normal
slot: 1,             status: unbootable

Here the exact steps I’ve followed please let me know if I need to do any changes.

  1. I copied the CTI board configuration file onto the Linux_for_Tegra directory and renamed it ext_target string.
cp cti/orin-nano/hadron/base.conf .
mv base.conf cti-orin-nano-ngx012-00 
  1. I edited the jetson_board_spec.cfg file adjusting the t23x_3767_bl_spec board entry.
t23x_3767_bl_spec=(
    # orin-nx 16GB
    'boardid=3767;fab=000;boardsku=0000;boardrev=;chiprev=;chipsku=00:00:00:D3;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=bl'
    # orin-nx 8GB
    'boardid=3767;fab=000;boardsku=0001;boardrev=;chiprev=;chipsku=00:00:00:D4;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=bl'
    # cti orin nano
    'boardid=3767;fab=300;boardsku=0003;boardrev=;chiprev=;chipsku=00:00:00:D5;board=cti-orin-nano-ngx012-00;rootdev=mmcblk0p1;bup_type=bl;'
    # orin-nano 8GB
    'boardid=3767;fab=000;boardsku=0003;boardrev=;chiprev=;chipsku=00:00:00:D5;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=bl'
    'boardid=3767;fab=000;boardsku=0005;boardrev=;chiprev=;chipsku=00:00:00:D5;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=bl'
    # orin-nano 4GB
    'boardid=3767;fab=000;boardsku=0004;boardrev=;chiprev=;chipsku=00:00:00:D6;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=bl'
)
  1. I ran the following commands
export ToT_BSP=/my/path/to/l4t/Linux_for_Tegra
./generate_capsule/l4t_generate_soc_capsule.sh -i bootloader/payloads_t23x/bl_only_payload -o ./TEGRA_BL.Cap t234
bootloader/payloads_t23x/bl_only_payload -o ./TEGRA_BL.Cap t234 

ll /dev/disk/by-partlabel/esp				# Take note of outputted disk
sudo mount /dev/<outputted-disk> /mnt/	# Use previous output
sudo mkdir -p /mnt/EFI/UpdateCapsule
sudo cp /path/to/TEGRA_BL.Cap /mnt/EFI/UpdateCapsule/

sudo su
cd /sys/firmware/efi/efivars/
printf "\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00" > /tmp/var_tmp.bin
dd if=/tmp/var_tmp.bin of=OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c bs=12
sync
reboot

I then proceed to start the update process but stop due to the same requested shutdown state as previously mentioned, but this time I can get past the UEFI screen.

Any thoughts on this?

I tried doing 35.5.0 → 35.6.0 which successfully updated the rootfs but failed bootloader portion of the OTA. So i believe the issue must revolve around generating the BUP and or capsule.