Bootloader capsule cannot be triggered when TEGRA_BL.Cap kept on NVME's esp partition of different FAB=100

What does

nvbootctrl dump-slots-info

say

sudo nvbootctrl dump-slots-info
Current version: 35.4.1
Capsule update status: 2
Current bootloader slot: A
Active bootloader slot: A
num_slots: 2
slot: 0,             status: normal
slot: 1,             status: unbootable

I had that issue too, my update went through and then some partitions were broken.
Something is incompatible there…

how to fix this ? How to know what is incompatible ?

My guess it is because of OP-TEE version 3.21 in old R35.4.1 version. See error below:

I/TC: Non-secure external DT found
I/TC: OP-TEE version: 3.21 (gcc version 9.3.0 (Buildroot 2020.08)) #2 Tue Aug  1 19:39:56 UTC 2023 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
E/TC:0 0 ekb_extraction_process:319 Tried all EKB_RKs but still can't extract the EKB image.
E/TC:0 0 jetson_user_key_pta_init:898 jetson_user_key_pta_init: Failed (ffff000f).
E/TC:0 0 call_initcalls:43 Initcall __text_start + 0x000d21f0 failed
I/TC: Primary CPU switching to normal world boot

Boot_logs_r35.4.1_r35.6.0_bup_update.txt (99.6 KB)

Nah, it’s the same error as for me:
[0001.053] E> Cannot find partition bpmp-fw_b
[0001.057] E> Partition bpmp-fw_b not found

In my case the capsule of the SKU 0000 was applied to my SKU 0001 board.
Removing the SKU0000 entry from the spec config file fixed the issue for me.

1 Like

@KevinFFF This might be related to the issue from our other thread:

#My BUP configuration looks like this:

jetson_board_spec.cfg 
# jetson-xavier-nx-devkit-emmc:
'boardid=3668;fab=100;boardsku=0001;boardrev=;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1'
# jetson-xavier-nx-devkit-emmc A03:
    'boardid=3668;fab=301;boardsku=0001;boardrev=;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1'



2025-10-16 19:42:23.823 |  SUCCESS: created payload for config "boardid=3668;fab=100;boardsku=0001;boardrev=;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1"
2025-10-16 19:42:23.823 |  SUCCESS: created payload for config "boardid=3668;fab=301;boardsku=0001;boardrev=;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1"


