Jetson Nano don't working normally after OTA update

Yes

I try to 32.6.1 version, generate BUP file is success but there is error when i update to device:
ac@vsm:/usr/sbin$ sudo ./l4t_payload_updater_t210 /home/ac/Downloads/bl_update_payload
BLOB PATH:
/home/ac/Downloads/bl_update_payload

SPEC: 3448-400-0002-F.0-1-0-jetson-nano-emmc-mmcblk0p1
Compatible SPEC: 3448-300-0002–1–jetson-nano-devkit-emmc-mmcblk0p1

Error. Invalid input blob file.
Input magic: NVIDIA__BLOB__V2
Expected magic: NVIDIA__BLOB__V2
Input version: 0x01020621
Expected version: 0x00020000
Input type: 0
Expected type: 0 (type 1 BMP blobs are not currently supported)
No changes have been made. Exiting…

What was the software version on your jetson nano?

it is old version. Because we customize software, so i can not update it to new version. Do you have patch for rel-32.5.1?

Please apply this patch to your rel-32.5.1 Linux_for_Tegra/bootloader/l4t_bup_gen.func

diff --git a/t186/BUP/l4t_bup_gen.func b/t186/BUP/l4t_bup_gen.func
index 9db4803..a0817d5 100644
--- a/t186/BUP/l4t_bup_gen.func
+++ b/t186/BUP/l4t_bup_gen.func
@@ -1,4 +1,4 @@
-# Copyright (c) 2017-2020, NVIDIA CORPORATION.  All rights reserved.
+# Copyright (c) 2017-2021, NVIDIA CORPORATION.  All rights reserved.
 #
 # NVIDIA CORPORATION and its licensors retain all intellectual property
 # and proprietary rights in and to this software, related documentation
@@ -147,9 +147,6 @@
 		'part_name=RP4; part_type=xusb; part_spec=${_common_spec};    part_file=$(ls rp4.blob 2> /dev/null || echo "")'
 	)
 
-	# For Jetson TX1, must use bl_update_payload to update bootloader.
-	local partitions_jetson_tx1=()
-
 	# For Jetson Nano QSPI SD, we can use all payloads to update corresponding partitions.
 	local _nano_qspi_sd="jetson-nano-devkit-mmcblk0p1"
 	local partitions_jetson_nano_qspi_sd=(
@@ -174,15 +171,12 @@
 		'part_name=RP4; part_type=nano_qspi_bl; part_spec=${_common_spec};    part_file=$(ls rp4.blob 2> /dev/null || echo "")'
 	)
 
-	# For Jetson Nano eMMC, it's same as TX1, must use bl_update_payload to update bootloader.
-	local partitions_jetson_nano_emmc=()
+	local partitions_t210ref=("${partitions_t210ref_common[@]}")
 
-	local partitions_t210ref=(
-		"${partitions_t210ref_common[@]}"
-		"${partitions_jetson_tx1[@]}"
-		"${partitions_jetson_nano_qspi_sd[@]}"
-		"${partitions_jetson_nano_emmc[@]}"
-	)
+	# Only nano-devkit uses "partitions_jetson_nano_qspi_sd"
+	if [[ "${_sw_spec}" == *"${_nano_qspi_sd}" ]]; then
+		partitions_t210ref+=("${partitions_jetson_nano_qspi_sd[@]}")
+	fi
 
 	# for binary common for different operating mode, op_mode = 0
 	# for binary different for different operating mode:

Generate BUP file is success with your patch but there is error when update to device as below:
ac@vsm:/usr/sbin$ sudo ./l4t_payload_updater_t210 /home/ac/Downloads/bl_update_payload
BLOB PATH:
/home/ac/Downloads/bl_update_payload

SPEC: 3448-400-0002-F.0-1-0-jetson-nano-emmc-mmcblk0p1
Compatible SPEC: 3448-300-0002–1–jetson-nano-devkit-emmc-mmcblk0p1

Error. Cannot find matched SPEC in blob.
No changes have been made. Exiting…

Hi WayneWWW,
Do you have any suggestion for this error?

Can you add FAB= 300 in your creating BUP command as a paremeter?

I tried it but error is still happen.
I would like share to you log for generate BUP.
bup_generate_log.txt (11.0 KB)

