Xavier image-based update from 32.6.1 to 32.7.2 successfully,then to 35.1failed

Hi,
I want to update xavier from 32.6.1 to 35.1. First, I update xavier form 32.6.1 to 32.7.2, and the update process is successful. I cat the /etc/nv_tegra_release, the following is the result.

# R32 (release), REVISION: 7.2, GCID: 30192233, BOARD: t186ref, EABI: aarch64, DATE: Sun Apr 17 09:53:50 UTC 2022

Then, I continue to update xavier from 32.7.2 to 35.1 and a error is reported as following.

Last OTA (to 320702) is not finished, please complete it first

The whole log is as following.
$ sudo ./nv_ota_start.sh /dev/mmcblk0 /ota/ota_payload_package.tar.gz
Command: ./nv_ota_start.sh /dev/mmcblk0 /ota/ota_payload_package.tar.gz
init_ota_log /ota_log
Create log file at /ota_log/ota_20221013-172029.log
OTA_LOG_FILE=/ota_log/ota_20221013-172029.log
Extract /ota/ota_payload_package.tar.gz
update_nv_boot_control_in_rootfs /ota_work
2888-400-0004–1-2-jetson-agx-xavier-devkit-
check_prerequisites
get_chip_id chip_id
decompress_ota_package ota_package.tar /ota_work
decompress_ota_package: start at 2022年 10月 13日 星期四 17:21:49 CST
Sha1 checksum for /ota_work/ota_package.tar (47a3a48b360bc0b8f62ced1789c1e96b13603a04) matches
decompress_ota_package: end at 2022年 10月 13日 星期四 17:23:11 CST
nv_ota_update_with_layout_change.sh /dev/mmcblk0
Command: nv_ota_update_with_layout_change.sh /dev/mmcblk0
check_bsp_version /ota_work /dev/mmcblk0 BASE_VERSION
check_target_board /ota_work TARGET_BOARD
set_msi_emmc_min_size jetson-agx-xavier-devkit MSI_EMMC_MIN_SIZE
ota_check_rollback /ota_work jetson-agx-xavier-devkit R32-7
OTA_PACKAGE version: branch:35 revision:1.0 major.minor:1.0
16384+0 records in
16384+0 records out
8388608 bytes (8.4 MB, 8.0 MiB) copied, 2.2344 s, 3.8 MB/s
boot_device_size=8388608
VER_b’s offset is 2203648 and size is 65536
VER’s offset is 2269184 and size is 65536
VER_b version: branch:32 revision:7.2 major.minor:7.2
VER version: branch:32 revision:6.1 major.minor:6.1
Last OTA (to 320702) is not finished, please complete it first
ver_check_res=1
Failed to run “ota_check_rollback /ota_work jetson-agx-xavier-devkit R32-7”

Could you continue updating on previous topic: Xavier ota from 3.7.2 to 5.0.2, log display update successfully,but can’t start right - Jetson & Embedded Systems / Jetson AGX Xavier - NVIDIA Developer Forums?

Hi,
This is a new question.
The previous topic is first we burn xavier 3.7.2 with flash.sh, and second we use image-based ota to update the xavier to 5.0.2 and if we use the right dtb, there is no problem in the reboot after the successful update.
The current topic is first we use image-based ota to update the xavier from 32.6.1 to 32.7.2, and second we we use image-based ota to update the xavier to 35.1 with the right dtb, and the error is appeared.

Thanks

Is this on custom board or devkit?

Hi,
This is on the custom board.

Could you share the full error log?

Also, did you soft reboot your device after you upgrade from 32.6.1 to 32.7.2?