2025-10-16 19:42:23.823 |  ENTRY TABLE:
2025-10-16 19:42:23.823 |  |       part_name       |  offset  | part_size | version | op_mode |                      tnspec                      | 
2025-10-16 19:42:23.823 |  |                   BCT |     7224 |      2888 |   3560  |    2    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                   BCT |    10112 |      2888 |   3560  |    2    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                 BCT_A |    13000 |      2888 |   3560  |    2    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                 BCT_A |    15888 |      2888 |   3560  |    2    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                 BCT_B |    18776 |      2888 |   3560  |    2    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                 BCT_B |    21664 |      2888 |   3560  |    2    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  | BCT-boot-chain_backup |    24552 |     32768 |   3560  |    2    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  | BCT-boot-chain_backup |    57320 |     32768 |   3560  |    2    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                   mb1 |    90088 |    249008 |   3560  |    2    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                   mb1 |   339096 |    249008 |   3560  |    2    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                 mb1_b |   588104 |    249008 |   3560  |    2    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                 mb1_b |   837112 |    249008 |   3560  |    2    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |               MB1_BCT |  1086120 |     30416 |   3560  |    0    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |               MB1_BCT |  1116536 |     30416 |   3560  |    0    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |               MEM_BCT |  1146952 |    198656 |   3560  |    0    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |               MEM_BCT |  1345608 |    198656 |   3560  |    0    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                spe-fw |  1544264 |     95232 |   3560  |    0    |                                                  | 
2025-10-16 19:42:23.823 |  |                   mb2 |  1639496 |    207584 |   3560  |    0    |                                                  | 
2025-10-16 19:42:23.823 |  |           mts-preboot |  1847080 |     24016 |   3560  |    2    |                                                  | 
2025-10-16 19:42:23.823 |  |               mts-mce |  1871096 |    145184 |   3560  |    2    |                                                  | 
2025-10-16 19:42:23.823 |  |            mts-proper |  2016280 |   3429968 |   3560  |    2    |                                                  | 
2025-10-16 19:42:23.823 |  |                   VER |  5446248 |       109 |   3560  |    0    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                   VER |  5446357 |       109 |   3560  |    0    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |        cpu-bootloader |  5446466 |   3215360 |   3560  |    0    |                                                  | 
2025-10-16 19:42:23.823 |  |        bootloader-dtb |  8661826 |    340032 |   3560  |    0    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |        bootloader-dtb |  9001858 |    340032 |   3560  |    0    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |             secure-os |  9341890 |   1137424 |   3560  |    0    |                                                  | 
2025-10-16 19:42:23.823 |  |                   eks | 10479314 |      5136 |   3560  |    0    |                                                  | 
2025-10-16 19:42:23.823 |  |               bpmp-fw | 10484450 |   1007392 |   3560  |    0    |                                                  | 
2025-10-16 19:42:23.823 |  |           bpmp-fw-dtb | 11491842 |     42864 |   3560  |    0    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |           bpmp-fw-dtb | 11534706 |     42864 |   3560  |    0    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |                rce-fw | 11577570 |    529776 |   3560  |    0    |                                                  | 
2025-10-16 19:42:23.823 |  |               adsp-fw | 12107346 |    396912 |   3560  |    0    |                                                  | 
2025-10-16 19:42:23.823 |  |                   sc7 | 12504258 |     55264 |   3560  |    2    |                                                  | 
2025-10-16 19:42:23.823 |  |               xusb-fw | 12559522 |    129024 |   3560  |    0    |                                                  | 
2025-10-16 19:42:23.823 |  |         secondary_gpt | 12688546 |     16896 |   3560  |    0    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |         secondary_gpt | 12705442 |     16896 |   3560  |    0    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |  secondary_gpt_backup | 12722338 |     16896 |   3560  |    0    | 3668-100-0001--1-2-jetson-xavier-nx-devkit-emmc- | 
2025-10-16 19:42:23.823 |  |  secondary_gpt_backup | 12739234 |     16896 |   3560  |    0    | 3668-301-0001--1-2-jetson-xavier-nx-devkit-emmc- | 




#Compatible spec present on FAB=300,rev=B.0 baord:
sudo cat /etc/nv_boot_control.conf 
TNSPEC 3668-300-0001-B.0-1-2-jetson-xavier-nx-devkit-emmc-
COMPATIBLE_SPEC 3668-100---1--jetson-xavier-nx-devkit-emmc-
TEGRA_LEGACY_UPDATE false
TEGRA_BOOT_STORAGE nvme0n1
TEGRA_EMMC_ONLY false
TEGRA_CHIPID 0x19
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0


I have three production boards, (FAB=301, REV=E.0) , FAB=300, REV=B.0/C.0.

How should I generate the BUP then ?

Ofcourse, flash_l4t_t194_qspi_p3668.xml doesn’t have bpmp-fw_b partition. as you can also see in my ENTRY_TABLE for bootloader.

It seems like the solution @KevinFFF suggested for me solves my issue, but is not the actual root cause of the bpmp-fw_b issue….

What you are using does not look wrong to me.

My Bootloader entry table says 39 partitions but boot-logs shows 41 partitions in QSPI memory having 2 extra “bpmp-fw_b “ and “bpmp-fw-dtb_b“ paritions leading to this error.

0001.040] I> QSPI-0l initialized successfully
[0001.051] I> Found 41 partitions in QSPI_FLASH (instance 0)
[0001.052] I> Active Boot chain : 1
[0001.053] E> Cannot find partition bpmp-fw_b
[0001.057] E> Partition bpmp-fw_b I

I think when I generate NVME image with disk encryption , it uses flash_l4t_t194_spi_emmc_p3668_enc_rfs.xml which has bpmp-fw_b partition accounting for 41 partitions in QSPI flash.

