OTA update for Orin NX

I am following the mender tutorial to create the OTA pacakge. Nvidia Jetson Orin L4T image Update - Board Integrations - Mender Hub

sudo ROOTFS_AB=1 ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh --external-device nvme0n1 -S 27GiB -sr -f ./rootfs_V1.1.tar.gz -o ./tools/ota_tools/version_upgrade/rootfs_updater.sh jetson-orin-nano-devkit R36-4

This is the command I tried. But I get the following error.

/home/vini/jetson/Linux_for_Tegra/bootloader/L4TConfiguration.dtbo: Warning (unit_address_vs_reg): Node /fragment@0 has a unit name, but no reg property
./tegraflash.py  --bl uefi_jetson_minimal_with_dtb.bin  --odmdata gbe-uphy-config-8,hsstp-lane-map-3,hsio-uphy-config-0  --overlay_dtb L4TConfiguration.dtbo,tegra234-carveouts.dtbo,tegra-optee.dtbo,tegra234-p3768-0000+p3767-0000-dynamic.dtbo,  --bldtb tegra234-p3768-0000+p3767-0000-nv.dtb --applet mb1_t234_prod.bin --cmd "sign"  --cfg flash.xml --chip "0x23" --concat_cpubl_bldtb --cpubl uefi_jetson.bin --cpubl_rcm uefi_jetson_minimal.bin --minratchet_config tegra234-mb1-bct-ratchet-p3767-0000.dts --device_config tegra234-mb1-bct-device-p3767-0000.dts --misc_config tegra234-mb1-bct-misc-p3767-0000.dts --pinmux_config tegra234-mb1-bct-pinmux-p3767-dp-a03.dtsi --gpioint_config tegra234-mb1-bct-gpioint-p3767-0000.dts --pmic_config tegra234-mb1-bct-pmic-p3767-0000-a02.dts --pmc_config tegra234-mb1-bct-padvoltage-p3767-dp-a03.dtsi --deviceprod_config tegra234-mb1-bct-cprod-p3767-0000.dts --prod_config tegra234-mb1-bct-prod-p3767-0000.dts --scr_config tegra234-mb2-bct-scr-p3767-0000.dts --wb0sdram_config tegra234-p3767-0000-wb0sdram-l4t.dts --br_cmd_config tegra234-mb1-bct-reset-p3767-0000.dts --uphy tegra234-mb1-bct-uphylane-si.dtsi --dev_params tegra234-br-bct-p3767-0000-l4t.dts,tegra234-br-bct_b-p3767-0000-l4t.dts --mb2bct_cfg tegra234-mb2-bct-misc-p3767-0000.dts  --bins "psc_fw pscfw_t234_prod.bin; mts_mce mce_flash_o10_cr_prod.bin; tsec_fw tsec_t234.bin; mb2_applet applet_t234.bin; mb2_bootloader mb2_t234.bin; xusb_fw xusb_t234_prod.bin; pva_fw nvpva_020.fw; dce_fw display-t234-dce.bin; nvdec nvdec_t234_prod.fw; bpmp_fw bpmp_t234-TE980M-A1_prod.bin; bpmp_fw_dtb tegra234-bpmp-3767-0000-a02-3509-a02.dtb; rce_fw camera-rtcpu-t234-rce.img; ape_fw adsp-fw.bin; spe_fw spe_t234.bin; tos tos-optee_t234.img; eks eks_t234.img"  --sdram_config tegra234-p3767-0000-sdram-l4t.dts  --bct_backup  --boot_chain A 
saving flash command in /home/vini/jetson/Linux_for_Tegra/bootloader/flashcmd.txt
saving Windows flash command to /home/vini/jetson/Linux_for_Tegra/bootloader/flash_win.bat
*** 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=  /home/vini/jetson/Linux_for_Tegra/l4t_generate_soc_bup.sh -f /tmp/board_spec_file -e tmp_board_spec -b jetson-orin-nano-devkit t23x

What am I missing here?

1 Like

Hello @vini,

Can you try adding ROOTFS_ENC=0 environment variable to your command right after the ROOTFS_AB=1?

best regards,
Andrew
Embedded Software Engineer at ProventusNova

hello vini,

please also check L4T page, such as.. jetson-linux-r3644 to download the [OTA Tools] pacakge.

is this Jetson Orin NX developer kit? or, you’re having board customization?
you may see-also readme file for instructions,
$OUT/Linux_for_Tegra/tools/ota_tools/version_upgrade/Image_based_OTA_Examples.txt

Hi @JerryChang
I have downloaded the OTA tools r36.4.3 as this is the version i m installing. This is already unpacked under tools.

