OTA Payload Package generation Failed

Hello,
I am trying to generate OTA payload package. my Orin NX 16GB is flashed with Jetson linux 36.4.0, Now I want to upgrade it to 36.4.3 through OTA.

I am using a custom carrier board: p3509-a02-p3767-0000.
The script for OTA payload generation l4t_generate_ota_package.shdoesn’t recognize this custom board configuration, so I modified jetson-orin-nano-devkitso that it works with my custom board.

I have followed the steps as given by nvidia OTA update documents as below:

1. export BASE_BSP=/mnt/JetsonLinux/JTinux_36.4.0/Linux_for_Tegra
2. tar xpf jetson_linux_36.4.3_aarch64.tbz2
   cd Linux_for_Tegra/rootfs/
   sudo tar xpf ../../tegra_Linux_sample-root-filesystem_36.4.3_aarch64.tbz2
   cd ..
   sudo ./apply_binaries.sh
3. export TARGET_BSP=/home/username/R36.4.0/Linux_for_Tegra
4. cd ${TARGET_BSP}/../
   sudo tar xpf ota_tools_36.4.3_aarch64.tbz2
5. cd ${TARGET_BSP}

sudo -E ROOTFS_AB=1 ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh --external-device nvme0n1 jetson-orin-nano-devkit R36-4

However, process leads to failure.

*** Sign and generate BUP... *** 
t23x payload generation complete with 5 failure(s)

SUCCESS: cleaned up BUP tmp files prior to payload creation
FAILURE: no payload made for config "boardid=3767;fab=000;boardsku=0000;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:D3;board=jetson-orin-nano-devkit;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT"
FAILURE: no payload made for config "boardid=3767;fab=000;boardsku=0001;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:D4;board=jetson-orin-nano-devkit;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT"
FAILURE: no payload made for config "boardid=3767;fab=000;boardsku=0003;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:D5;board=jetson-orin-nano-devkit;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT"
FAILURE: no payload made for config "boardid=3767;fab=000;boardsku=0005;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:D5;board=jetson-orin-nano-devkit;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT"
FAILURE: no payload made for config "boardid=3767;fab=000;boardsku=0004;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:D6;board=jetson-orin-nano-devkit;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT"
SUCCESS: cleaned up BUP tmp files after payload creation
Failed to run ROOTFS_AB=1 ROOTFS_ENC=  /mnt/JetsonLinux/JetsonMVP-AB-OTA/JTinux_36.4.3/Linux_for_Tegra/l4t_generate_soc_bup.sh -f /tmp/board_spec_file -e tmp_board_spec -b jetson-orin-nano-devkit t23x

Here is the full log file.
ota_AB_failure.log (620.9 KB)

Please help me with proper ways if I am missing something.

Thanks :)

Hi tanzelur,

Have you tried just running sudo apt upgrade to update from r36.4.0 to r36.4.3 since it is Updating to a New Point Release.

It seems you are trying to generate OTA update payload.
Do you enable rootfs A/B in your board currently with R36.4.0?

Please share the result of the following command on your board.

$ sudo cat /etc/nv_boot_control.conf
$ sudo cat /etc/nv_tegra_release

Hi KevinFFF,

No, actually I want to test OTA update, so that it helps updating later on to our other devices as well.

Yes, I am trying to generate OTA update payload, but unfortunately its not working.
Device with the R36.4.0 is rootfs A/B enabled. here is the command I used to flash with rootfs A/B and rootfs slots info.

sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -p "-c ./bootloader/generic/cfg/flash_t234_qspi.xml" -c ./tools/kernel_flash/flash_l4t_t234_nvme_rootfs_ab.xml --showlogs --network usb0 jetson-orin-nano-devkit internal
Current rootfs slot: A
Active rootfs slot: A
num_slots: 2
slot: 0,             retry_count: 3,             status: normal
slot: 1,             retry_count: 3,             status: normal

here are the outputs:

TNSPEC 3767-300-0000-M.1-1-1-jetson-orin-nano-devkit-
COMPATIBLE_SPEC 3767-000-0000--1--jetson-orin-nano-devkit-
TEGRA_BOOT_STORAGE nvme0n1
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0

and

# R36 (release), REVISION: 4.0, GCID: 37537400, BOARD: generic, EABI: aarch64, DATE: Fri Sep 13 04:36:44 UTC 2024
# KERNEL_VARIANT: oot
TARGET_USERSPACE_LIB_DIR=nvidia
TARGET_USERSPACE_LIB_DIR_PATH=usr/lib/aarch64-linux-gnu/nvidia

The error I am getting is stated in the original question, log file as well.
I need help solving this issue. please assist me.

Thanks

Solution

I’ve tried to run this command on my host and it seems working to generate OTA payload successfully.

Why you said you are using p3509-a02-p3767-0000 as board config?

But you are using jetson-orin-nano-devkit as board config during flash?

Hi KevinFFF,
with the provided script to generate OTA payload, it doesn’t recognize any custom carrier board.
That is why, I have changed the configuration file of Jetson-orin-nano-devkit, so that it works with my board. which is p3509-a02-p3767-0000, as I mentioned.

The change has been tested for the flashing device and that works.

So, the question is why it’s failed to find the configuration during OTA payload generation.

We would suggest you using jetson-orin-nano-devkit as board config for both flashing and OTA update.

I’ve verified that command works on my host to generate the OTA payload.
Could you run that command in the BSP package downloaded from SDK manager instead?

Hi
Is python3 installed ?

Hi,
Thanks for your reply.
Yeah, Python3 has to be linked with python, I did that. The OTA scripts were not working on my Host PC for other reason, maybe because the scripts were running other than from /home/… dir, but I managed to do it from my other PC. Now its working fine.