Create bl_update_payload for cusom board

Hi all,

I came to know that the bootloader deb package updates the kernel-dtb partition using the bl_update_payload.
I want to create bl_update_payload for my custom board to update the content in the kernel-dtb partition.
Is there any procedure that I can follow to create bl_update_payload for a custom board?

Could someone help with the above issue…

Thanks
Deepika.S

Hi @WayneWWW

Could you please help me on the above issue…

Thanks
deepika.s

Maybe read the document first.

https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/bootloader_update_agx_tx2.html#wwpID0E0NB0HA

Thanks for your response @WayneWWW

I tried to create the bl_update_payload using the steps mentioned in the document for the custom board and created a deb package using the nvdebrepack.sh script. But trying to install the deb package gives the following error.

$ sudo dpkg -i nvidia-l4t-bootloader_32.5.1-20210302195856+example0_arm64.deb
Selecting previously unselected package nvidia-l4t-bootloader.
(Reading database … 139235 files and directories currently installed.)
Preparing to unpack nvidia-l4t-bootloader_32.5.1-20210302195856+example0_arm64.deb …
Unpacking nvidia-l4t-bootloader (32.5.1-20210302195856+example0) …
Setting up nvidia-l4t-bootloader (32.5.1-20210302195856+example0) …
3668----1–jetson-xavier-nx-devkit-emmc-mmcblk0p1
Starting bootloader post-install procedure.
rootfs AB is not enabled.
ERROR. Procedure for bl_update_payload update FAILED.
Cannot install package. Exiting…
dpkg: error processing package nvidia-l4t-bootloader (–install):
installed nvidia-l4t-bootloader package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
nvidia-l4t-bootloader

Regards
deepika.s

Could you use the bup and bl_update_payload first? Do not use debian package.

Thanks for your response @WayneWWW ,

I thought bup and bl_update_payload are same…
I am sorry, I am not able to understand what you are saying. Could you please explain me again?

Regards,
deepika.s

I don’t think the document asking you to use nvdebrepack.sh and debian package.

That was what I wanted to say. Just verify the bup with nv_update_engine and see if your dtb will be updated.

Thanks for your response @WayneWWW ,

I generated the bl_upload_payload using the command “sudo ./build_l4t_bup.sh mmcblk0p1”

steps followed:

  1. $ sudo nv_update_engine –-enable-ab
  2. $ scp <host_loc:bl_update_payload> /opt/ota_package/t19x/
  3. $ sudo nv_update_engine -i 2>&1 | tee nv_update_engine.log

In the log file I find error and no partition is being written. Could you please help me with the issue…

I have attached the log file. PFA
nv_update_engine.log (1.4 KB)

Thanks in advance

Regard,
deepika.s

Hi,

Could you share the result of below?

cat /etc/nv_boot_control.conf

Thanks for your response @WayneWWW

$ cat /etc/nv_boot_control.conf
TNSPEC 3668-200-0001-G.0-1-2-p3449-0000+p3668-0001-qspi-emmc-mmcblk0p1
COMPATIBLE_SPEC 3668----1–jetson-xavier-nx-devkit-emmc-mmcblk0p1
TEGRA_CHIPID 0x19
TEGRA_OTA_BOOT_DEVICE /dev/mtdblock0
TEGRA_OTA_GPT_DEVICE /dev/mtdblock0

Regards,
deepika.s

Hi,

It looks like the BUP has some problem.Please run “./BUP_generator.py -c your_bl_update_payload” in the host device in Linux_for_Tegra/bootloader/, and post the output messages.

Thanks for your reply @WayneWWW ,

$ ./BUP_generator.py -c payloads_t19x/bl_update_payload
BLOB PATH:
Linux_for_Tegra/bootloader/payloads_t19x/bl_update_payload

BLOB HEADER:
Magic: NVIDIA__BLOB__V2
Version: 0x00020000
Blob Size: 48,649,830 bytes
Header Size: 48 bytes
Entry Count: 21 partition(s)
Type: 0 (0 for update, 1 for BMP)
Uncompressed
Blob Size: 48,649,830 bytes
Accessory: 0x0000000000000000

