Update by the debian based ota

  • 1 BSP environment:
    jetpack 5.1.1 L4T R35.3.1 kernel 5.10 aarch64
    agx orin 32g
  • 2 Background: *
    now, the device is at the L4T R35.1, and we expect to use debian based ota method to update it to L4T R35.3.1
  • 3 Problems: *
    updating failed, when we install nvidia-l4t-kernel.deb
root@tegra:/home/nvidia# cat /opt/ota_package/A_kernel.log 
Start running: /opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh -c
3701--0004--1--jetson-agx-orin-devkit-
Got individual part name: A_kernel
Got update payload: /opt/ota_package/bl_update_payload
Tegra User Block Device: /dev/disk/by-partlabel
Tegra Boot Block Device: /dev/mtdblock0
Tegra GPT Block Device: /dev/mtdblock0
Get SPI boot device size failed 
Publish block device failed 
/usr/sbin/nv_bootloader_payload_updater --forced-part Failed.

root@tegra:/home/nvidia# cat /etc/nv_tegra_release 
# R35 (release), REVISION: 1.0, GCID: 31250864, BOARD: t186ref, EABI: aarch64, DATE: Thu Aug 11 03:40:29 UTC 2022
root@tegra:/home/nvidia# cat /etc/nv_boot_control.conf 
TNSPEC 3701-500-0004-K.0-1-0-jetson-agx-orin-devkit-
COMPATIBLE_SPEC 3701--0004--1--jetson-agx-orin-devkit-
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0

is it possible to use nv_bootloader_payload_updater updating R35.1 device?
we referred to this post, and wonder what is “capsule update payload”? what is the difference between “update engine” and “capsule update payload”.

what’s more, there are many devices, some of them are at R35.1, and others are at R35.2.1. So, we are faced with the two situations:
1 updating from R35.1 to R35.3.1
2 updating from R35.2.1 to R35.3.1
how to do it IN A SAME method?

Are you using the devkit or custom board for AGX Orin?

Could you share the full commands you used and the update log showed on your terminal as file here?

They are tools both used to update the bootloader.

Debian based OTA update should work in both cases.

Hi @KevinFFF
1 all the previous logs came from custom board.

dpkg -i nvidia-l4t-kernel.deb
(Reading database ... 145659 files and directories currently installed.)
Preparing to unpack nvidia-l4t-kernel.deb ...
Unpacking nvidia-l4t-kernel.deb (2.1.0.0) over (1.1.0.13) ...
Setting up nvidia-l4t-kernel.deb (2.1.0.0) ...
Using the existing boot entry 'primary'
Terminating... wrong option: -l
Starting kernel post-install procedure.
Starting legacy update procedure.
ERROR. Procedure for A_kernel update FAILED.
Cannot install package. Exiting...
dpkg: error processing package nvidia-l4t-kernel.deb (--install):
 installed nvidia-l4t-kernel.deb package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 nvidia-l4t-kernel.deb

2 and we also test on the agx orin devkit.

apt list --upgradable | grep nvidia
nvidia-l4t-3d-core/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-camera/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-core/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-cuda/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-firmware/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-gbm/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-graphics-demos/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-gstreamer/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-init/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-jetsonpower-gui-tools/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-libvulkan/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-multimedia-utils/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-multimedia/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-nvfancontrol/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-nvpmodel-gui-tools/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-nvpmodel/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-nvsci/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-openwfd/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-pva/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-vulkan-sc-dev/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-vulkan-sc-samples/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-vulkan-sc-sdk/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-vulkan-sc/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-wayland/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-weston/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]
nvidia-l4t-x11/stable 35.1.0-20220825113828 arm64 [upgradable from: 35.1.0-20220810203728]

we do not see the “nvidia-l4t-kernel.deb”, so we wonder, how could the R35.1 devkit do debian ota. I mean by which deb to update the devkit?

refer to this doc, should we modify the source list? how?

ERROR. Procedure for A_kernel update FAILED.
Cannot install package. Exiting...
dpkg: error processing package nvidia-l4t-kernel.deb (--install):

It seems the A_kernel partition update failed.

Are you boot from internal eMMC or external NVMe?

