Capsule update failed

Hi NVIDIA experts,

I verify capsule update feature with below steps:

  1. download Driver Package (BSP)

  2. deploy image into sd card that is attached on orin nano board
    In recovery mode, run command “sudo ./nvsdkmanager_flash.sh”

  3. after board boots up, install nvidia-jetpack
    sudo apt update
    sudo apt install nvidia-jetpack

  4. Generate update capsule
    In recovery mode, run below command to generate Single-Spec BUP
    cd xxx/Jetson_Linux_R36.4.3_aarch64/Linux_for_Tegra
    sudo ./build_l4t_bup.sh jetson-orin-nano-devkit mmcblk0p1

    Generate the Capsule Payload from the BUP
    cd xxx/Jetson_Linux_R36.4.3_aarch64/Linux_for_Tegra
    ./generate_capsule/l4t_generate_soc_capsule.sh
    -i bootloader/payloads_t23x/bl_only_payload
    -o ./TEGRA_BL.Cap t234

  5. Trigger update
    boots up board normally, run boot command
    sudo mkdir /boot/efi/EFI/UpdateCapsule/
    sudo cp xxxx/TEGRA_BL.Cap /boot/efi/EFI/UpdateCapsule/
    cd /sys/firmware/efi/efivars/
    printf “\x07\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00” > /tmp/var_tmp.bin
    sudo dd if=/tmp/var_tmp.bin of=OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c bs=12; sync
    sudo reboot

But the board doesn’t not switch to slot 1, it still boots up from slot 0.

Could you please help to have a look this issue?

thanks.
Limeng

*** Please note that this reply is generated by LLM automatically ***

Based on the provided context, it appears that you are trying to update the Bootloader on a Jetson Orin Nano device using the Capsule update feature. However, the board is not switching to the updated slot after the update.

To troubleshoot this issue, let’s compare the steps you provided with the steps in the context:

  1. You generated the Capsule payload using the l4t_generate_soc_capsule.sh script, which is correct.
  2. You triggered the update by setting the bit2 of the OsIndications UEFI variable, which is also correct.
  3. You rebooted the board, which should have triggered the Capsule update.

However, there are a few potential issues that might be causing the board to not switch to the updated slot:

  • Make sure that the OsIndications UEFI variable is set correctly. You can verify this by checking the value of the variable using the dd command: sudo dd if=OsIndications-8be4df61-93ca-11d2-aa0d-00e098032b8c bs=12
  • Ensure that the Capsule payload is correctly generated and placed in the EFI/UpdateCapsule directory.
  • Verify that the nvbootctrl command is correctly configured to update the non-current slot Bootloader.
  • Check the Capsule update status using the nvbootctrl command: sudo nvbootctrl dump-slots-info. If the status is not 1 - Capsule update successfully, it may indicate an issue with the update process.

Additionally, you can try to check the UEFI firmware logs to see if there are any errors or issues during the update process. You can do this by running the sudo efibootmgr -v command.

It’s also worth noting that the l4t_generate_soc_bup.sh script is used to generate the SingleSpec BUP, but in your case, you are using the l4t_generate_soc_capsule.sh script to generate the Capsule payload. Make sure that the correct script is being used for your specific use case.

If none of these troubleshooting steps resolve the issue, it may be helpful to provide more information about your specific setup and configuration, such as the version of the JetPack and the BSP you are using.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

Is tegra-kernel.cap able to be updated with capsule solution?

thanks,
Limeng

Could you please show a detailed steps to do capsule update?

thanks,
Limeng

Hi,

Have you run below commands to check whether update complete?

$ sudo nvbootctrl dump-slots-info

Thanks

now, I can update tegra-bl.cap normally. But I don’t find out example about how to update egra-kernel.cap.
So, I ask whether tegra-kernel.cap is able to be updated with capsule solution?

thanks,
Limeng

Hi,

We don’t have kernel capsule solution.
Please refer to the image-based ota update Software Packages and the Update Mechanism — NVIDIA Jetson Linux Developer Guide to update the kernel.

Thanks