Error in nv_update_engine: Can't find matching TN Spec in OTA Blob!

Hi,
I try to update my Kernel with BUP but I get an error

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

I use the latest L4T/r32_Release_v5.0 and try to compile the kernel with the preempt_rt patch by ./rt-patch.sh apply-patches

After that I use ./apply_binaries.sh and
FAB=400 BOARDID=2888 BOARDSKU=0004 BOARDREV=K.0 FUSELEVEL=fuselevel_production ./build_l4t_bup.sh jetson-xavier mmcblk0p1 to build the BUP.
After that I transfer it to the AGX Xavier and install it by sudo nv_update_engine --install --payload bl_update_payload

Thanks
MF

Hi mcfir,

Are you copy the BUP file in the target system under this directory before the Update Engine is run:

/opt/ota_package/

BUP file at: /bootloader/payloads_t19x/bl_update_payload

Enable A/B redundancy:

$ sudo nv_update_engine --enable-ab

Update engine:

$ sudo nv_update_engine --install

Hi carolyuu,
thanks for the response. I did the steps you are describing.
I tried it again with a freshly flashed system but it still doesn’t work.

As an alternative, I built a Debian package of the compiled kernel as described in the Doku (Repackaging the Kernel Debian Package). This works fine.

Hi mcfir,

We will check issue internal and update to you.

hello mcfir,

could you please provide following output information for reference,
thanks

  1. after generating BUP using “build_l4t_bup.sh”, execute ./bootloader/BUP_generator.py -c ./bootloader/payloads_t19x/bl_update_payload to display blob information.

  2. check the board spec by $ cat /etc/nv_boot_control.conf.

Hi JerryChang,
this is the output from ./bootloader/BUP_generator.py -c ./bootloader/payloads_t19x/bl_update_payload:

BLOB PATH:
/Linux_for_Tegra/bootloader/payloads_t19x/bl_update_payload

BLOB HEADER:
       Magic: NVIDIA__BLOB__V2
     Version: 0x00020000
   Blob Size: 49,341,717 bytes
 Header Size: 48 bytes
 Entry Count: 21 partition(s)
        Type: 0 (0 for update, 1 for BMP)
Uncompressed
   Blob Size: 49,341,717 bytes
   Accessory: 0x0000000000000000

ENTRY TABLE:
|   part_name    |  offset  | part_size | version | op_mode |                     tnspec                    |
|         spe-fw |     2568 |     94960 |    2    |    0    |                                               |
|            mb2 |    97528 |    171856 |    2    |    0    |                                               |
| cpu-bootloader |   269384 |    446560 |    2    |    0    |                                               |
|      secure-os |   715944 |    402368 |    2    |    0    |                                               |
|        bpmp-fw |  1118312 |    856352 |    2    |    0    |                                               |
|            eks |  1974664 |      5136 |    2    |    0    |                                               |
|        adsp-fw |  1979800 |     81312 |    2    |    0    |                                               |
|         rce-fw |  2061112 |    273168 |    2    |    0    |                                               |
|    mts-preboot |  2334280 |     24016 |    2    |    2    |                                               |
|        mts-mce |  2358296 |    143200 |    2    |    2    |                                               |
|     mts-proper |  2501496 |   3430416 |    2    |    2    |                                               |
|            sc7 |  5931912 |     65504 |    2    |    2    |                                               |
|    bpmp-fw-dtb |  5997416 |    746752 |    2    |    0    | 2888-400-0004-K.0-1-2-jetson-xavier-mmcblk0p1 |
| bootloader-dtb |  6744168 |    287248 |    2    |    0    | 2888-400-0004-K.0-1-2-jetson-xavier-mmcblk0p1 |
|            VER |  7031416 |       101 |    2    |    0    | 2888-400-0004-K.0-1-2-jetson-xavier-mmcblk0p1 |
|            mb1 |  7031517 |    248928 |    2    |    2    | 2888-400-0004-K.0-1-2-jetson-xavier-mmcblk0p1 |
|            BCT |  7280445 |      2888 |    2    |    2    | 2888-400-0004-K.0-1-2-jetson-xavier-mmcblk0p1 |
|        MB1_BCT |  7283333 |     30848 |    2    |    0    | 2888-400-0004-K.0-1-2-jetson-xavier-mmcblk0p1 |
|        MEM_BCT |  7314181 |    198656 |    2    |    0    | 2888-400-0004-K.0-1-2-jetson-xavier-mmcblk0p1 |
|         kernel |  7512837 |  41541632 |    2    |    0    |                                               |
|     kernel-dtb | 49054469 |    287248 |    2    |    0    | 2888-400-0004-K.0-1-2-jetson-xavier-mmcblk0p1 |

This is the output from cat /etc/nv_boot_control.confon the AGX Xavier:

TNSPEC 2888-400-0004-K.0-1-2-jetson-agx-xavier-devkit-mmcblk0p1
COMPATIBLE_SPEC 2888-400-0004--1-2-jetson-agx-xavier-devkit-mmcblk0p1
TEGRA_CHIPID 0x19
TEGRA_OTA_BOOT_DEVICE /dev/mmcblk0boot0
TEGRA_OTA_GPT_DEVICE /dev/mmcblk0boot1

hello mcfir,

it’s tnspec mismatch;
it shows jetson-xavier from the output of bl_update_payload;
but, nv_boot_control.conf indicate it as jetson-agx-xavier-devkit

it should be able to run nv_update_engine with the workaround to use jetson-agx-xavier-devkit to flash image and generating BUP file,

please have a try,
thanks

hello mcfir,

FYI, it’s due to we have a service to unify the board names to “jetson-agx-xavier-devkit”.
in the other words, if the customized board name is different from the config names in official release. the service will NOT unify the name; so, you may use the customized name for BUP generation.
thanks