Please share the full update log as file here.
and also the /var/logs/syslog when you hit this error.

Hi
boot from internal eMMC

FYI
henry_syslog (9.8 MB)

Hi
update

root@tegra:/home/nvidia# dpkg -i nvidia-l4t-kernel.deb
(Reading database ... 145614 files and directories currently installed.)
Preparing to unpack nvidia-l4t-kernel.deb ...
Unpacking nvidia-l4t-kernel.deb (2.1.0.0) over (1.1.0.13) ...
Setting up nvidia-l4t-kernel.deb (2.1.0.0) ...
Using the existing boot entry 'primary'
3701-300-0004--1--jetson-agx-orin-devkit-
Info. Installing mtdblock.
Info. Active boot storage: mmcblk0
Info. Legacy mode: true
TNSPEC 3701-500-0004-K.0-1-0-jetson-agx-orin-devkit-
COMPATIBLE_SPEC 3701-300-0004--1--jetson-agx-orin-devkit-
TEGRA_LEGACY_UPDATE true
TEGRA_BOOT_STORAGE mmcblk0
TEGRA_EMMC_ONLY false
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0
Starting kernel post-install procedure.
Starting legacy update procedure.
ERROR. Procedure for A_kernel update FAILED.
Cannot install package. Exiting...
dpkg: error processing package nvidia-l4t-kernel.deb (--install):
 installed nvidia-l4t-kernel.deb package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 nvidia-l4t-kernel.deb
root@tegra:/home/nvidia# 

root@tegra:/home/nvidia# cat /opt/ota_package/A_kernel.log
Start running: /opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh -c
3701-300-0004--1--jetson-agx-orin-devkit-
Got individual part name: A_kernel
Got update payload: /opt/ota_package/bl_update_payload
Tegra User Block Device: /dev/disk/by-partlabel
Tegra Boot Block Device: /dev/mtdblock0
Tegra GPT Block Device: /dev/mtdblock0
Skip querying the boot device parameters 
HEADER: MAGIC NVIDIA__BLOB__V3
HEX_VALUE 16975394
BLOB_SIZE 43306531
HEADER_SIZE 48
NUMBER_OF_ELEMENTS 2
HEADER_TYPE 0
UNCOMP_SIZE 43306531
MB1_RATCHET_LV 0
MTS_RATCHET_LV 0
ROLLBACK_FUSE_LV 0
Device TN Spec: 3701-500-0004-K.0-1-0-jetson-agx-orin-devkit-
Device Compatible Spec: 3701-300-0004--1--jetson-agx-orin-devkit-
Can't find matching TN Spec in OTA Blob!
GPT update failed. Status: 3
/usr/sbin/nv_bootloader_payload_updater --forced-part Failed.

./BUP_generator.py -c payloads_t23x/bl_only_payload 
BLOB PATH:
/home/henry/Linux_for_Tegra/bootloader/payloads_t23x/bl_only_payload

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

