OTA fIrmware upgrade from L4T 28.2 to 32.4.2 (changed flash layout)

Hi,

I’m developing a Yocto BSP for Jetson TX2 based on meta-tegra and L4T, and recently have switched from L4T release 28.2 to 32.4.2.
One of requirements in our systems is OTA firmware update on existing installations. While updating the system within the same L4T release everything works, but with updated L4T, the upgrade fails on updating bootware. I noticed that the flash layout on eMMC has changed (including new partitions), in addition to updated U-boot and kernel, which I strongly suspect to break the update. Output of nv_update_engine is quite enigmatic, to say the least.

My question is - is it possible to upgrade the bootware somehow with adapting to new flash layout? Or the only option is to keep old U-boot (and everything lower than that) as in L4T 28.2 and updating stuff from kernel onwards? Or maybe it is possible to not include the newer partitions for the boot stack somehow?

Output from update engine is here:
Tegra User Block Device: /dev/disk/by-partlabel
Tegra Boot Block Device: /dev/mmcblk0boot0
HEADER: MAGIC NVIDIA__BLOB__V2
HEX_VALUE 131072
BLOB_SIZE 10110525
HEADER_SIZE 40
NUMBER_OF_ELEMENTS 41
HEADER_TYPE 0
UNCOMP_SIZE 10110525
MB1_RATCHET_LV 98
MTS_RATCHET_LV 112
ROLLBACK_FUSE_LV 109
Device TN Spec: 3310-B02-fuselevel_production
Device is fused board.
ENTRY_TABLE:
PART POS LEN VER TNSPEC TYPE UPDATABLE
bpmp-fw 4960 533904 2 1 1
sce-fw 538864 125568 2 1 1
cpu-bootloader 664432 285216 2 1 1
mb2 949648 117568 2 0 1
spe-fw 1067216 95984 2 0 1
secure-os 1163200 366400 2 1 1
mb1 1529600 99664 2 2 1
mts-bootpack 1629264 2082144 2 1 1
mts-preboot 3711408 63104 2 0 1
sc7 3774512 23632 2 1 1
bpmp-fw-dtb 3798144 605120 2 3310-B00-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
bpmp-fw-dtb 4403264 605120 2 3310-B02-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
bpmp-fw-dtb 5008384 605120 2 3310-C04-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
bpmp-fw-dtb 5613504 605120 2 3310-D00-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
bpmp-fw-dtb 6218624 605120 2 3310-D01-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
bootloader-dtb 6823744 240512 2 3310-B00-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
bootloader-dtb 7064256 240512 2 3310-B02-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
bootloader-dtb 7304768 240512 2 3310-C04-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
bootloader-dtb 7545280 240512 2 3310-D00-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
bootloader-dtb 7785792 240512 2 3310-D01-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
VER 8026304 102 2 3310-B00-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
VER 8026406 102 2 3310-B02-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
VER 8026508 102 2 3310-C04-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
VER 8026610 101 2 3310-D00-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
VER 8026711 102 2 3310-D01-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
BCT 8026813 3584 2 3310-B00-1000–1-0-jetsontx2orbitty-mmcblk0p1 2 0
BCT 8030397 3584 2 3310-B02-1000–1-0-jetsontx2orbitty-mmcblk0p1 2 0
BCT 8033981 3584 2 3310-C04-1000–1-0-jetsontx2orbitty-mmcblk0p1 2 0
BCT 8037565 3584 2 3310-D00-1000–1-0-jetsontx2orbitty-mmcblk0p1 2 0
BCT 8041149 3584 2 3310-D01-1000–1-0-jetsontx2orbitty-mmcblk0p1 2 0
MB1_BCT 8044733 50096 2 3310-B00-1000–1-0-jetsontx2orbitty-mmcblk0p1 0 0
MB1_BCT 8094829 50096 2 3310-B02-1000–1-0-jetsontx2orbitty-mmcblk0p1 0 0
MB1_BCT 8144925 50096 2 3310-C04-1000–1-0-jetsontx2orbitty-mmcblk0p1 0 0
MB1_BCT 8195021 50096 2 3310-D00-1000–1-0-jetsontx2orbitty-mmcblk0p1 0 0
MB1_BCT 8245117 50096 2 3310-D01-1000–1-0-jetsontx2orbitty-mmcblk0p1 0 0
kernel 8295213 612752 2 1 1
kernel-dtb 8907965 240512 2 3310-B00-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
kernel-dtb 9148477 240512 2 3310-B02-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
kernel-dtb 9388989 240512 2 3310-C04-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
kernel-dtb 9629501 240512 2 3310-D00-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
kernel-dtb 9870013 240512 2 3310-D01-1000–1-0-jetsontx2orbitty-mmcblk0p1 1 0
Writing 533904 bytes to /dev/disk/by-partlabel/bpmp-fw_b for bpmp-fw
Writing 125568 bytes to /dev/disk/by-partlabel/sce-fw_b for sce-fw
Writing 285216 bytes to /dev/disk/by-partlabel/cpu-bootloader_b for cpu-bootloader
mb2 write: slot = 1 offset = 1212416 bytes = 117568
spe-fw write: slot = 1 offset = 819200 bytes = 95984
Writing 366400 bytes to /dev/disk/by-partlabel/secure-os_b for secure-os
Writing 2082144 bytes to /dev/disk/by-partlabel/mts-bootpack_b for mts-bootpack
mts-preboot write: slot = 1 offset = 1736704 bytes = 63104
Writing 23632 bytes to /dev/disk/by-partlabel/sc7_b for sc7
Writing 612752 bytes to /dev/disk/by-partlabel/kernel_b for kernel
mb1 write: slot = 0 offset = 32768 bytes = 99664
GetEntryTable failed
Fail to write Dependence partitions
Writing to partitions failed.
OTA Blob update failed. Status: 3
Nvidia A/B-Redundancy Update tool Version 1.1
current slot 0
Start updating slot 1
Slot 1 update failed
<3> Switching activity failed!

Kind regards,
Lech

Hi,

Unfortunately, there is no solution to do OTA upgrade from rel-28 to rel-32 currently. We are still planning to add this feature to future release. But the ETA is still unknown.