Hi, I am working with Jetson TX2 on a custom carrier board. This has Jetpack 4.4 flashed on it and needs to be upgraded to Jetpack 4.6. We want to upgrade the Jetpack using the OTA method and have followed the instructions in order to generate the OTA package.
I extracted JP 4.6 Linux_for_Tegra
and sample rootfs
, applied binaries and generated recovery image. Command to generate recovery image:
BASE_BSP=<JP 4.4 Linux_for_Tegra directory>
TARGET_BSP=<JP 4.6 Linux_for_Tegra directory>
sudo ./tools/ota_tools/version_upgrade/build_base_recovery_image.sh jetson-tx2-devkit R32-4 ${BASE_BSP} ${BASE_BSP}/rootfs ${TARGET_BSP}
Then generated OTA package:
sudo ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh jetson-tx2-devkit R32-4
After the package was done I downloaded the OTA payload to TX2 and ran the upgrade command:
cd ~/Linux_for_Tegra/tools/ota_tools/version_upgrade
sudo ./nv_ota_start.sh /dev/mmcblk0 /ota/ota_payload_package.tar.gz
This command failed due to the following message:
Device TN Spec: 3310-B00-1000-E.0-1-0-jetson-tx2-mmcblk0p1
Device Compatible Spec: 3310-B00---1--jetson-tx2-devkit-
Can't find matching TN Spec in OTA Blob!
OTA Blob update failed. Status: 3
/usr/sbin/nv_bootloader_payload_updater --no-dependent-partition failed.
Slot 0 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 0x18"
Failed to run "update_bootloader /ota_work 0 0x18"
I checked the /etc/nv_boot_control.conf
on the TX2 and it seems it is different:
TNSPEC 3310-B00-1000-E.0-1-0-jetson-tx2-mmcblk0p1
COMPATIBLE_SPEC 3310-B00---1--jetson-tx2-devkit-
TEGRA_CHIPID 0x18
TEGRA_OTA_BOOT_DEVICE /dev/mmcblk0boot0
TEGRA_OTA_GPT_DEVICE /dev/mmcblk0boot1
I looked through the OTA tools files and found the ota_board_specs.conf
file which seems to show only board revision for the Jetson TX2:
jetson_tx2_devkit_ota_emmc_r32_3_4_spec=(
'boardid=3310;fab=B01;boardsku=;boardrev=;fuselevel_s=1;chiprev=0;board=jetson-tx2-devkit;rootdev=mmcblk0p1;signed_img_dir=images-R32-ToT'
)
I tried adding a new line with fab=B00
and also modifying this line with this new fab to generate a compatible OTA payload:
jetson_tx2_devkit_ota_emmc_r32_3_4_spec=(
'boardid=3310;fab=B01;boardsku=;boardrev=;fuselevel_s=1;chiprev=0;board=jetson-tx2-devkit;rootdev=mmcblk0p1;signed_img_dir=images-R32-ToT'
'boardid=3310;fab=B00;boardsku=;boardrev=;fuselevel_s=1;chiprev=0;board=jetson-tx2-devkit;rootdev=mmcblk0p1;signed_img_dir=images-R32-ToT'
)
I was able to get the OTA payload to be applied with these changes but once I rebooted to apply the upgrade the TX2 is unable to load the recovery Image and now shows these logs:
[0001.998] C> MTS error (2) : dram alias check failure
[0002.003] C> cpu waypoint 0.5 failed
[0002.007] C> ERROR: Highest Layer Module = 0x32, Lowest Layer Module = 0x32,
Aux Info = 0x1, Reason = 0x6
I have able to recover the TX2 by using a devkit to flash the device again. The TNSPEC does present the FAB=B01
after this but on the custom board this will revert to B00
which leaves me where I started.
Is there a way to generate the OTA payload for Jetpack upgrade that matches the needed board revision?