ENTRY TABLE:
| part_name | offset | part_size | version | op_mode | tnspec |
| spe-fw | 2568 | 94960 | 2 | 0 | |
| mb2 | 97528 | 171856 | 2 | 0 | |
| cpu-bootloader | 269384 | 446560 | 2 | 0 | |
| secure-os | 715944 | 402368 | 2 | 0 | |
| bpmp-fw | 1118312 | 856352 | 2 | 0 | |
| eks | 1974664 | 5136 | 2 | 0 | |
| adsp-fw | 1979800 | 81312 | 2 | 0 | |
| rce-fw | 2061112 | 273168 | 2 | 0 | |
| mts-preboot | 2334280 | 24016 | 2 | 2 | |
| mts-mce | 2358296 | 143200 | 2 | 2 | |
| mts-proper | 2501496 | 3430416 | 2 | 2 | |
| sc7 | 5931912 | 65504 | 2 | 2 | |
| bpmp-fw-dtb | 5997416 | 172448 | 2 | 0 | 3668-200-0001-G.0-1-2-p3449-0000+p3668-0001-qspi-emmc-mmcblk0p1 |
| bootloader-dtb | 6169864 | 207408 | 2 | 0 | 3668-200-0001-G.0-1-2-p3449-0000+p3668-0001-qspi-emmc-mmcblk0p1 |
| VER | 6377272 | 102 | 2 | 0 | 3668-200-0001-G.0-1-2-p3449-0000+p3668-0001-qspi-emmc-mmcblk0p1 |
| mb1 | 6377374 | 248928 | 2 | 2 | 3668-200-0001-G.0-1-2-p3449-0000+p3668-0001-qspi-emmc-mmcblk0p1 |
| BCT | 6626302 | 2888 | 2 | 2 | 3668-200-0001-G.0-1-2-p3449-0000+p3668-0001-qspi-emmc-mmcblk0p1 |
| MB1_BCT | 6629190 | 27888 | 2 | 0 | 3668-200-0001-G.0-1-2-p3449-0000+p3668-0001-qspi-emmc-mmcblk0p1 |
| MEM_BCT | 6657078 | 198656 | 2 | 0 | 3668-200-0001-G.0-1-2-p3449-0000+p3668-0001-qspi-emmc-mmcblk0p1 |
| kernel | 6855734 | 41586688 | 2 | 0 | |
| kernel-dtb | 48442422 | 207408 | 2 | 0 | 3668-200-0001-G.0-1-2-p3449-0000+p3668-0001-qspi-emmc-mmcblk0p1 |

Thanks in advance

Regards,
deepika.s

Hi,

Please use “jetson-xavier-nx-devkit-emmc" to generate the BUP, not the “p3449-0000+p3668-0001-qspi-emmc

Hi @WayneWWW ,
I tried to flash the board with 32.4.2 image by using jetson-xavier-nx-devkit-emmc and generate BUP with jetson-xavier-nx-devkit-emmc. I observed the same error.

I have attached the details.

log.txt (4.7 KB)

Thanks in advance.

Regards,
deepika.s

Hi,

/opt/ota_package/bl_update_payload

Is this file on your device really the one you uploaded from host?

Hi @WayneWWW ,

Yes. The bl_update_payload on the board in the path /opt/ota_package/t19x/ is the one which I generated from the host PC, by connecting the board in force recovery mode to the PC.
I also verified it with the md5sum.

Regards,
deepika.s

Yes, that is cause of this issue. Check the path you just said and my previous comment and you will see that…

Thanks for your response @WayneWWW

By copying the bl_update_payload to /opt/ota_package/ the command “$ sudo nv_update_engine -i 2>&1 | tee nv_update_engine.log” was successful but after the reboot the hdmi was not up.

I have attached the logs. PFA
log.txt (3.3 KB)

regards,
deepika.s

Is you NX a A03 version NX? We have a known issue about it. Maybe you can share the dmesg for us to check if you hit that known issue.

Thanks for your response @WayneWWW ,

I have attached the dmesg, PFA
dmesg_hdmi_acm.txt (54.4 KB)

Regards,
deepika.s