I don’t get since I flashed QSPI with same xml ( bootloader/t186ref/cfg/flash_l4t_t194_qspi_p3668.xml )without bpmp-fw_b partition , why it is expecting it in BUP ?

Hi,

We have currently deployed Jetson Xavier NX modules (P3668-0001) in the field and have been using a bootable USB .iso image to update the NVMe root filesystem via the --direct nvme0n1 --flash-only method. This approach has worked well for rootfs updates without requiring host PC access.

Following the recent recommendation to adopt the updated QSPI partition layout that includes both Chain A and Chain B entries (e.g., bpmp-fw_b, bpmp-fw-dtb_b), we would like to understand the best practice for updating the QSPI flash on devices already deployed in the field.

Specifically:

  • Is it possible to update the QSPI flash using the same bootable USB .iso mechanism, without requiring recovery mode via host PC?

  • Can the initrd-based flashing method be extended to include QSPI updates alongside NVMe rootfs updates?

  • Are there any constraints or prerequisites we should be aware of when modifying the QSPI layout in this context?

We aim to ensure future BUP capsule updates are compatible with both boot chains and would appreciate guidance on how to safely and reliably update the QSPI layout on field devices.

@DaneLLL or @KevinFFF - Could you please suggest how can I still use bootloader/t186ref/cfg/flash_l4t_t194_qspi_p3668.xml avoiding error:

Hi,
If your in-field devices do not have the partition, please customize the xml file to match with the in-filed devices. The partition layout has to be matched for capsule update.

We used “bootloader/t186ref/cfg/flash_l4t_t194_qspi_p3668.xml” to flash the QSPI memory in our field-devices and now I generated the BUP payload using the same xml, and trigger the capsule update(shows Update Progress upto 100%) but it fails with Capsule update error status 2 leading to this error:

How can I modify this xml ? They are same in both cases, still BUP expects bpmp-fw_b parition.

bpmp-fw is in QSPI while bpmp-fw_b partition is included in eMMC by default.
It is caused from that it BUP generation uses Xavier NX eMMC board config which includes flash_l4t_t194_spi_emmc_p3668.xml as partition layout file.

How do you confirm for this?
Please share both p3509-0000+p3668-0001-qspi-emmc.conf and jetson_board_spec.cfg for further check.

#command used to generate the BUP payload passing same xml with -p option:

sudo ./l4t_generate_soc_bup.sh -u $ROOT_DIR/keys/jetson.pem -v $ROOT_DIR/keys/sbk_key.txt -p “-c bootloader/t186ref/cfg/flash_l4t_t194_qspi_p3668.xml” -b jetson-xavier-nx-devkit-emmc t19x

Isn’t this correct command to generate the bootloader PAYLOAD with -p option specifying qspi xml ?

p3509-0000+p3668-0001-qspi-emmc.conf

# SPDX-FileCopyrightText: Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: BSD-3-Clause
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# p3509-0000+p3668-0000-qspi.conf: configuration for "P3668 + P3509"
# (T194 P3518).

# Sourced by bash script.
# Disable unused variable check. Most of these variables are used in an outer
# script that sources this file.

source "${LDK_DIR}/p3668.conf.common";
EMMC_CFG=flash_l4t_t194_qspi_p3668.xml;
DTB_FILE=tegra194-p3668-0000-p3509-0000.dtb;
NO_ROOTFS=${NO_ROOTFS:-1};
MISC_COLD_BOOT_CONFIG="tegra194-mb1-bct-misc-sd-l4t.cfg";

jetson_board_spec.cfg

#!/bin/bash

# SPDX-FileCopyrightText: Copyright (c) 2023-2024 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: MIT
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
# jetson_board_spec.cfg: board specs for Jetson boards:
# 1. t19x series
# 2. t23x series
#
# Exported name of each spec entry is:
# <CHIP_NAME>_spec

