OTA upgrade from JP 4.3 to JP 4.6.1 fails

I tried to update my AGX board from running 4.3 to 4.6.1, using the ota payload file I generated on the host.

The upgrade command on the board failed:

koi@localhost:/var/log/koi/ota/Linux_for_Tegra/tools/ota_tools/version_upgrade$ sudo ./nv_ota_start.sh /dev/mmcblk0 /var/log/koi/ota/ota_payload_package.tar.gz
Command: ./nv_ota_start.sh /dev/mmcblk0 /var/log/koi/ota/ota_payload_package.tar.gz
init_ota_log /ota_log
Creating log dir at /ota_log
Create log file at /ota_log/ota_20220406-220333.log
OTA_LOG_FILE=/ota_log/ota_20220406-220333.log
Extract /var/log/koi/ota/ota_payload_package.tar.gz
update_nv_boot_control_in_rootfs /ota_work
2888-400-0001-E.0-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 Wed Apr  6 22:03:59 UTC 2022
Sha1 checksum for /ota_work/ota_package.tar (579efb28a9c8d4c7a975103647f9f4bb7910fee6) matches
decompress_ota_package: end at Wed Apr  6 22:04:23 UTC 2022
nv_ota_update_without_layout_change.sh
Command: nv_ota_update_without_layout_change.sh
check_target_board /ota_work TARGET_BOARD
get_chip_id CHIP_ID
update_utilities_for_BUP_update /ota_work
enable_a_b_redundancy
Nvidia A/B-Redundancy Update tool Version 2.1
enabling A/B redundancy
A/B Redundancy has been enabled.
get_rootfs_a_b_enabled ROOTFS_AB_ENABLED UNIFIED_AB_ENABLED
ROOTFS_AB_ENABLED=0
UNIFIED_AB_ENABLED=0
check_bsp_version /ota_work BASE_VERSION
get_update_control /ota_work UPDATE_BOOTLOADER UPDATE_ROOTFS
UPDATE_BOOTLOADER=1, UPDATE_ROOTFS=1
update_bootloader /ota_work 0 0x19
get_update_slot bootloader 0 update_slot
update_slot=B
update_bootloader_with_UE /ota_work 0x19
Nvidia A/B-Redundancy Update tool Version 2.1
verifying update
Verify bootloader update begins.
The rotate count has been restored.
The current slot 0 is marked as boot successful
SM: S1
The priority of current slot 0 has been restored.
Verify rootfs update begins.
RootFS A/B is not enabled, verification finishes.
Nvidia A/B-Redundancy Update tool Version 2.1
Got payload file: /ota_work/bl_update_payload
current slot 0
SM: S11
Set slot 1 as unbootable and start updating.
Start running: /usr/sbin/nv_bootloader_payload_updater --no-dependent-partition /ota_work/bl_update_payload
Start running: /opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh -c
sh: 1: /opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh: not found
Check compatible spec and partlabel failed.
Slot 1 update failed
Error: installing bootloader updates failed: 768
Failed to run "/usr/sbin/nv_update_engine -i bl --payload /ota_work/bl_update_payload --no-reboot"
Failed to run "update_bootloader_with_UE /ota_work 0x19"

There is no such script /opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh on the JP 4.3 board. On another board already running JP 4.6.1, I see this script, and it is part of nvidia-l4t-init package. On the JP 4.3 board, the nvidia-l4t-init package doesn’t include this script.

Here is the log file:

koi@localhost:~$ cat /ota_log/ota_20220406-220333.log 
### OTA log ###
OTA_LOG_FILE=/ota_log/ota_20220406-220333.log
update_nv_boot_control_in_rootfs /ota_work
check_prerequisites
get_chip_id chip_id
decompress_ota_package ota_package.tar /ota_work
decompress_ota_package: start at Wed Apr  6 22:03:59 UTC 2022
Sha1 checksum for /ota_work/ota_package.tar (579efb28a9c8d4c7a975103647f9f4bb7910fee6) matches
decompress_ota_package: end at Wed Apr  6 22:04:23 UTC 2022
nv_ota_update_without_layout_change.sh
Command: nv_ota_update_without_layout_change.sh
check_target_board /ota_work TARGET_BOARD
get_chip_id CHIP_ID
update_utilities_for_BUP_update /ota_work
enable_a_b_redundancy
get_rootfs_a_b_enabled ROOTFS_AB_ENABLED UNIFIED_AB_ENABLED
ROOTFS_AB_ENABLED=0
UNIFIED_AB_ENABLED=0
check_bsp_version /ota_work BASE_VERSION
get_update_control /ota_work UPDATE_BOOTLOADER UPDATE_ROOTFS
UPDATE_BOOTLOADER=1, UPDATE_ROOTFS=1
update_bootloader /ota_work 0 0x19
get_update_slot bootloader 0 update_slot
update_slot=B
update_bootloader_with_UE /ota_work 0x19
Failed to run "/usr/sbin/nv_update_engine -i bl --payload /ota_work/bl_update_payload --no-reboot"
Failed to run "update_bootloader_with_UE /ota_work 0x19"
Failed to run "update_bootloader /ota_work 0 0x19"
koi@localhost:~$ 

On JP 4.3, I manually created the directory /opt/nvidia/l4t-bootloader-config and copied the file nv-l4t-bootloader-config.sh from my other board running JP 4.6.1. Now the ota upgrade works on JP 4.3. Is there a bug in the ota_tools from JP 4.6.1? I see in the extracted /ota_work directory, there is nv-l4t-bootloader-config.sh file but I am not sure why ota_tools doesn’t use it.

hello user100090,

FYI,
we’re able to reproduce the failure, will arrange resources to investigate this internally.
thanks

We will have this issue fxied in coming release. Thanks

Is there an estimate when the coming release will be? Jetson Roadmap | NVIDIA Developer only says JP 5.0 GA in July. I assume you meant 4.6.2 or 4.7? We need to make a decision if we should use 4.6.1 (with manual workaround) or wait for your coming release for our next production release.

I saw the new 32.7.2 just released, and tried it. The same error is still there. The issue is NOT fixed in the new release.

They can’t catch the R32.7.2 release schedule, but you can try the attach patch on R32.7.1.
We plan to include them at the next release.

You can updated the following scripts in OTA package:
nv_ota_update_without_layout_change.sh
build_base_recovery_image.sh
l4t_generate_ota_package.sh
nv_ota_common.func
ota_board_specs.conf

OTA-Patch.tbz2 (120 KB)

1 Like

For now, I can simply make it work by copying /opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh from a board running R32.7.1, and put on the board that runs old JP and needs OTA upgrade. Then following normal ota upgrade steps will just work. Do you see an issue with that? Since your patch updates so many scripts, do I have any hidden issues with my approach?