Bootloader Update via UEFI Capsule

Hi,

we have an Orin AGX industrial with JetPack 5.1.2 on a Connect Tech Rogue Carrier Board. I need to update the A_rce-fw-partion in-system without any physical access to the board besides a network connection.

As far as I understand, the best way to do this is to use UEFI Capsule Update for a full bootloader update, as described in the Developer Guide - Generating the Capsule Update Payload.

Two questions:
1) Are there any other/simpler ways to update the A_rce-fw partition in-system?
2) If not, can you please provide some further information on how to correctly update the bootloader with the UEFI Capsule? Unfortunately, I was not able to update using this method.


Method I used to create/use the UEFI capsule:

  • Added board-spec for my HW-setup to jetson_board_spec.cfg
t23x_igx_rogue_bl_spec=(
	    'boardid=3701;fab=500;boardsku=0008;boardrev=;chiprev=;chipsku=00:00:00:90;board=cti/orin-agxi/rogue-orin/base;rootdev=mmcblk0p1;bup_type=bl'
)
  • Create the BUP with:
sudo ./l4t_generate_soc_bup.sh -e t23x_igx_rogue_bl_spec t23x
  • Created the Update-Capsule with:
./generate_capsule/l4t_generate_soc_capsule.sh -i bootloader/payloads_t23x/bl_only_payload -o ./TEGRA_BL.Cap t234
  • Copy the UEFI-Capsule to the system and manually trigger the update:
# Copy the Capsule 
sudo mount /dev/mmcblk0p10 /esp_mount/
sudo mkdir /esp_mount/EFI/UpdateCapsule
sudo cp ~/TEGRA_BL.Cap /esp_mount/EFI/UpdateCapsule/

# Trigger the update
printf "\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00" > /tmp/var_tmp.bin
cd /sys/firmware/efi/efivars/
sudo dd if=/tmp/var_tmp.bin of=OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c bs=12
sudo reboot

Nothing happens during/after the reboot. The system just boots normally. Running sudo nvbootctrl dump-slots-info doesn’t indicate any bootloader-updates or update-failures.

Current version: 0.0.1
Capsule update status: 0
Current bootloader slot: A
Active bootloader slot: A
num_slots: 2
slot: 0,             status: normal
slot: 1,             status: normal

If I remount the EFI-partition, the UEFI-Capsule I copied to it before, has gone.

I tried this multiple times. without any success. Am I missing something here? Are there some additional steps required? What could I do to further debug this?

Thanks in advance!

Hi haensler,

Normally, we would suggest using flash command to update specific partition.
It may not work in your case since you have only the access of network.

Are you using the custom BSP package to generate payload for capsule update?

Capsule update should work for your custom carrier board.

Please share the full serial console log from the board for further check.

Hello,

Yes, I am using the same setup that was used to flash the Orin before, which is basically the regular setup of L4T-SDK, with an Overlay from Connect Tech and some minor additional modifications.

I set up the capsule update as described below, and rebooted the system. The log: bootlog.txt (147.8 KB)

Thanks and BR.

I> BR-BCT Boot-Chain is 0, and status is 1. Set UPDATE_BRBCT bit to 0

I can’t find any update related log in the log you shared.

Is there any error during generating the capsule update payload?

Your version is not the expected result to me here.

I tried to run the update multiple times, always with the same result. Am I doing something wrong when triggering the update? I used the following commands to do so:


No, I don’t see any errors. Neither at the BUP generation nor at the UEFI Capsule generation. Both end with a “SUCCESS” message

> sudo ./l4t_generate_soc_bup.sh -e t23x_igx_rogue_bl_spec t23x
......
BLOB HEADER:
       Magic: NVIDIA__BLOB__V3
     Version: v3.1-2022.6-0 (0x01030622)
   Blob Size: 15,693,685 bytes
 Header Size: 48 bytes
 Entry Count: 29 partition(s)
        Type: 0 (0 for update, 1 for BMP)