This is the Jetson Orin NX 16GB reComputer industrial J4012(Orin NX 16G) - Seeed Studio

I have checked the instructions on examples, and I think I am using the right config for the device I have.

I also ran the ./flash.sh command before the ota_package_generate based on LLM suggestion.

My rootfs has tools that I have installed via chroot, in case this information is relevant.

Hi @proventusnova
This did not work unfortunately. I have the same error.

hello vini,

may I know what’s the command-line to flash your target, i.e. reComputer industrial J4012(Orin NX 16G) - Seeed Studio, it should not using the board configuration file, jetson-orin-nano-devkit, right?

it should related to create OTA payload for customize board, you may see-also similar forum topic, such as Topic 332980 for the steps to update l4t_generate_ota_package.sh and ota_board_specs.conf for customize board to create OTA payloads.

These are the commands I used to flash the device initially

sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh \
  --network usb0 \
  --no-flash \
  --showlogs \
  -p "-c bootloader/generic/cfg/flash_t234_qspi.xml" \
  jetson-orin-nano-devkit internal
# Step 2: External NVMe (non-encrypted)
sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh \
  --showlogs \
  --no-flash \
  --external-device nvme0n1p1 \
  -c ./tools/kernel_flash/flash_l4t_t234_nvme_rootfs_ab.xml \
  --external-only \
  --append \
  --network usb0 \
  jetson-orin-nano-devkit external
sudo ./tools/kernel_flash/l4t_initrd_flash.sh \
  --showlogs \
  --network usb0 \
  --flash-only \
  jetson-orin-nano-devkit

Somehwere in nvidia docs i found that for jetson orin nx, i should use jetson-orin-nano-devkit. There is no config file like jetson-orin-nx-* that I could find.

If I use the customize-board config now, i should also reflash the device with the customize-oard config right?

EDIT

Adding some info

Board ID(3767) version(303) sku(0000) revision(B.1)
Preset RAMCODE is 1
Chip SKU(00:00:00:D3) ramcode(1) fuselevel(fuselevel_production) board_FAB(303)
cat rootfs/etc/nv_boot_control.conf
TNSPEC 3767-303-0000-B.1-1-1-jetson-orin-nano-devkit-
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0

@vini,

Yes, it seems like using the jetson-orin-nano-devkit config is correct according to the Official NVIDIA r36.4.4 DeveloperGuide.

I am wondering what would happen if you try running this command directly:

ROOTFS_AB=1 ROOTFS_ENC=  /home/vini/jetson/Linux_for_Tegra/l4t_generate_soc_bup.sh -f /tmp/board_spec_file -e tmp_board_spec -b jetson-orin-nano-devkit t23x

Which is the one that is failing.
The idea would be to see if we could get any more logs or information out if.

best regards,
Andrew
Embedded Software Engineer at ProventusNova

1 Like

hello vini,

you may see-also ota_board_specs.conf, there’s no such board spec for creating OTA payload,
you’ll need to update the file for adding your customize board info.

Hi @JerryChang
i updated the ota_board_specs fab:303

It still failed with the same error.

Hey Andrew

i still have the same error. i updated the conf file as per JerryChang’s suggestion as wel.

hello vini,

not only FAB property, but also CHIPSKU need to be the same within ota_board_specs.


anyways, according to your board info.. Board ID(3767) version(303) sku(0000) revision(B.1)
you may give it a try for updating board_spec as below..

jetson_orin_nano_devkit_ota_emmc_r35_r36_spec=(
        'boardid=3767;fab=303;boardsku=0000;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:B1;board=jetson-orin-nano-devkit;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT'
)

Hi @JerryChang

I tried with your board spec and i still have the same error.

cmd_config tegra234-mb1-bct-reset-p3767-0000.dts --uphy tegra234-mb1-bct-uphylane-si.dtsi --dev_params tegra234-br-bct-p3767-0000-l4t.dts,tegra234-br-bct_b-p3767-0000-l4t.dts --mb2bct_cfg tegra234-mb2-bct-misc-p3767-0000.dts  --bins "psc_fw pscfw_t234_prod.bin; mts_mce mce_flash_o10_cr_prod.bin; tsec_fw tsec_t234.bin; mb2_applet applet_t234.bin; mb2_bootloader mb2_t234.bin; xusb_fw xusb_t234_prod.bin; pva_fw nvpva_020.fw; dce_fw display-t234-dce.bin; nvdec nvdec_t234_prod.fw; bpmp_fw_dtb tegra234-bpmp-3767-0000-a02-3509-a02.dtb; rce_fw camera-rtcpu-t234-rce.img; ape_fw adsp-fw.bin; spe_fw spe_t234.bin; tos tos-optee_t234.img; eks eks_t234.img"  --sdram_config tegra234-p3767-0000-sdram-l4t.dts  --bct_backup  --boot_chain A 
saving flash command in /home/vini/jetson/Linux_for_Tegra/bootloader/flashcmd.txt
saving Windows flash command to /home/vini/jetson/Linux_for_Tegra/bootloader/flash_win.bat
*** Sign and generate BUP... *** 
t23x payload generation complete with 6 failure(s)

