Hi, I’m working with a orini nx with a custom carrier board. I would like to implement image-based OTA (Over-the-Air) updates for our deployment process.
Specifically, I’m looking for guidance on:
- How to generate an OTA payload using a full system image for custom carrier baord.
- Steps to flash the OTA update on the target Jetson device (with custom board configuration).
- Any tools/scripts applicable for image-based OTA with JetPack 6 or any other current versions.
- Considerations or modifications needed for custom carrier boards.
Thanks in advance for your support!
Hi amaranil1996,
What’s the BASE(the release before update) and TARGET(the release after update) BSP release you want to use for image-based OTA?
Have you performed the OTA update with default board config?(i.e. jetson-orin-nano-devkit
).
If you want to use custom board config for image-based OTA update, there should be customization in ota-tool of the target release.
Please confirm your custom carrier board can boot with both BASE and TARGET release before you do OTA update.
Hi Kevin, Thanks for your quick reply, The base BSP is Jetpack 6.2 and I tried to upgrade to Jetpack 6..2.1 the ota payload generation is successful with jetson-orin-nano-devkit, But when flash it on jetson it got this error so I am trying to find if there is any source for documentation for handling custom carrier boards.
Command: ./nv_ota_start.sh /ota/ota_payload_package.tar.gz
/usr/bin/efibootmgr
/usr/bin/efibootdump
/usr/sbin/nvme
Current rootfs is on /dev/nvme0n1
init_ota_log /ota_log
Create log file at /ota_log/ota_20250714-060504.log
OTA_LOG_FILE=/ota_log/ota_20250714-060504.log
Extract /ota/ota_payload_package.tar.gz
update_nv_boot_control_in_rootfs /ota_work
/ota_work/nv-l4t-bootloader-config.sh: line 555: warning: command substitution: ignored null byte in input
/ota_work/nv-l4t-bootloader-config.sh: line 555: warning: command substitution: ignored null byte in input
/ota_work/nv-l4t-bootloader-config.sh: line 555: warning: command substitution: ignored null byte in input
/ota_work/nv-l4t-bootloader-config.sh: line 555: warning: command substitution: ignored null byte in input
3767-000-0000--1--jetson-orin-nano-devkit-super-
TNSPEC 3767-500-0000--1-1-jetson-orin-nano-devkit-super-
COMPATIBLE_SPEC 3767-000-0000--1--jetson-orin-nano-devkit-super-
TEGRA_BOOT_STORAGE nvme0n1
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0
Info: Write TegraPlatformCompatSpec with 3767-000-0000--1--jetson-orin-nano-devkit-super-.
Info: The esp is already mounted to /boot/efi.
check_prerequisites
decompress_ota_package ota_package.tar /ota_work
decompress_ota_package: start at Mon Jul 14 06:05:51 AM UTC 2025
Sha1 checksum for /ota_work/ota_package.tar (1d1a06769193b75693cade6ead5b101c9951893e) matches
decompress_ota_package: end at Mon Jul 14 06:06:14 AM UTC 2025
nv_ota_update_implement.sh
Command: nv_ota_update_implement.sh
check_target_board /ota_work TARGET_BOARD
The board name in OTA package(jetson-orin-nano-devkit) does not match current board(jetson-orin-nano-devkit-super)
Failed to run "check_target_board /ota_work TARGET_BOARD"
It is L4T release r36.4.3 to r36.4.4.
I think you can simply run the following commands on your board to perfrom debian-based OTA instead of using image-based OTA.
$ sudo apt update
$ apt list --upgradable
$ sudo apt upgrade
$ sudo reboot
It indicates that your board was flashed with jetson-orin-nano-devkit-super
as board config while you are using jetson-orin-nano-devkit
as board config to generate OTA package.
Please use the exact same board config for them. (i.e. use jetson-orin-nano-devkit-super.conf in your case)
Hi Kevin,
I only intend to perform image-based OTA, as I need to switch between specific JetPack versions. In this case, I’m upgrading from L4T R36.4.3 to R36.4.4. Could you please clarify what special steps we need to follow for custom Carrier Boards, Thanks a lot.
Hi amaranil1996,
Please refer to the following patch, which is the one when we added the support for super mode board config.
0001-TEST-ONLY-support-super-mode-for-image-based-OTA.patch (7.2 KB)
You can add your custom board config to the similar lines.
e.g.
Your custom board config called: custom.conf
, then you can find where we added for jetson-orin-nano-devki-super
and you can replace them with custom