Image based OTA update via golden image

topic still relevant, up

Do you mean that this custom carrier board can use jetson-orin-nano-devkit as board config to be flashed?
Before you perform OTA update, I would suggest you confirming that this board can be flashed and boot up with jetson-orin-nano-devkit as board config in both JP5.1.3 and JP6.1.

L4TLauncher: Attempting Direct Boot
EFI stub: Booting Linux Kernel...
EFI stub: ERROR: Invalid header detected on UEFI supplied FDT, ignoring ...
EFI stub: Generating empty DTB

From the log you shared, it seems the DTB cannot be found.

Jetson UEFI firmware (version 202210.4-a5ac12d7-dirty built on 2024-02-27T13:00:

I would also like to know if you have replaced bootloader with custom UEFI binary.

Do you mean that this custom carrier board can use jetson-orin-nano-devkit as board config to be flashed?

About flashed I am not sure, I used special config from them recomputer-orin-j401, but custom BSP maintainer said, they tested OTA 5.1.3 → 6.0 via jetson-orin-nano-devkit and it did worked, I have tho 6.1 but minor patch should not be a problem?

I would suggest you confirming that this board can be flashed and boot up with jetson-orin-nano-devkit as board config in both JP5.1.3 and JP6.1.

For J5.1.3 was used this config p3509-a02+p3767-0000 from official nvidia bsp, custom board supported it ( maybe even support now )

For J6 was created this config recomputer-orin-j401

So, I am not sure if my board support default devkit config, but here their answer about it

From the log you shared, it seems the DTB cannot be found.

How I can find which one is missing?

I would also like to know if you have replaced bootloader with custom UEFI binary.

Yes, was created modified UEFI with removed network boot options, it can be overwritten by golden image now ( if its possible ) as in new UEFI there is no such problem anymore

You should use the exact same board config for both flash and OTA package.
(i.e. if you use jetson-orin-nano-devkit.conf to flash the board, you should use the same board config to generate OTA package)

So, it is not the expected usage to me since OTA tool will check the board spec from the board and the one specified during OTA update.

I think golden image only including the data from rootfs rather than bootloader(UEFI).

Yeah, but if board it self are support it ( from Seeed words ) we can ignore this check, right? How I understood they just make an human readable alias for new jetpack with additional dtb files

I think golden image only including the data from rootfs rather than bootloader(UEFI).

I believe OTA bring new bootloader by default, as this options are available for OTA package

As a separate solution, I have ready MFI package with J6, is it possible to use with OTA? so it just overwrite everything on device by MFI package, but remotely?

As my understanding, there’s a board spec(ota_board_specs.conf) in ota tool and it will check if the board(to perform OTA update) is valid(in the list) before OTA update process.
I’m not clear about why you can ignore this check, maybe there’re some customizations have been done?
If so, you can ask them for details since we’ve not verified them.

Correct. OTA package will include all contents including bootloader, kernel, rootfs.
What I mean is that bootloader is not included in golden image. (system.img.raw)

MFI package is only available for using USB-C cable to flash.
For OTA, please refer to Image_based_OTA_Examples.txt.

OTA tools are official, I modified line in OTA scripts to ignore if config name does not match, its probably not possible to make them matchable, as Seeed says its fine

I am a bit lost at this point, trying to check DTB problem

J5.1.3:

/boot/dtb/kernel_tegra234-p3767-0003-p3509-a02.dtb

cat /boot/extlinux/extlinux.conf
TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      FDT /boot/dtb/kernel_tegra234-p3767-0003-p3509-a02.dtb
      INITRD /boot/initrd
      APPEND ${cbootargs} root=PARTUUID=d3580ebd-6ca0-4331-b02e-f54ba38ef076 rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 net.ifnames=0 nospectre_bhb

J6 are extlinux config not even pointing to FDT file

/boot/dtb/kernel_tegra234-j401-p3768-0000+p3767-0003-recomputer.dtb

$ cat /boot/extlinux/extlinux.conf
TIMEOUT 30
DEFAULT primary

MENU TITLE L4T boot options

LABEL primary
      MENU LABEL primary kernel
      LINUX /boot/Image
      INITRD /boot/initrd
      APPEND ${cbootargs} root=PARTUUID=29e82608-5415-4a34-b0cc-96a3d0151c1b rw rootwait rootfstype=ext4 mminit_loglevel=4 console=ttyTCU0,115200 firmware_class.path=/etc/firmware fbcon=map:0 nospectre_bhb video=efifb:off console=tty0

Please refer to DTB Support for the DTB loading in JP6.
DTB is packaged with UEFI during flash and it would be loaded if FDT is not specified.
As a result, you can also add FDT entry back in extlinux.conf to assign the DTB file.

I am a bit far from such deeper knowledge, but trying to understand:

in J6 DTB can be packaged in UEFI, but UEFI it self remain old, during boot: Jetson UEFI firmware (version 202210.4-a5ac12d7-dirty built on 2024-02-27T13:00: 14+00:00) means during OTA, UEFI update actually failed, and then when system try to boot, think UEFI are new but there is no DTB packaged and it crashed? if my conclusions are true:

  1. I have to search why UEFI update failed?
  2. or way to fix missing DTB by manually set it in extlinux.conf?

You can check the full serial console log to know if UEFI has been updated.
There should be a progress bar in UEFI during update.
Or you can try to perform capsule update only to update bootloader.

I’m not sure if adding FDT entry in extlinux.conf could fix your OTA update issue.

Back to my previous suggestion, have you tried using jetson-orin-nano-devkit as board config to flash and boot up successfully with both JP5.1.3 and JP6.1?

Back to my previous suggestion, have you tried using jetson-orin-nano-devkit as board config to flash and boot up successfully with both JP5.1.3 and JP6.1?

Not yet, I will try to test it and comeback with update, thank you for help