Missing OTA Board Specs for AGX Orin in Jetpack 5.0.2

Hello,

There do not appear to be OTA board specs for AGX Orin in the OTA tools for Jetpack 5.0.2. This is to say that the file ota_board_specs.conf has not been updated. Presumably these are the same specs that are missing in /etc/nv_boot_control.conf of the L4T package.

Please provide the updated file whenever possible.

As well, the latest board specs in ota_board_specs.conf for AGX Xavier are for R32-7. Is it safe to assume the specs for R35-1 are the same?

Finally, has there been any change to the OTA procedure since Jetpack 4.6.1? Upon inspecting the Image-based OTA Update section of the documentation it does not seem so, but I would appreciate if this could be confirmed.

Thanks.

I believe this may be the same issue, just for your reference: Create ota package failed.

In case it was not clear, this is for image-based OTA updates to the same L4T version, same as this use-case.

This may not be available for Orin until a future L4T version (like, e.g., for Xavier NX), but I am not clear whether that’s the case.

Hello,

Any update on whether image-based OTA updates for Orin will be available in the next Jetpack release, by any chance? Even a simple yes/no would do, if you don’t mind.

Thanks in advance. Much appreciated.

Do you mean you want to rel-35.1 → rel-35.1?

Yes, that would be preferred. The purpose is to customize the rootfs using image-based OTA updates.

If that is not possible for any reason, I will consider updates from R34.1 to R35.1 as part of the OTA.

Hi,

Confirmed both rel-34 → rel-35 and rel-35 → rel-35 image based OTA are not supported.

Only debian package method is working for now.

Thanks for letting me know. Are R35.1 image-based updates at least available for AGX Xavier, as an alternative? It seems not, according to this: Create ota package failed - #10 by carolyuu

If not, I’d like to add this functionality myself, as I require this for my application deployment.

  1. I will get back to you with the exact information I require, but for now, can you provide information about the partition layout for R35.1?
    Was there any change since R32.6.1? (the last one with support for same-release imaged-based OTA updates)

  2. I would also appreciate if you can confirm or provide the following values for the Orin, as I require them for the update:

In nv_ota_check_version.sh
_BOOTDEV_SECTOR_SIZE=65536
_BCT_FILE_SIZE=3701
_MB1_BCT_PARTITION_SIZE= 256 x block_size ?? (A_MB1_BCT in build_l4t_bup.sh)
_MB1_BCT_PARTITION_OFFSET= 3584 x block_size ?? (A_MB1_BCT in build_l4t_bup.sh)
boot_device=/dev/mtdblock0 (since MB1 is on QSPI)
_BCT_BLOCK_SIZE= ??

In nv_ota_update_all_in_recovery.sh
_UBOOT_ENV_SIZE=8192
_UBOOT_ENV_SIZE_TO_BOTTOM_OLD=8192
_UBOOT_ENV_SIZE_TO_BOTTOM_NEW= ??

In general…

  1. boardid = 3701
  2. boardsku = 0000
  3. fuselevel_s = 1
  4. signed_img_dir = images-R35-ToT
  5. board = jetson-agx-orin-devkit
  6. rootdev = mmcblk0p1?
  7. chiprev = <n/a>
  8. boardrev = <n/a>
  9. fab = 000

Thanks

I ultimately determined that the above parameters in nv_ota_check_version.sh and nv_ota_update_all_in_recovery.sh may or may not be correct for the Orin, but they are not needed for my use-case (updating rootfs only).

Assuming the general values are correct, I have all the information required to perform a rootfs-only update for R35-1 with the exception of two points:

  1. where are the flash.idx files generated, and must one be generated for R35-1 to R35-1 update?

  2. have symmetric partitions only been renamed from suffix (e.g. “_b”) to prefix (e.g. “B_”) ? Or were partition names changed?

Please clarify. Thank you.

I was ultimately able to determine the following responses to my previous comment:

  1. the flash.idx files is generated during the partition file signing process, and it is used for the R35-1->R35-1 update. It contains some partition layout info

  2. The partitions were indeed changed. The kernel-bootctrl partition seems to have been dropped since 32.7.1.

The second change makes it difficult to flash without A/B redundancy. I am trying to enable A/B redundancy, but I keep getting a segmentation fault when running this on Orin:

sudo /usr/sbin/nv_update_engine -i rf --payload /ota_work/system.img --rf-updater "/ota_work/nv_ota_rootfs_updater.sh -p /dev/disk/by-partlabel/APP -d /ota_work"

  1. Is there any way to find the sources of nv_update_engine and fix the segfault?
    OR
  2. Is there any equivalent to the kernel-bootctrl partition in the new layout?

Thank you.

Hello,

Is any ETA infomation about Image-Based Over-the-Air Update for Jetson AGX Orin?

This will be in next rel-35.2 release.

Thank you for letting us know. Is the ETA for that release Dec. 2022? Based on this roadmap: Jetson Roadmap | NVIDIA Developer

Hello,

After much experimentation, since then I was able to resolve the abovementioned issues and develop an OTA update procedure for L4T R35.1 using A/B rootfs redundancy.

(Should there be interest from this community, I can share the patch files that shows my changes.)

However, I would like the OTA update to gracefully fail by booting into the same rootfs (rather than the new one) if the new one is faulty. This is a feature of the rootfs redundancy that can be controlled (MAX_ROOTFS_AB_RETRY_COUNT).

However, after the new rootfs is declared unbootable and the update fails, there is no way to mark it as bootable after repairing it (e.g. clean flash). This is something others have noticed for L4T 35.1, e.g. L4T 35.1.0 nvbootctrl mark as bootable

There is no solution for AGX Orin yet. This is the solution for Xavier NX: L4T 35.1.0 nvbootctrl mark as bootable - #12 by JerryChang?

Could someone, e.g. @JerryChang, please provide the solution for AGX Orin?

Thank you

1 Like

hello alok.deshpande,

Xavier and Orin should be able to have same steps.
could you please check below on Orin series to update the RootfsInfo variable?
for example,

# cd /sys/firmware/efi/efivars/
# printf "\x07\x00\x00\x00" > /tmp/var_tmp.bin
# printf "\x3c\xc0\x01\x00" >> /tmp/var_tmp.bin
# chattr -i RootfsInfo-781e084c-a330-417c-b678-38e696380cb9
# dd if=/tmp/var_tmp.bin of=RootfsInfo-781e084c-a330-417c-b678-38e696380cb9; sync
# chattr +i RootfsInfo-781e084c-a330-417c-b678-38e696380cb9
# reboot

Hi @JerryChang. Confirming that the above worked. Thanks very much for your help.

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