Capsule Update on Jetson Orin NX with Jetson Linux 36.4 : Missing required image for partition 'mb1': Not Found

I’m working on a Jetson Orin NX module running Jetson Linux 36.4, and I’m trying to use Capsule Update for firmware updates.

I generated a capsule update using the following command:

sudo ./l4t_generate_soc_bup.sh -e t23x_3767_bl_spec t23x

In the end it printed:

t23x payload generation complete with 0 failure(s)

SUCCESS: cleaned up BUP tmp files prior to payload creation
SUCCESS: created payload for config "boardid=3767;fab=301;boardsku=0000;boardrev=G.1;fuselevel=fuselevel_production;chiprev=1;chipsku=00:00:00:D3;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=bl"
SUCCESS: cleaned up BUP tmp files after payload creation
BLOB PATH:
/home/worldcoin/capsule-tests/rts/bootloader/payloads_t23x/bl_only_payload

BLOB HEADER:
       Magic: NVIDIA__BLOB__V3
     Version: v3.1-2022.6-0 (0x01030622)
   Blob Size: 11,106,317 bytes
 Header Size: 48 bytes
 Entry Count: 30 partition(s)
        Type: 0 (0 for update, 1 for BMP)
Uncompressed
   Blob Size: 11,106,317 bytes
   Accessory: 0x0000000000000000

ENTRY TABLE:
|       part_name       |  offset  | part_size | version | op_mode |                     tnspec                     | 
|                   BCT |     5568 |      8192 |   3640  |    2    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|                 BCT_A |    13760 |      8192 |   3640  |    2    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|                 BCT_B |    21952 |      8192 |   3640  |    2    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|                   mb1 |    30144 |    282768 |   3640  |    2    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|               psc_bl1 |   312912 |    123008 |   3640  |    2    |                                                | 
|               MB1_BCT |   435920 |     17600 |   3640  |    0    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|               MEM_BCT |   453520 |    243712 |   3640  |    0    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|               tsec-fw |   697232 |    176128 |   3640  |    0    |                                                | 
|                 nvdec |   873360 |    294912 |   3640  |    2    |                                                | 
|                   mb2 |  1168272 |    440944 |   3640  |    0    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|               xusb-fw |  1609216 |    164864 |   3640  |    2    |                                                | 
|               bpmp-fw |  1774080 |   1027008 |   3640  |    2    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|           bpmp-fw-dtb |  2801088 |    383296 |   3640  |    0    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|                psc-fw |  3184384 |    310768 |   3640  |    2    |                                                | 
|               mts-mce |  3495152 |    187120 |   3640  |    2    |                                                | 
|                   sc7 |  3682272 |    186880 |   3640  |    2    |                                                | 
|                 pscrf |  3869152 |    122464 |   3640  |    2    |                                                | 
|                 mb2rf |  3991616 |    122720 |   3640  |    0    |                                                | 
|        cpu-bootloader |  4114336 |   3340592 |   3640  |    0    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|             secure-os |  7454928 |   1575856 |   3640  |    0    |                                                | 
|                   eks |  9030784 |      9232 |   3640  |    0    |                                                | 
|                dce-fw |  9040016 |    788944 |   3640  |    0    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|                spe-fw |  9828960 |    270336 |   3640  |    0    |                                                | 
|                rce-fw | 10099296 |    458096 |   3640  |    0    |                                                | 
|               adsp-fw | 10557392 |    415232 |   3640  |    0    |                                                | 
|                pva-fw | 10972624 |     67024 |   3640  |    0    |                                                | 
| BCT-boot-chain_backup | 11039648 |     32768 |   3640  |    2    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|  secondary_gpt_backup | 11072416 |     16896 |   3640  |    0    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|                   VER | 11089312 |       109 |   3640  |    0    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 
|         secondary_gpt | 11089421 |     16896 |   3640  |    0    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 

BLOB PATH:
/home/worldcoin/capsule-tests/rts/bootloader/payloads_t23x/kernel_only_payload

BLOB HEADER:
       Magic: NVIDIA__BLOB__V3
     Version: v3.1-2022.6-0 (0x01030622)
   Blob Size: 58,253,473 bytes
 Header Size: 48 bytes
 Entry Count: 2 partition(s)
        Type: 0 (0 for update, 1 for BMP)