Hi,
The full log is as following.
$ sudo ./nv_ota_start.sh /dev/mmcblk0 /ota/ota_payload_package.tar.gz
Command: ./nv_ota_start.sh /dev/mmcblk0 /ota/ota_payload_package.tar.gz
init_ota_log /ota_log
Create log file at /ota_log/ota_20221013-172029.log
OTA_LOG_FILE=/ota_log/ota_20221013-172029.log
Extract /ota/ota_payload_package.tar.gz
update_nv_boot_control_in_rootfs /ota_work
2888-400-0004–1-2-jetson-agx-xavier-devkit-
check_prerequisites
get_chip_id chip_id
decompress_ota_package ota_package.tar /ota_work
decompress_ota_package: start at 2022年 10月 13日 星期四 17:21:49 CST
Sha1 checksum for /ota_work/ota_package.tar (47a3a48b360bc0b8f62ced1789c1e96b13603a04) matches
decompress_ota_package: end at 2022年 10月 13日 星期四 17:23:11 CST
nv_ota_update_with_layout_change.sh /dev/mmcblk0
Command: nv_ota_update_with_layout_change.sh /dev/mmcblk0
check_bsp_version /ota_work /dev/mmcblk0 BASE_VERSION
check_target_board /ota_work TARGET_BOARD
set_msi_emmc_min_size jetson-agx-xavier-devkit MSI_EMMC_MIN_SIZE
ota_check_rollback /ota_work jetson-agx-xavier-devkit R32-7
OTA_PACKAGE version: branch:35 revision:1.0 major.minor:1.0
16384+0 records in
16384+0 records out
8388608 bytes (8.4 MB, 8.0 MiB) copied, 2.2344 s, 3.8 MB/s
boot_device_size=8388608
VER_b’s offset is 2203648 and size is 65536
VER’s offset is 2269184 and size is 65536
VER_b version: branch:32 revision:7.2 major.minor:7.2
VER version: branch:32 revision:6.1 major.minor:6.1
Last OTA (to 320702) is not finished, please complete it first
ver_check_res=1
Failed to run “ota_check_rollback /ota_work jetson-agx-xavier-devkit R32-7”

Hi tianyi2,

Are you sure the previous update has been done correctly?

According to your log, VER partition is still the rel-32.6.1 version.

VER_b’s offset is 2203648 and size is 65536
VER’s offset is 2269184 and size is 65536
VER_b version: branch:32 revision:7.2 major.minor:7.2
VER version: branch:32 revision:6.1 major.minor:6.1
Last OTA (to 320702) is not finished, please complete it first
ver_check_res=1

Hi
I cat the /etc/nv_tegra_release, the following is the result.

# R32 (release), REVISION: 7.2, GCID: 30192233, BOARD: t186ref, EABI: aarch64, DATE: Sun Apr 17 09:53:50 UTC 2022

No, since some partition are still old one. I think you should conduct the steps again to upgrade from rel-32.6.1 to rel-32.7.2.

Hi,
I’m trying the steps again and also I soft reboot the device after upgrade to 32.7.2.
The same error is appeared.
My step is as following.
Host to update to 32.7.2:
1.sudo ./tools/ota_tools/version_upgrade/build_base_recovery_image.sh jetson-agx-xavier-devkit R32-6 ${BASE_BSP} ${BASE_BSP}/rootfs ${TARGET_BSP}
2.sudo ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh jetson-agx-xavier-devkit R32-6
The ota_payload_package.tar.gz is generated.
xavier module to update to 32.7.2:
1.sudo mkdir /ota
2.sudo mount /dev/nvme0n1 /ota
3.upload ota_payload_package.tar.gz to /ota
4.upload patched ota_tools_R32.7.2_aarch64.tbz2 to /home/$user下
5.cd /home/$user; sudo tar xvf ota_tools_R32.7.2_aarch64.tbz2
6.cd /home/$user/Linux_for_Tegra/tools/ota_tools/version_upgrade
7.sudo ./nv_ota_start.sh /dev/mmcblk0 /ota/ota_payload_package.tar.gz
Then reboot.

Then update to 35.1
Host to update to 35.1
1.sudo ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh jetson-agx-xavier-devkit R32-7
The ota_payload_package.tar.gz is generated.

xavier module to update to 35.1
1.sudo mkdir /ota
2.sudo mount /dev/nvme0n1 /ota
3.upload ota_payload_package.tar.gz to /ota
4.upload ota_tools_R35.1.0_aarch64.tbz2 to /home/$user下
5.cd /home/$user; sudo tar xvf ota_tools_R35.1.0_aarch64.tbz2
6.cd /home/$user/Linux_for_Tegra/tools/ota_tools/version_upgrade
7.sudo ./nv_ota_start.sh /dev/mmcblk0 /ota/ota_payload_package.tar.gz
Then, the error is appeared.

