Jetson AGX Orin devkit OTA image-based failed on mount

Following the OTA image-based instructions here, the final reboot failed after Jetson goes to recovery kernel.
Host machine: Ubuntu 18.04.6
Target: Jetson AGX Orin devkit

  • The ota_tools_R35.4.1_aarch64.tbz2 was downloaded and installed in host
  • The OTA update payload package was generated via sudo -E ROOTFS_AB=1 ./tools/ota_tools/version_upgrade/ jetson-agx-orin-devkit R35-4 command
  • The ota_payload_package.tar.gz was copied to Jetson /ota directory
  • The Jetson devkit /boot/extlinux/extlinux.conf has both INITRD /boot/initrd and root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 statements
  • The ota_tools_R35.4.1_aarch64.tbz2 was installed in Jetson devkit
  • After successfully running sudo ./ /ota/ota_payload_package.tar.gz command from ${WORKDIR}/Linux_for_Tegra/tools/ota_tools/version_upgrade directory in Jetson, got this message:
    Bootloader on non-current slot(B) is to be updated once device is rebooted
  • Rebooted Jetson and captured console logs.
  • Here are the last messages on console after which Jetson becomes unresponsive:
    [ 12.080206] Run /init as init process
    [ 12.096371] Root device found: PARTUUID=72d5c073-8e83-459a-8e43-1442a0c409d3
    [ 29.139596] ERROR: PARTUUID=72d5c073-8e83-459a-8e43-1442a0c409d3 mount fail…
    [ 42.454360] vdd-12v-sys: disabling
    [ 42.458109] vdd-1v8-sys: disabling
    [ 42.461852] vdd-3v3-ftdi: disabling

The console log after running script and rebooting Jetson is attached.
Console_log_after_nv_ota_start_reboot.log (211.7 KB)

Hi reftekhari,

Are you trying to perform OTA update for AGX Orin devkit from R35.4.1 to R35.4.1?

Do you connect any external device? Or you are just using internal eMMC?

[   12.096371] Root device found: PARTUUID=72d5c073-8e83-459a-8e43-1442a0c409d3
[   29.139596] ERROR: PARTUUID=72d5c073-8e83-459a-8e43-1442a0c409d3 mount fail...

It seems the rootfs mounted failed on your board.

Please also share the log when you generate OTA package on you host PC.

Hi KevinFFF,
Yes, I’m trying to perform OTA update on Jetson AGX Orin devkit from R35.4.1 to R35.4.1.
No I don’t have any external device connected to devkit.
Here is the command I used to generate OTA package on my host machine and capturing the logs:
~/nvidia/nvidia_sdk/JetPack_5.1.2_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra$ sudo -E ROOTFS_AB=1 bash -x ./tools/ota_tools/version_upgrade/ jetson-agx-orin-devkit R35-4 2>&1 | tee generate_ota_2.log
I enabled bash -x from command line to capture the executed commands in the log file.
Here is the log file for generating OTA package:
generate_ota_2.log (885.6 KB)

Do you have any customization for rootfs or update process on the devkit?

In addition, do you enable rootfs A/B before you perform image-based OTA update?
Please share the result of the following command on your board before update.

$ sudo nvbootctrl -t rootfs dump-slots-info

Hi KevinFFF,
There is no customization for rootfs nor for update process.
I did not enabled rootfs A/B before performing image-based OTA update.
What is the procedure to enable rootfs A/B?
Right now the devkit is stuck on mounting rootfs and I do not have a log in console, hence can not run any command.
Should I reflash the devkit via sdkmanager?

So, that’s the cause about you could not boot up after OTA update since you use an OTA package with rootfs A/B enabled for a board with rootfs A/B disabled.
What we support is using OTA package with rootfs A/B enabled for a board with rootfs A/B enabled because the partition layout is different for rootfs A/B enabled/disabled.

Please run the following command to flash you board to enable rootfs A/B.

$ sudo ROOTFS_AB=1 ./ jetson-agx-orin-devkit mmcblk0p1

Hi KevinFFF,
After flashing Jetson devkit with ROOTFS_AB=1 and going through OTA image-base upgrade procedure, I was able to successfully upgrade the Jetson image, and switch between slots.

Thank you for your support.

Just have a follow up question. There is a mechanism in place for cases when the partition layout has been changed between different SDKs (for example from R32.7 to R35) to support OTA image-based upgrade.
Is there a way to enable ROOTFS_AB during OTA upgrade on Jetson AGX Orin module without flashing it at least once before trying OTA upgrade?

Thank you.

Sorry, this use case is not supported because the OTA payload and update tool is in rootfs(APP) partition so that the offset and size of APP can’t be changed even in OTA update with partition layout change.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.