Uncompressed
   Blob Size: 58,253,473 bytes
   Accessory: 0x0000000000000000

ENTRY TABLE:
| part_name  |  offset  | part_size | version | op_mode |                     tnspec                     | 
|     kernel |      416 |  58003456 |   3640  |    0    |                                                | 
| kernel-dtb | 58003872 |    249601 |   3640  |    0    | 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- | 


SUCCESS: contents of the BUP

After that I’ve loaded the capsule on board following Manually Triggering the Single Partition Image Capsule Update

During boot, EFI refuses to apply the update and prints the following messages:

ESC   to enter Setup.
F11   to enter Boot Manager Menu.
Enter to continue boot.
Failed to find memory test protocol
FwPackageValidateImageInfo WARNING: image info for 'BCT' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'BCT_A' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'BCT_B' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'mb1' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'psc_bl1' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'MB1_BCT' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'MEM_BCT' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'tsec-fw' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'nvdec' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'mb2' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'xusb-fw' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'bpmp-fw' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'bpmp-fw-dtb' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'psc-fw' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'mts-mce' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'sc7' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'pscrf' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'mb2rf' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'cpu-bootloader' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'secure-os' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'eks' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'dce-fw' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'spe-fw' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'rce-fw' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'adsp-fw' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'pva-fw' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'BCT-boot-chain_backup' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'secondary_gpt_backup' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'VER' has version=13888, expected=0
FwPackageValidateImageInfo WARNING: image info for 'secondary_gpt' has version=13888, expected=0
GetPackageImageIndex: Failed to get image index for 'GPT' (secondary_gpt_backup): Not Found
GetPackageImageIndex: Failed to get image index for 'mb1' (mb1): Not Found
FmpTegraCheckImage:   ERROR:  Missing required image for partition 'mb1': Not Found
FmpDxe(NVIDIA System Firmware): CheckTheImage() - FmpDeviceLib CheckImage failed. Status = Aborted
FmpDxe(NVIDIA System Firmware): SetTheImage() - Check The Image failed with Aborted.
HandleCapsules: resetting to

That looks strange as from l4t_generate_soc_bup output it is clear that mb1 is present in the capsule update.

My questions are why the update is not applied? and how to debug and fix it?

Hi,

Please try below topics to updater the capsule

And provide the log if issue exist.

Thanks

We did follow those instructions from the developer guide and those are the logs after following the instructions.

Hi,

One question to confirm:
Do you enable secure boot in your Orin NX?

Thanks

Yes, per the NVIDIA documentation we created the capsule update with the following command:
$ sudo ./l4t_generate_soc_bup.sh -u <pkc_keyfile> -e t23x_3767_bl_spec t23x. @aleksei.fedotov forgot to include the -u <pkc_keyfile> in his post, but it was used when generating the BUP.

The we did some testing with and without signing of the BUP and it seems like it is correctly signed.

Hi,

Do you enable UEFI secure boot?
Please try add -p "--uefi-keys uefi_keys/uefi_update_keys.conf" in your command if enable.

Thanks

I’ve added ’ -p "--uefi-keys uefi_keys/uefi_update_keys.conf" to ./l4t_generate_soc_bup.sh command. The results are the same.

Is there some way to debug UEFI binaries on Jetsons?

I’ve added some instrumentation to TegraFmp.c and FwPackageLib.c and discovered the following:

Every entry in the capsule is checked if tnspec matches agains TegraPlatformCompatSpec

The problem is that tnspec in the capsule has value 3767-301-0000-G.1-1-1-jetson-orin-nano-devkit- and default TegraPlatformCompatSpec in EFI is ------- . They have different number of dashes - and that makes every entry in the capsule not suitable for the update.


I have a question: How is it supposed to work? Is there some component in EFI which should set TegraPlatformCompatSpec ?

Hi

Sorry for the late response.
One question to confirm:

Is your Orin NX using a dev kit or a custom board?

Thanks

There is no update from you for a period, assuming this is not an issue anymore.
Hence, we are closing this topic. If need further support, please open a new one.
Thanks
~0716

Is this still an issue to support? Any result can be shared?