Please share current info from /etc/nv_boot_control.conf

and also the error log when you run bup update.

info from /etc/nv_boot_control.conf:
ac@vsm:/etc$ cat nv_boot_control.conf
TNSPEC 3448-400-0002-F.0-1-0-jetson-nano-emmc-mmcblk0p1
COMPATIBLE_SPEC 3448-300-0002–1–jetson-nano-devkit-emmc-mmcblk0p1
TEGRA_CHIPID 0x21
TEGRA_OTA_BOOT_DEVICE /dev/mmcblk0boot0
TEGRA_OTA_GPT_DEVICE /dev/mmcblk0boot1

Log run update:
ac@vsm:/usr/sbin$ sudo ./l4t_payload_updater_t210 /home/ac/Downloads/bl_update_payload
BLOB PATH:
/home/ac/Downloads/bl_update_payload
SPEC: 3448-400-0002-F.0-1-0-jetson-nano-emmc-mmcblk0p1
Compatible SPEC: 3448-300-0002–1–jetson-nano-devkit-emmc-mmcblk0p1
Error. Cannot find matched SPEC in blob.
No changes have been made. Exiting…

Please check if this can help.

Also, please make sure that your need to use the same board config name when you create the BUP. I mean you need to use the same one as what you used in flash.sh.

I did as step below:

  1. download l4t_payload_updater_t210.py from the NVIDIA Developer web site’s L4T 32.5 Archive to the Linux_for_Tegra directory
  2. Run cp
    root@thang-Vostro-7580:/home/thang/Projects/FW/VSM_F_NonConfidential_AccessControl_DVT2_1.0.4_20210714_01/Linux_for_Tegra# sudo cp l4t_payload_updater_t210.py rootfs/usr/sbin/l4t_payload_updater_t210
    root@thang-Vostro-7580:/home/thang/Projects/FW/VSM_F_NonConfidential_AccessControl_DVT2_1.0.4_20210714_01/Linux_for_Tegra# sudo chmod a+x rootfs/usr/sbin/l4t_payload_updater_t210
  3. Flash FW to device use command: sudo ./flash.sh jetson-nano-emmc mmcblk0p1
  4. force device to recovery mode → use command: “sudo ./build_l4t_bup.sh jetson-nano-emmc mmcblk0p1” for generate BUP file.
  5. Copy BUP file to device and run command “sudo ./l4t_payload_updater_t210 /home/ac/Downloads/bl_update_payload”
    Error happen:
    ac@vsm:/usr/sbin$ sudo ./l4t_payload_updater_t210 /home/ac/Downloads/bl_update_payload
    BLOB PATH:
    /home/ac/Downloads/bl_update_payload
    SPEC: 3448-400-0002-F.0-1-0-jetson-nano-emmc-mmcblk0p1
    Compatible SPEC: 3448-300-0002–1–jetson-nano-devkit-emmc-mmcblk0p1
    Error. Cannot find matched SPEC in blob.
    No changes have been made. Exiting…

Please help me for review steps because error is still happen

Can you just move to rel-32.6.1 and do the same steps? No need to use patch, no need to download any script. Just use the native BUP tool.

Hi WayneWWW,
I tried to update to rel-32.6.1 but error is still happen.
So, Could you please help me for check again?
Thank you

Can you describe how did you flash your board and how did you generate BUP on rel-32.6.1?

Also, are you trying this with pure BSP from sdkmanager? or you have modified something?

Are we still doing this on devkit? or it is a custom board?

I use sdkmanager for download OS and use command sudo ./flash.sh jetson-nano-emmc mmcblk0p1 for flash to device.
I force device to recovery mode and run command “sudo ./build_l4t_bup.sh jetson-nano-emmc mmcblk0p1” for generate BUP file
BUP file is generated success on Linux_for_Tegra/bootloader/payloads_t21x
I copy bl_update_payload file to device and run command “sudo ./l4t_payload_updater_t210 /Downloads/bl_update_payload” for update

Because after flash new OS, i can not ssh to device. So, i copied rootfs/etc folder from our custom OS to new OS for flashing.

Are we still doing this on devkit? or it is a custom board?
we are doing with custom board

Do you have devkit to validate your process?

Any update? Still an issue?

Sorry, I can not borrow devkit now for confirm process due to the impact of covid.