t19x_spec=(
    # jetson-xavier/jetson-agx-xavier-devkit:
    'boardid=2888;fab=400;boardsku=0001;boardrev=D.0;chiprev=2;board=jetson-agx-xavier-devkit;rootdev=mmcblk0p1'
    'boardid=2888;fab=400;boardsku=0001;boardrev=E.0;chiprev=2;board=jetson-agx-xavier-devkit;rootdev=mmcblk0p1'
    'boardid=2888;fab=400;boardsku=0004;boardrev=;chiprev=2;board=jetson-agx-xavier-devkit;rootdev=mmcblk0p1'
    'boardid=2888;fab=402;boardsku=0005;boardrev=;chiprev=2;board=jetson-agx-xavier-devkit;rootdev=mmcblk0p1'

    # jetson-xavier-maxn:
    'boardid=2888;fab=400;boardsku=0001;boardrev=D.0;chiprev=2;board=jetson-xavier-maxn;rootdev=mmcblk0p1'
    'boardid=2888;fab=400;boardsku=0001;boardrev=E.0;chiprev=2;board=jetson-xavier-maxn;rootdev=mmcblk0p1'
    'boardid=2888;fab=400;boardsku=0004;boardrev=;chiprev=2;board=jetson-xavier-maxn;rootdev=mmcblk0p1'
    'boardid=2888;fab=402;boardsku=0005;boardrev=;chiprev=2;board=jetson-xavier-maxn;rootdev=mmcblk0p1'

    # jetson-xavier-slvs-ec:
    'boardid=2888;fab=400;boardsku=0001;boardrev=D.0;chiprev=2;board=jetson-xavier-slvs-ec;rootdev=mmcblk0p1'
    'boardid=2888;fab=400;boardsku=0001;boardrev=E.0;chiprev=2;board=jetson-xavier-slvs-ec;rootdev=mmcblk0p1'
    'boardid=2888;fab=400;boardsku=0004;boardrev=;chiprev=2;board=jetson-xavier-slvs-ec;rootdev=mmcblk0p1'
    'boardid=2888;fab=402;boardsku=0005;boardrev=;chiprev=2;board=jetson-xavier-slvs-ec;rootdev=mmcblk0p1'

    # jetson-xavier-nx-devkit:
    'boardid=3668;fab=100;boardsku=0000;boardrev=;chiprev=2;board=jetson-xavier-nx-devkit;rootdev=mmcblk0p1'
    # jetson-xavier-nx-devkit A03:
    'boardid=3668;fab=301;boardsku=0000;boardrev=;chiprev=2;board=jetson-xavier-nx-devkit;rootdev=mmcblk0p1'

    # jetson-xavier-nx-devkit-emmc:
    'boardid=3668;fab=100;boardsku=0001;boardrev=;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1'
    # jetson-xavier-nx-devkit-emmc A03:
    'boardid=3668;fab=301;boardsku=0001;boardrev=;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1'

    # clara-agx-xavier-devkit
    'boardid=2888;fab=400;boardsku=0004;boardrev=;chiprev=2;board=clara-agx-xavier-devkit;rootdev=mmcblk0p1'

    # jetson-agx-xavier-industrial:
    'boardid=2888;fab=600;boardsku=0008;boardrev=;chiprev=2;board=jetson-agx-xavier-industrial;rootdev=mmcblk0p1'

    # jetson-agx-xavier-industrial-mxn
    'boardid=2888;fab=600;boardsku=0008;boardrev=;chiprev=2;board=jetson-agx-xavier-industrial-mxn;rootdev=mmcblk0p1'
)