SUCCESS: cleaned up BUP tmp files prior to payload creation
FAILURE: no payload made for config "boardid=3767;fab=303;boardsku=0000;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:B1;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=303;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=  /home/vini/jetson/Linux_for_Tegra/l4t_generate_soc_bup.sh -f /tmp/board_spec_file -e tmp_board_spec -b jetson-orin-nano-devkit t23x

i have added the complete log in case it helps in debugging. Thanks again.

ota.log (652.4 KB)

hello vini,

may I know what’s your jetson_orin_nano_devkit_ota_emmc_r35_r36_spec=(...) contents?
could you please share the revised ota_board_specs.conf for reference.

here is the part

jetson_orin_nano_devkit_ota_emmc_r35_r36_spec=(
        # External device
        # orin-nx 16GB
        'boardid=3767;fab=303;boardsku=0000;boardrev=;fuselevel_s=1;chiprev=;chipsku=00:00:00:B1;board=jetson-orin-nano-devkit;rootdev=nvme0n1p1;bup_type=bl;signed_img_dir=images-R36-ToT'
        'boardid=3767;fab=303;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'
        # orin-nx 8GB
        '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'
        # orin-nano 8GB
        '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'
        # orin-nano devkit 8GB
        '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'
        # orin-nano 4GB
        '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'
)

Just as info I also copied

sudo mv jetson-orin-nano-devkit.conf jetson-orin-nano-devkit.conf.sd_backup
sudo cp jetson-orin-nano-devkit-nvme.conf jetson-orin-nano-devkit.conf

Since in the beginning I was getting some error related to sd card.
But also with the changed conf file it gives me the same error.

hello vini,

am I understand correctly you’re having SD card as root device?
if yes.. the rootfs partition should be mmcblk0, the property settings is rootdev=internal of your board spec.

im flashing it to the ssd nvme on the jetson. I do not have an external SD card. Im not quite sure if i should still use the rootdev internal for the ssd?

root@jetson-1422425080576:~# lsblk -P -n -o PARTLABEL,UUID /dev/nvme0n1
PARTLABEL="" UUID=""
PARTLABEL="APP" UUID="1a4af939-b1c9-46a8-912b-cd27da165499"
PARTLABEL="APP_b" UUID="837d6604-c9e2-42cb-92b6-0d64d2079b80"
PARTLABEL="A_kernel" UUID=""
PARTLABEL="A_kernel-dtb" UUID=""
PARTLABEL="A_reserved_on_user" UUID=""
PARTLABEL="B_kernel" UUID=""
PARTLABEL="B_kernel-dtb" UUID=""
PARTLABEL="B_reserved_on_user" UUID=""
PARTLABEL="recovery" UUID=""
PARTLABEL="recovery-dtb" UUID=""
PARTLABEL="esp" UUID="EC37-95C1"
PARTLABEL="recovery_alt" UUID=""
PARTLABEL="recovery-dtb_alt" UUID=""
PARTLABEL="esp_alt" UUID=""
PARTLABEL="reserved" UUID=""
PARTLABEL="UDA" UUID="ddb4a646-f516-43c7-be30-177a97c2008c"
root@jetson-1422425080576:~# 

hello vini,

let’s give it a try to keep single board spec.

jetson_orin_nano_devkit_ota_emmc_r35_r36_spec=(
       'boardid=3767;fab=303;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'
)

besides..
please also revise mb2-bct since you’re having customize board, see-also EEPROM Modifications.
please modifying the following line,
$OUT/Linux_for_Tegra/bootloader/generic/BCT/tegra234-mb2-bct-misc-p3767-0000.dts

 mb2-misc {
  eeprom {
   ...
   cvm_eeprom_read_size = <0x100>;
-  cvb_eeprom_read_size = <0x100>;
+  cvb_eeprom_read_size = <0x0>;
  };

BTW,
you may try to dump the BUP content for checking.
$ ./bootloader/BUP_generator.py -c bootloader/payloads_t23x/bl_only_payload

Thanks a lot, the ota part worked.