Uncompressed
   Blob Size: 15,693,685 bytes
   Accessory: 0x0000000000000000

ENTRY TABLE:
|       part_name       |  offset  | part_size | version | op_mode |                     tnspec                     |
|                   BCT |     5384 |      8192 |   3541  |    2    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|                 BCT_A |    13576 |      8192 |   3541  |    2    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|                 BCT_B |    21768 |      8192 |   3541  |    2    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
| BCT-boot-chain_backup |    29960 |     32768 |   3541  |    2    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|                   mb1 |    62728 |    280976 |   3541  |    2    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|               psc_bl1 |   343704 |    122864 |   3541  |    2    |                                                |
|               MB1_BCT |   466568 |     17616 |   3541  |    0    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|               MEM_BCT |   484184 |    243712 |   3541  |    0    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|                fsi-fw |   727896 |   5746688 |   3541  |    0    |                                                |
|                 nvdec |  6474584 |    294912 |   3541  |    2    |                                                |
|                   mb2 |  6769496 |    438768 |   3541  |    0    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|               bpmp-fw |  7208264 |   1070208 |   3541  |    2    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|           bpmp-fw-dtb |  8278472 |    151360 |   3541  |    0    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|                psc-fw |  8429832 |    375168 |   3541  |    2    |                                                |
|               mts-mce |  8805000 |    190592 |   3541  |    2    |                                                |
|                   sc7 |  8995592 |    184544 |   3541  |    2    |                                                |
|                 pscrf |  9180136 |    122320 |   3541  |    2    |                                                |
|                 mb2rf |  9302456 |    122752 |   3541  |    0    |                                                |
|        cpu-bootloader |  9425208 |   2986048 |   3541  |    0    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|             secure-os | 12411256 |   1127568 |   3541  |    0    |                                                |
|                   eks | 13538824 |      9232 |   3541  |    0    |                                                |
|                dce-fw | 13548056 |    735664 |   3541  |    0    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|                spe-fw | 14283720 |    270336 |   3541  |    0    |                                                |
|                rce-fw | 14554056 |    540000 |   3541  |    0    |                                                |
|               adsp-fw | 15094056 |    400864 |   3541  |    0    |                                                |
|                   VER | 15494920 |       109 |   3541  |    0    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|               xusb-fw | 15495029 |    164864 |   3541  |    2    |                                                |
|         secondary_gpt | 15659893 |     16896 |   3541  |    0    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |
|  secondary_gpt_backup | 15676789 |     16896 |   3541  |    0    | 3701-500-0008-P.0-1-0-cti-orin-agxi-agx202-00- |


SUCCESS: contents of the BUP
> ./generate_capsule/l4t_generate_soc_capsule.sh -i bootloader/payloads_t23x/bl_only_payload -o ./TEGRA_BL.Cap t234
....
EFI_CAPSULE_HEADER.CapsuleGuid      = 6DCBD5ED-E82D-4C44-BDA1-7194199AD92A
EFI_CAPSULE_HEADER.HeaderSize       = 00000020
EFI_CAPSULE_HEADER.Flags            = 00000000
  OEM Flags                         = 0000
EFI_CAPSULE_HEADER.CapsuleImageSize = 00EF82DA
sizeof (Payload)                    = 00EF82BA
Write binary output file ./TEGRA_BL.Cap
Success

Strange. Can you explain where this version is derived from? I just compared it to a setup with an Orin-Devkit, which also gives me something different (35.4.1).

Thank you!

Could you refer to the following flow to check what causes it becoming 0.0.1?
Flash Jetpack 5.1.2 → check bootloader version → capsule update to the same Jetpack 5.1.2 → check bootloader version

Do you mean the issue is specific to your custom carrier board?

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

Hi,

Unfortunately, we were not able to resolve this.
However, we gained physical access to the devices and flashed them via USB.

Thanks anyway!
Best regards

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.