Hi tianyi2,

Please check below workaround:

  1. Generate a OTA package that updates bootloader only from R32.6.1 to R32.7.2 with -b option
    $ sudo ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh -b jetson-agx-xavier-devkit R32-6
  2. Apply it on the failed system to update bootloader chain A.
  3. Edit /etc/nv_tegra_release to r32.6.1 before run nv_ota_start.sh
  4. Reboot device and make sure it is booting from chain A after OTA is finished.
  5. Edit /etc/nv_tegra_release back to r32.7.2
  6. Continue OTA from R32.7.2 to R35.1

Hi,
I try the step and the version problem is solved, but another error is appeard.
both_slots_valid
Slot 0 is not marked successful, device is not ready for OTA. Please do RCM flash to recover it
Failed to run “both_slots_valid”
The full log is as following.
$sudo ./nv_ota_start.sh /dev/mmcblk0 /ota/ota_payload_package.tar.gz
Command: ./nv_ota_start.sh /dev/mmcblk0 /ota/ota_payload_package.tar.gz
init_ota_log /ota_log
Create log file at /ota_log/ota_20221022-105401.log
OTA_LOG_FILE=/ota_log/ota_20221022-105401.log
Extract /ota/ota_payload_package.tar.gz
update_nv_boot_control_in_rootfs /ota_work
2888-400-0004–1-2-jetson-agx-xavier-devkit-
check_prerequisites
get_chip_id chip_id
decompress_ota_package ota_package.tar /ota_work
decompress_ota_package: start at 2022年 10月 22日 星期六 10:55:20 CST
Sha1 checksum for /ota_work/ota_package.tar (47a3a48b360bc0b8f62ced1789c1e96b13603a04) matches
decompress_ota_package: end at 2022年 10月 22日 星期六 10:56:43 CST
nv_ota_update_with_layout_change.sh /dev/mmcblk0
Command: nv_ota_update_with_layout_change.sh /dev/mmcblk0
check_bsp_version /ota_work /dev/mmcblk0 BASE_VERSION
check_target_board /ota_work TARGET_BOARD
set_msi_emmc_min_size jetson-agx-xavier-devkit MSI_EMMC_MIN_SIZE
ota_check_rollback /ota_work jetson-agx-xavier-devkit R32-7
OTA_PACKAGE version: branch:35 revision:1.0 major.minor:1.0
16384+0 records in
16384+0 records out
8388608 bytes (8.4 MB, 8.0 MiB) copied, 2.32067 s, 3.6 MB/s
boot_device_size=8388608
VER_b’s offset is 2203648 and size is 65536
VER’s offset is 2269184 and size is 65536
VER_b version: branch:32 revision:7.2 major.minor:7.2
VER version: branch:32 revision:7.2 major.minor:7.2
Check BCT/MB1/MB1_BCT partiton for fresh OTA
Checking BCT partition
Checking MB1 partition
Checking MB1_BCT partition
ver_check_res=0
ota_choose_images /ota_work jetson-agx-xavier-devkit R32-7
COMPATIBLE_SPEC=2888-400-0004–1-2-jetson-agx-xavier-devkit-
_BOARD_SPEC_NAME=2888-400-0004-
Copy files from ./images-R35-ToT/2888-400-0004-/ to ./images-R35-ToT/
Copy files from ./images-R32x-R35i/2888-400-0004-/ to ./images-R32x-R35i/
Copy files from ./images-R35A-R35i/2888-400-0004-/ to ./images-R35A-R35i/
ota_check_free_space_on_emmc
There is enough free space(654993920 bytes > 335544320 bytes) on eMMC
ota_check_partitions /ota_work
16384+0 records in
16384+0 records out
8388608 bytes (8.4 MB, 8.0 MiB) copied, 19.9391 s, 421 kB/s
boot_device_size=8388608
Checking partitions on the boot device through secondary GPT
Checking partition BCT in the ota index file
The start and end offset for BCT partition matches
Checking partition mb1 in the ota index file
The start and end offset for mb1 partition matches
Checking partition mb1_b in the ota index file
The start and end offset for mb1_b partition matches
Checking partition MB1_BCT in the ota index file
The start and end offset for MB1_BCT partition matches
Checking partition MB1_BCT_b in the ota index file
The start and end offset for MB1_BCT_b_rsv partition matches
Checking partition MEM_BCT in the ota index file
The start and end offset for MEM_BCT partition matches
Checking partition MEM_BCT_b in the ota index file
The start and end offset for MEM_BCT_b_rsv partition matches
Checking partition spe-fw in the ota index file
The start and end offset for spe-fw partition matches
Checking partition spe-fw_b in the ota index file
The start and end offset for spe-fw_b_rsv partition matches
Checking partition mb2 in the ota index file
The start and end offset for mb2 partition matches
Checking partition mb2_b in the ota index file
The start and end offset for mb2_b_rsv partition matches
Checking partition mts-preboot in the ota index file
The start and end offset for mts-preboot partition matches
Checking partition mts-preboot_b in the ota index file
The start and end offset for mts-preboot_b_rsv partition matches
Checking partition SMD in the ota index file
The start and end offset for SMD partition matches
Checking partition SMD_b in the ota index file
The start and end offset for SMD_b partition matches
Checking partitions on the user device through primary GPT
Checking partition APP in the ota index file
The start and end offset for APP partition matches
Checking partition mts-mce in the ota index file
The start and end offset for mts-mce partition matches
Checking partition mts-mce_b in the ota index file
The start and end offset for mts-mce_b_rsv partition matches
Checking partition mts-proper in the ota index file
The start and end offset for mts-proper partition matches
Checking partition mts-proper_b in the ota index file
The start and end offset for mts-proper_b_rsv partition matches
Checking partition cpu-bootloader in the ota index file
The start and end offset for cpu-bootloader partition matches
Checking partition cpu-bootloader_b in the ota index file
The start and end offset for cpu-bootloader_b_rsv partition matches
Checking partition bootloader-dtb in the ota index file
The start and end offset for bootloader-dtb partition matches
Checking partition bootloader-dtb_b in the ota index file
The start and end offset for bootloader-dtb_b_rsv partition matches
Checking partition secure-os in the ota index file
The start and end offset for secure-os partition matches
Checking partition secure-os_b in the ota index file
The start and end offset for secure-os_b_rsv partition matches
Checking partition eks in the ota index file
The start and end offset for eks partition matches
Checking partition eks_b in the ota index file
The start and end offset for eks_b_rsv partition matches
Checking partition bpmp-fw in the ota index file
The start and end offset for bpmp-fw partition matches
Checking partition bpmp-fw_b in the ota index file
The start and end offset for bpmp-fw_b_rsv partition matches
Checking partition bpmp-fw-dtb in the ota index file
The start and end offset for bpmp-fw-dtb partition matches
Checking partition bpmp-fw-dtb_b in the ota index file
The start and end offset for bpmp-fw-dtb_b_rsv partition matches
Checking partition xusb-fw in the ota index file
The start and end offset for xusb-fw partition matches
Checking partition xusb-fw_b in the ota index file
The start and end offset for xusb-fw_b_rsv partition matches
Checking partition rce-fw in the ota index file
The start and end offset for rce-fw partition matches
Checking partition rce-fw_b in the ota index file
The start and end offset for rce-fw_b_rsv partition matches
Checking partition adsp-fw in the ota index file
The start and end offset for adsp-fw partition matches
Checking partition adsp-fw_b in the ota index file
The start and end offset for adsp-fw_b_rsv partition matches
Checking partition sce-fw in the ota index file
The start and end offset for sce-fw partition matches
Checking partition sce-fw_b in the ota index file
The start and end offset for sce-fw_b_rsv partition matches
Checking partition sc7 in the ota index file
The start and end offset for sc7 partition matches
Checking partition sc7_b in the ota index file
The start and end offset for sc7_b_rsv partition matches
Checking partition BMP in the ota index file
The start and end offset for BMP partition matches
Checking partition BMP_b in the ota index file
The start and end offset for BMP_b partition matches
Checking partition recovery in the ota index file
The start and end offset for recovery_rsv partition matches
Checking partition recovery-dtb in the ota index file
The start and end offset for recovery-dtb_rsv partition matches
Checking partition kernel-bootctrl in the ota index file
The start and end offset for kernel-bootctrl partition matches
Checking partition kernel-bootctrl_b in the ota index file
The start and end offset for kernel-bootctrl_b partition matches
Checking partition kernel in the ota index file
The start and end offset for kernel partition matches
Checking partition kernel_b in the ota index file
The start and end offset for kernel_b partition matches
Checking partition kernel-dtb in the ota index file
The start and end offset for kernel-dtb partition matches
Checking partition kernel-dtb_b in the ota index file
The start and end offset for kernel-dtb_b partition matches
Checking partition CPUBL-CFG in the ota index file
The start and end offset for CPUBL-CFG partition matches
Checking partition RP1 in the ota index file
The start and end offset for RP1 partition matches
Checking partition RP2 in the ota index file
The start and end offset for RP2 partition matches
enable_a_b_redundancy
both_slots_valid
Slot 0 is not marked successful, device is not ready for OTA. Please do RCM flash to recover it
Failed to run “both_slots_valid”

