I am doing an OTA update on my Jetson and after a lot of difficulty I was able to find the right configuration to run the OTA update for my device Seeed Orin NX 16GB (fab=303, chipsku=D3).
My device is rebooted and has the slot B active. This is the logs before my device rebooted
{"timestamp":"2025-11-25T11:01:53.305923Z","level":"info","message":"Update Module output (stdout): install_partition_with_ab /ota_work/external_device/images-R36-ToT B_kernel-dtb /dev/nvme0n1"}
{"timestamp":"2025-11-25T11:01:53.318242Z","level":"info","message":"Update Module output (stdout): Verifying image /ota_work/external_device/images-R36-ToT/kernel_tegra234-p3768-0000+p3767-0000-nv.dtb with sha1 chksum file /tmp/sha1sum.tmp"}
{"timestamp":"2025-11-25T11:01:53.327059Z","level":"info","message":"Update Module output (stdout): Sha1 checksum for /ota_work/external_device/images-R36-ToT/kernel_tegra234-p3768-0000+p3767-0000-nv.dtb (6cfe16f69f4754043f51b70a17f9bad8a4e3fc67) matches"}
{"timestamp":"2025-11-25T11:01:53.330941Z","level":"info","message":"Update Module output (stdout): install_partition_with_ab_without_layout_change \t\t\t/ota_work/external_device/images-R36-ToT/kernel_tegra234-p3768-0000+p3767-0000-nv.dtb /ota_work/external_device/images-R36-ToT B_kernel-dtb /dev/nvme0n1 /tmp/image.tmp"}
{"timestamp":"2025-11-25T11:01:53.337339Z","level":"info","message":"Update Module output (stdout): Writing /ota_work/external_device/images-R36-ToT/kernel_tegra234-p3768-0000+p3767-0000-nv.dtb into /dev/nvme0n1(offset=302403584)"}
{"timestamp":"2025-11-25T11:01:53.821483Z","level":"info","message":"Update Module output (stdout): Read back 249505 bytes from /dev/nvme0n1:302403584 into /tmp/image.tmp and verify it"}
{"timestamp":"2025-11-25T11:01:54.532704Z","level":"info","message":"Update Module output (stderr): 249505+0 records in"}
{"timestamp":"2025-11-25T11:01:54.532920Z","level":"info","message":"Update Module output (stderr): 249505+0 records out"}
{"timestamp":"2025-11-25T11:01:54.532973Z","level":"info","message":"Update Module output (stderr): 249505 bytes (250 kB, 244 KiB) copied, 0.708937 s, 352 kB/s"}
{"timestamp":"2025-11-25T11:01:54.541056Z","level":"info","message":"Update Module output (stdout): Verifying image /tmp/image.tmp with sha1 chksum file /tmp/sha1sum.tmp"}
{"timestamp":"2025-11-25T11:01:54.550666Z","level":"info","message":"Update Module output (stdout): Sha1 checksum for /tmp/image.tmp (6cfe16f69f4754043f51b70a17f9bad8a4e3fc67) matches"}
{"timestamp":"2025-11-25T11:01:54.554758Z","level":"info","message":"Update Module output (stdout): Updating B_kernel-dtb partition done"}
{"timestamp":"2025-11-25T11:01:54.557346Z","level":"info","message":"Update Module output (stdout): update_l4t_launcher /ota_work /dev/nvme0n1"}
{"timestamp":"2025-11-25T11:01:54.807487Z","level":"info","message":"Update Module output (stdout): Updating L4T Launcher at /tmp/esp_mnt/EFI/BOOT/BOOTAA64.efi"}
{"timestamp":"2025-11-25T11:01:54.819732Z","level":"info","message":"Update Module output (stdout): switch_current_rootfs"}
{"timestamp":"2025-11-25T11:01:54.832163Z","level":"info","message":"Update Module output (stdout): Switch to updated non-current rootfs(B)"}
{"timestamp":"2025-11-25T11:01:54.835503Z","level":"info","message":"Update Module output (stdout): Will switch to boot from rootfs(B) once device is rebooted"}
{"timestamp":"2025-11-25T11:01:54.837721Z","level":"info","message":"Update Module output (stdout): Reset chain status for rootfs(B)"}
{"timestamp":"2025-11-25T11:01:54.842573Z","level":"info","message":"Update Module output (stdout): Clean chain status for rootfs(B) by writing \\x07\\x00\\x00\\x00\\x00\\x00\\x00\\x00 to UEFI variable RootfsStatusSlotB-781e084c-a330-417c-b678-38e696380cb9"}
{"timestamp":"2025-11-25T11:01:54.846535Z","level":"info","message":"Update Module output (stdout): dd if=/tmp/var_tmp.bin of=RootfsStatusSlotB-781e084c-a330-417c-b678-38e696380cb9 bs=8"}
{"timestamp":"2025-11-25T11:01:54.848417Z","level":"info","message":"Update Module output (stderr): 1+0 records in"}
{"timestamp":"2025-11-25T11:01:54.848529Z","level":"info","message":"Update Module output (stderr): 1+0 records out"}
{"timestamp":"2025-11-25T11:01:54.848866Z","level":"info","message":"Update Module output (stderr): 8 bytes copied, 0.0006556 s, 12.2 kB/s"}
{"timestamp":"2025-11-25T11:01:54.900370Z","level":"info","message":"Update Module output (stdout): clean_up_ota_files"}
{"timestamp":"2025-11-25T11:01:54.904996Z","level":"info","message":"Update Module output (stderr): Next boot will load Slot 1"}
{"timestamp":"2025-11-25T11:01:56.058255Z","level":"info","message":"Update Module output (stderr): unlink: cannot unlink '/ota_work'{...}"}
{"timestamp":"2025-11-25T11:01:56.058523Z","level":"info","message":"Update Module output (stderr): : No such file or directory"}
{"timestamp":"2025-11-25T11:01:56.059644Z","level":"error","message":"Process returned non-zero exit status: ArtifactInstall: Process exited with status 1"}
{"timestamp":"2025-11-25T11:01:56.094183Z","level":"info","message":"Update Module output (stderr): ArtifactRollback: The active partition is 0 while the last passive was 1"}
{"timestamp":"2025-11-25T11:01:56.147130Z","level":"info","message":"Calling `reboot` command and waiting for system to restart."}
Connection to jetson-1422425080576-4 closed.
I followed the tutorial on Nvidia Jetson Orin L4T image Update to create the OTA update.
What am I missing here for a successful OTA update.
When I check the installed tools like tailscale and mender are all working as expected. But for both the tools, my device was considered as a new device (I had to accept the new device on Mender UI)
On Mender UI, I see this update as still in progress for this device.
