DTB and kernel image updation in jetson TX2 NX using OTA safely

Hi All,

I have one doubt regarding the OTA upgrade.Is it possible to update kernel image and dtb alone(without rootfs) in Jetson TX2 NX using OTA(image based upgradation) failsafe method?

hello joseneethu75,

may I know what’s the actual use-case, the OTA upgrade won’t erase your user-space contents.
however, OTA upgrade will moving the BSP to the target Jetpack version, those changes will discard if you’re having customize device tree/ kernel modification.

Hi JerryChang,
Thank you for the response.I need to update kernel and dtb wihout using the flash.sh script and it should be a safe method .that is ,if updating fails due to any power failure,the nvidia will move to unbootable state .That should not happen.In case of kernel image there is a provision to copy the image to /boot.But is there any way to update dtb other than flash.sh script method?I have read about OTA in the document.Since emmc has only 16 GB I can’t do the complete image updation using OTA.So is it possible to update kernel image and dtb alone using OTA?

hello joseneethu75,

there’s cboot functionality to load kernel image and device tree via filesystem,
you may check /boot/extlinux/extlinux.conf and adding LINUX entry to specify the path to the kernel image, and please have FDT entry for the device tree blob.
please see-also developer guide, Kernel Boot Sequence Using extlinux.conf for reference,
thanks

Hi @JerryChang ,

I will check this.Just for confirmation ,can we do the upgrade (both kernel and dtb) via OTA?

hello joseneethu75,

as I mentioned in the previous comments, OTA upgrade will moving the BSP to the target Jetpack version,
for example, from r32.6.1 to r32.7.1. this moving both the both kernel and dtb to target release version with native JetPack release binary.

Hi @JerryChang ,

I checked the above link.But what can we do if any failure(image got corrupted ) comes while updating dtb and kernel image using extlinux.conf ?

hello joseneethu75,

as you can see in the configuration file, extlinux.conf. there’re LABEL to define the boot options.
suggest you should keep default kernel/dtb binary file as primary, and create a new label to include updated binary.
you’ll see L4T boot options while system boot-up (you’ll need serial console), and you may interrupt the process for choosing your labels;
once the update failure, it’ll kernel crash, system reboot, and fall back to boot option selection, then you may select primary label to use the default binary file.

Hi @JerryChang ,

In our case we don’t have an option for UART console.we have only the USB option to access NVIDIA Jetson TX2 NX .So while upgrading kernel -dtb if any failure comes ,we don’t have option to select primary label to use the default binary file .Can we automate this.ie if any failure comes .nvidia detects it and reboot with default binary file ?

hello joseneethu75,

please remove the LINUX entry from the extlinux.conf file, then you’ll have kernel image loads from partitions.

there’s Bootloader Update and Redundancy to provide a safe update, it reduce the risk of boot failure after a Bootloader update.
this should by default flashed with A/B partition layouts, both A and B include the same image,
you may also check $ ls -al /dev/disk/by-partlabel/ for all partition labels,
for example, there’re kernel partitions, kernel -> ../../mmcblk0p28 and kernel_b -> ../../mmcblk0p29 for having kernel images, you may replace your customized for booting from A partition, and if system fails to boot from the slot-A, it’ll switch to slot-B.

please see-also Running the Update Engine to launch the nv_update_engine tool to enable A/B redundancy.
thanks

Hi @JerryChang ,

Thank you for the response.I will check and get back to you.

Hi @JerryChang ,

If we have pinmux changes is there any methods to update as dtb and kernel image?

hello joseneethu75,

pinmux changes is using the cfg file, you’ll need to perform full flash to update the cfg file.

Hi @JerryChang ,

Thank you for the response.