Hi tianyi2,

Which steps are you get this errors? steps 6?
You don’t need generate OTA package from r32.7.2 to r35.1 with -b options, the -b options is only workaround for r32.6.1 to r32.7.2.

Hi,
I get this error in step 6.
I don’t generate OTA package from r32.7.2 to r35.1 with -b options.

Hi tianyi2,

Slot 0 is not marked successful, device is not ready for OTA
→ The error means you are not in the chain A.

Please reboot device and make sure it is booting from chain A after OTA is finished. (steps1-5)
Using below command to check your boot slot:
$ sudo nvbootctrl dump-slots-info

If in the chain A, then you can continue your OTA from R32.7.2 to R35.1

Hi,
how to boot from chain A?

Hi tianyi2,

Switch to chain A command:

$ sudo nvbootctrl set-active-boot-slot 0
$ sudo reboot

—> after boot up, make sure device is booting from chain A.

$ sudo nvbootctrl dump-slots-info
Current bootloader slot: A
Active bootloader slot: A

→ Success! Then you can start OTA from r32.7.2 to r35.1.

Hi,
I try the steps as following and update successfully.
Host to update to 32.7.2:
1.sudo ./tools/ota_tools/version_upgrade/build_base_recovery_image.sh jetson-agx-xavier-devkit R32-6 ${BASE_BSP} ${BASE_BSP}/rootfs ${TARGET_BSP}
2.sudo ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh jetson-agx-xavier-devkit R32-6
The ota_payload_package.tar.gz is generated.
xavier module to update to 32.7.2:
1.sudo mkdir /ota
2.sudo mount /dev/nvme0n1 /ota
3.upload ota_payload_package.tar.gz to /ota
4.upload patched ota_tools_R32.7.2_aarch64.tbz2 to /home/$user下
5.cd /home/$user; sudo tar xvf ota_tools_R32.7.2_aarch64.tbz2
6.cd /home/$user/Linux_for_Tegra/tools/ota_tools/version_upgrade
7.sudo ./nv_ota_start.sh /dev/mmcblk0 /ota/ota_payload_package.tar.gz
Then reboot.

Then the step is working around the error.
then the active slob is B.
1.sudo nvbootctrl set-active-boot-slot 0
reboot, and the active slob is A.
2.Edit /etc/nv_tegra_release to r32.6.1
3.update bootloader and reboot.
the active slob is B.
4. continue to update bootloader, and reboot.
the active slob is A.
5.Edit /etc/nv_tegra_release back to r32.7.2
Then continue to update from 32.7.2 to 35.1, successfully.

1 Like

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