ENTRY TABLE:
|       part_name       |  offset  | part_size | version | op_mode |                     tnspec                    | 
|                   BCT |     5200 |      8192 |   3531  |    2    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|                 BCT_A |    13392 |      8192 |   3531  |    2    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|                 BCT_B |    21584 |      8192 |   3531  |    2    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
| BCT-boot-chain_backup |    29776 |     32768 |   3531  |    2    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|                   mb1 |    62544 |    268240 |   3531  |    2    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|               psc_bl1 |   330784 |    119616 |   3531  |    2    |                                               | 
|               MB1_BCT |   450400 |     17952 |   3531  |    0    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|               MEM_BCT |   468352 |    243712 |   3531  |    0    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|                 nvdec |   712064 |    294912 |   3531  |    2    |                                               | 
|                   mb2 |  1006976 |    437984 |   3531  |    0    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|               bpmp-fw |  1444960 |   1048000 |   3531  |    2    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|           bpmp-fw-dtb |  2492960 |    140416 |   3531  |    0    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|                psc-fw |  2633376 |    375168 |   3531  |    2    |                                               | 
|               mts-mce |  3008544 |    190592 |   3531  |    2    |                                               | 
|                   sc7 |  3199136 |    167344 |   3531  |    2    |                                               | 
|                 pscrf |  3366480 |    119104 |   3531  |    2    |                                               | 
|                 mb2rf |  3485584 |    122784 |   3531  |    0    |                                               | 
|        cpu-bootloader |  3608368 |   3342400 |   3531  |    0    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|             secure-os |  6950768 |   1064752 |   3531  |    0    |                                               | 
|                   eks |  8015520 |      9232 |   3531  |    0    |                                               | 
|                dce-fw |  8024752 |    758032 |   3531  |    0    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|                spe-fw |  8782784 |    270336 |   3531  |    0    |                                               | 
|                rce-fw |  9053120 |    537952 |   3531  |    0    |                                               | 
|               adsp-fw |  9591072 |    400960 |   3531  |    0    |                                               | 
|                   VER |  9992032 |       109 |   3531  |    0    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|               xusb-fw |  9992141 |    164352 |   3531  |    2    |                                               | 
|         secondary_gpt | 10156493 |     16896 |   3531  |    0    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 
|  secondary_gpt_backup | 10173389 |     16896 |   3531  |    0    | 3701-500-0004-F.0-1-0-jetson-agx-orin-devkit- | 


cat /etc/nv_boot_control.conf 
TNSPEC 3701-500-0004-K.0-1-0-jetson-agx-orin-devkit-
COMPATIBLE_SPEC 3701-300-0004--1--jetson-agx-orin-devkit-
TEGRA_LEGACY_UPDATE true
TEGRA_BOOT_STORAGE mmcblk0
TEGRA_EMMC_ONLY false
TEGRA_CHIPID 0x23
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0

Hi
refer to this post.
there are kernel and kernel_dtb partition in the bl_only_payload blob.
but, mine does not contain them.
so, we guess that may be some thing wrong with our bl_only_payload, how to generate a good one?
we expect that tnspec should be 3701-300-0004–1–jetson-agx-orin-devkit-.

FYI
the following
bl_update_payload came from kernel_only_payload of nvidia-l4t-kernel_5.10.104-tegra-35.3.1-20230319081403_arm64.deb

./BUP_generator.py -c /tmp/bl_update_payload 
BLOB PATH:
/tmp/bl_update_payload

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

ENTRY TABLE:
| part_name  |  offset  | part_size | version | op_mode |                    tnspec                   | 
|     kernel |     1888 |  43065344 |   3531  |    0    |                                             | 
| kernel-dtb | 43067232 |    249062 |   3531  |    0    | 3701-000-0002--1-0-holoscan-devkit-         | 
| kernel-dtb | 43316294 |    420844 |   3531  |    0    | 3701-000-0005--1-0-jetson-agx-orin-devkit-  | 
| kernel-dtb | 43737138 |    420844 |   3531  |    0    | 3701-300-0000--1-0-jetson-agx-orin-devkit-  | 
| kernel-dtb | 44157982 |    420839 |   3531  |    0    | 3701-300-0004--1-0-jetson-agx-orin-devkit-  | 
| kernel-dtb | 44578821 |    344703 |   3531  |    0    | 3767-000-0000--1-0-jetson-orin-nano-devkit- | 
| kernel-dtb | 44923524 |    345391 |   3531  |    0    | 3767-000-0001--1-0-jetson-orin-nano-devkit- | 
| kernel-dtb | 45268915 |    345518 |   3531  |    0    | 3767-000-0003--1-0-jetson-orin-nano-devkit- | 
| kernel-dtb | 45614433 |    345470 |   3531  |    0    | 3767-000-0004--1-0-jetson-orin-nano-devkit- | 
| kernel-dtb | 45959903 |    345518 |   3531  |    0    | 3767-000-0005--1-0-jetson-orin-nano-devkit- |

Aren’t you doing debian based OTA update, why you need to generate the bl_only_payload?

It seems there’s an known issue about bebian-based OTA, which might cause A_kernel-dtb update failed.
Please check if the Issue 3948609 in the following release note could help for your case,
Jetson-Linux r35.3.1 GA Release Notes (nvidia.com)

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