t23x_agx_bl_spec=(
    # jetson-agx-orin-devkit:
    'boardid=3701;fab=300;boardsku=0000;boardrev=;chiprev=;chipsku=00:00:00:D0;board=jetson-agx-orin-devkit;rootdev=mmcblk0p1;bup_type=bl'
    # jetson-agx-orin-devkit-maxn:
    'boardid=3701;fab=300;boardsku=0000;boardrev=;chiprev=;chipsku=00:00:00:D0;board=jetson-agx-orin-devkit-maxn;rootdev=mmcblk0p1;bup_type=bl'

    # jetson-agx-orin-devkit 32GB:
    'boardid=3701;fab=300;boardsku=0004;boardrev=;chiprev=;chipsku=00:00:00:D2;board=jetson-agx-orin-devkit;rootdev=mmcblk0p1;bup_type=bl'
    # jetson-agx-orin-devkit-maxn 32GB:
    'boardid=3701;fab=300;boardsku=0004;boardrev=;chiprev=;chipsku=00:00:00:D2;board=jetson-agx-orin-devkit-maxn;rootdev=mmcblk0p1;bup_type=bl'

    # jetson-agx-orin-devkit 64GB:
    'boardid=3701;fab=300;boardsku=0005;boardrev=;chiprev=;chipsku=00:00:00:D0;board=jetson-agx-orin-devkit;rootdev=mmcblk0p1;bup_type=bl'
    # jetson-agx-orin-devkit-maxn 64GB:
    'boardid=3701;fab=300;boardsku=0005;boardrev=;chiprev=;chipsku=00:00:00:D0;board=jetson-agx-orin-devkit-maxn;rootdev=mmcblk0p1;bup_type=bl'
)

t23x_agx_ind_bl_spec=(
    # jetson-agx-orin-devkit-industrial:
    'boardid=3701;fab=300;boardsku=0008;boardrev=;chiprev=;chipsku=00:00:00:90;board=jetson-agx-orin-devkit-industrial;rootdev=mmcblk0p1;bup_type=bl'
    # jetson-agx-orin-devkit-industrial-maxn:
    'boardid=3701;fab=300;boardsku=0008;boardrev=;chiprev=;chipsku=00:00:00:90;board=jetson-agx-orin-devkit-industrial-maxn;rootdev=mmcblk0p1;bup_type=bl'
)

t23x_holoscan_bl_spec=(
    # Holoscan:
    'boardid=3701;fab=000;boardsku=0002;boardrev=;chiprev=;chipsku=00:00:00:90;board=holoscan-devkit;rootdev=mmcblk0p1;bup_type=bl'
)

t23x_igx_bl_spec=(
    # igx-orin-devkit:
    'boardid=3701;fab=000;boardsku=0008;boardrev=;chiprev=;chipsku=00:00:00:90;board=igx-orin-devkit;rootdev=mmcblk0p1;bup_type=bl'
)

t23x_3701_bl_spec=(
    ${t23x_agx_bl_spec[@]}
    ${t23x_agx_ind_bl_spec[@]}
    ${t23x_holoscan_bl_spec[@]}
    ${t23x_igx_bl_spec[@]}
)

t23x_3767_bl_spec=(
    # orin-nx 16GB
    'boardid=3767;fab=000;boardsku=0000;boardrev=;chiprev=;chipsku=00:00:00:D3;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=bl'
    # orin-nx 8GB
    'boardid=3767;fab=000;boardsku=0001;boardrev=;chiprev=;chipsku=00:00:00:D4;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=bl'

    # orin-nano 8GB
    'boardid=3767;fab=000;boardsku=0003;boardrev=;chiprev=;chipsku=00:00:00:D5;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=bl'
    'boardid=3767;fab=000;boardsku=0005;boardrev=;chiprev=;chipsku=00:00:00:D5;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=bl'
    # orin-nano 4GB
    'boardid=3767;fab=000;boardsku=0004;boardrev=;chiprev=;chipsku=00:00:00:D6;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=bl'

    # legacy orin-nx 16GB
    'boardid=3767;fab=000;boardsku=0005;boardrev=;chiprev=;chipsku=00:00:00:D5;board=jetson-orin-nx-devkit-16gb;rootdev=mmcblk0p1;bup_type=bl'
)

t23x_bl_spec=(
    ${t23x_3701_bl_spec[@]}
    ${t23x_3767_bl_spec[@]}
)

t23x_kernel_spec=(
    # jetson-agx-orin-devkit:
    'boardid=3701;fab=300;boardsku=0000;boardrev=;chiprev=;board=jetson-agx-orin-devkit;rootdev=mmcblk0p1;bup_type=kernel'
    # jetson-agx-orin-devkit-maxn:
    'boardid=3701;fab=300;boardsku=0000;boardrev=;chiprev=;board=jetson-agx-orin-devkit-maxn;rootdev=mmcblk0p1;bup_type=kernel'

    # jetson-agx-orin-devkit 32GB:
    'boardid=3701;fab=300;boardsku=0004;boardrev=;chiprev=;board=jetson-agx-orin-devkit;rootdev=mmcblk0p1;bup_type=kernel'
    # jetson-agx-orin-devkit-maxn 32GB:
    'boardid=3701;fab=300;boardsku=0004;boardrev=;chiprev=;board=jetson-agx-orin-devkit-maxn;rootdev=mmcblk0p1;bup_type=kernel'

    # jetson-agx-orin-devkit 64GB:
    'boardid=3701;fab=300;boardsku=0005;boardrev=;chiprev=;board=jetson-agx-orin-devkit;rootdev=mmcblk0p1;bup_type=kernel'
    # jetson-agx-orin-devkit-maxn 64GB:
    'boardid=3701;fab=300;boardsku=0005;boardrev=;chiprev=;board=jetson-agx-orin-devkit-maxn;rootdev=mmcblk0p1;bup_type=kernel'

    # jetson-agx-orin-devkit-industrial:
    'boardid=3701;fab=300;boardsku=0008;boardrev=;chiprev=;board=jetson-agx-orin-devkit-industrial;rootdev=mmcblk0p1;bup_type=kernel'
    # jetson-agx-orin-devkit-industrial-maxn:
    'boardid=3701;fab=300;boardsku=0008;boardrev=;chiprev=;board=jetson-agx-orin-devkit-industrial-maxn;rootdev=mmcblk0p1;bup_type=kernel'

    # Holoscan:
    'boardid=3701;fab=000;boardsku=0002;boardrev=;chiprev=;board=holoscan-devkit;rootdev=mmcblk0p1;bup_type=kernel'

    # igx-orin-devkit:
    'boardid=3701;fab=000;boardsku=0008;boardrev=;chiprev=;board=igx-orin-devkit;rootdev=mmcblk0p1;bup_type=kernel'

    # jetson-orin-nano-devkit:
    # orin-nx 16GB
    'boardid=3767;fab=000;boardsku=0000;boardrev=;chiprev=;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=kernel'
    # orin-nx 8GB
    'boardid=3767;fab=000;boardsku=0001;boardrev=;chiprev=;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=kernel'

    # orin-nano 8GB
    'boardid=3767;fab=000;boardsku=0003;boardrev=;chiprev=;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=kernel'
    'boardid=3767;fab=000;boardsku=0005;boardrev=;chiprev=;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=kernel'
    # orin-nano 4GB
    'boardid=3767;fab=000;boardsku=0004;boardrev=;chiprev=;board=jetson-orin-nano-devkit;rootdev=mmcblk0p1;bup_type=kernel'

    # legacy orin-nx 16GB
    'boardid=3767;fab=000;boardsku=0005;boardrev=;chiprev=;board=jetson-orin-nx-devkit-16gb;rootdev=mmcblk0p1;bup_type=kernel'
)

t23x_spec=(
    ${t23x_bl_spec[@]}
    ${t23x_kernel_spec[@]}
)

-p option will pass the parameter to initrd script.

Please confirm the flash_l4t_t194_qspi_p3668.xml in r35.4.1 and r35.6.0 are exactly the same.
I would also like to know the exact flash command you run when you were flashing r35.4.1 on the board.

Could you just keep the following lines in board spec( jetson_board_spec.cfg) as you are using only Xavier NX eMMC module?

t19x_spec=(
    # jetson-xavier-nx-devkit-emmc:
    'boardid=3668;fab=100;boardsku=0001;boardrev=;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1'
    # jetson-xavier-nx-devkit-emmc A03:
    'boardid=3668;fab=301;boardsku=0001;boardrev=;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1'
)

And simply run the following command to generate multi-spec capsule payload.

$ sudo ./l4t_generate_soc_bup.sh -u $ROOT_DIR/keys/jetson.pem -v $ROOT_DIR/keys/sbk_key.txt t19x
$ ./generate_capsule/l4t_generate_soc_capsule.sh -i bootloader/payloads_t19x/bl_only_payload -o ./TEGRA_BL.Cap t194 

Please share the full log when you generate the capsule payload on the host and perform capsule update on the device.

Yes, I checked that. Both the xml’s in r35.4.1 and r35.6.1 are same.

# Massflash image creation command using r35.4.1

sudo ADDITIONAL_DTB_OVERLAY_OPT="BootOrderNvme.dtbo" ROOTFS_ENC=1 BOARDID=3668 FAB=301 BOARDSKU=0001 BOARDREV=E.0 ./tools/kernel_flash/l4t_initrd_flash.sh -u $ROOT_DIR/keys/jetson.pem -v $ROOT_DIR/keys/sbk_key.txt  -p "-i ./ekb.key -c bootloader/t186ref/cfg/flash_l4t_t194_qspi_p3668.xml" --external-device nvme0n1p1 -c ./tools/kernel_flash/flash_l4t_nvme_rootfs_enc.xml -S 40GiB --no-flash --massflash 8 --showlogs jetson-xavier-nx-devkit-emmc nvme0n1p1

#Command used to flash the massflash image on the board with r35.4.1
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --massflash 1

I kept my cfg file exactly like this with only two entries and then generated the BUP payload as you suggested:

$ sudo ./l4t_generate_soc_bup.sh -u $ROOT_DIR/keys/jetson.pem -v $ROOT_DIR/keys/sbk_key.txt t19x
$ ./generate_capsule/l4t_generate_soc_capsule.sh -i bootloader/payloads_t19x/bl_only_payload -o ./TEGRA_BL.Cap t194

Logs:

bup_generation_logs.txt (202.1 KB)

capsule_generation_logs.txt (2.9 KB)

Then performed the capsule update on the device, but it gives me the following error in boot-logs:


��I/TC: Reserved shared memory is disabled
I/TC: Dynamic shared memory is enabled
I/TC: Normal World virtualization support is disabled
I/TC: Asynchronous notifications are disabled
E/TC:? 0 jetson_user_key_pta_uefi_vars_auth:920 UEFI variable auth key not set !
E/TC:? 0 stmm_handle_variable_authentication:910 Failed to get signed CMAC ffff0008

ASSERT [FvbNorFlashStandaloneMm] /dvs/git/dirty/git-master_linux/out/nvidia/optee.t194-uefi/StandaloneMmOptee_RELEASE/edk2-nvidia/Silicon/NVIDIA/Drivers/FvbNorFlashDxe/VarIntCheck.c(922): ((BOOLEAN))

It seems you’ve enabled disk-encryption and also the secureboot in your case.

If you use only external NVMe, could you specify rootdev=nvme0n1p1 instead here?

It seems you don’t hit the previous “Cannot find partition bpmp-fw_b” issue.
Do you have enabled UEFI secureboot in your use case?
Have you also updated the eks image in BSP package of r35.6.1 before generating capsule payload?

No, I haven’ t enabled UEFI secureboot.

#In the OP-0TEE 3.22 version in R35.6.0, I used the below code to generate eks_t194.img again. Then only created and flashed massflash image also in r35.6.0.

echo "bad66eb4484983684b992fe54a648bb8" > fv_ekb_t194
echo "00000000000000000000000000000000" > auth_t194.key
python3 gen_ekb.py -chip t194 -kek2_key ../kek2.txt \
        -fv fv_ekb_t194 \
        -in_sym_key ../sym_t194.key \
        -in_sym_key2 ../sym2_t194.key \
        -in_auth_key auth_t194.key \
        -out eks_t194.img
#Copy the eks_t194.img into bootloader
cp eks_t194.img $ROOT_DIR/Linux_for_Tegra/bootloader/

#In r35.4.1, echo "00000000000000000000000000000000" > auth_t194.key was not present as I followed the example.sh in optee.


That's the difference in eks.img in r35.6.0
Before creating payload, this eks.img is present in bootloader. 

I can try generating the payload using this .