Remotely Updating the Rootfs for Jetson NX using NVMe

Hi there,

My aim is to be able to be able to remotely update the rootfs which I believe is possible from the documentation:
https://docs.nvidia.com/jetson/archives/r35.1/DeveloperGuide/text/SD/SoftwarePackagesAndTheUpdateMechanism.html#updating-jetson-linux-with-image-based-over-the-air-update

Specifically the section:

The OTA tool package can be used to create OTA payload package for … Updating the rootfs only

MyEquipment:

  • Jetson NX carrier board
  • Jetpack 5.0.2
  • Required to boot from an external NVMe SSD
  • Host computer Ubuntu 20.04

I followed workflow 4 in README_initrd_flash.txt to derive the following, to initially flash my NX:

sudo ROOTFS_AB=1 ./tools/kernel_flash/l4t_initrd_flash.sh \
      --external-device nvme0n1 \
      -c ./tools/kernel_flash/flash_l4t_nvme_rootfs_ab.xml \
      -S 8GiB  --showlogs \
      jetson-xavier-nx-devkit-emmc external

I booted it up and went through the initial setup, so at this point I believe I have a jetson that would be capable of receiving OTA.

Now if we move to my build server I built a new rootfs image, which would be the payload to send OTA. So I tried this:

sudo ROOTFS_AB=1 BOARDID=3668 FAB=100 BOARDSKU=0001 ./tools/kernel_flash/l4t_initrd_flash.sh \
      --external-device nvme0n1 \
      -S 8GiB \
      -c ./tools/kernel_flash/flash_l4t_nvme_rootfs_ab.xml \
      --no-flash \
      jetson-xavier-nx-devkit-emmc \
      external

This completed successfully, but it’s here that I start to get stuck.

I tried running the following, assuming that the rootfs image was bootloader/system.img

sudo -E ./tools/ota_tools/version_upgrade/l4t_generate_ota_package.sh -sr -f bootloader/system.img jetson-xavier-nx-devkit-emmc R32-7

Which gave the output:

SUCCESS: generate binaries for OTA "boardid=3668;fab=100;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1;signed_img_dir=images-R35-ToT"
SUCCESS: generate binaries for OTA "boardid=3668;fab=100;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R32i;rootdev=mmcblk0p1;signed_img_dir=images-R32i"
SUCCESS: generate binaries for OTA "boardid=3668;fab=100;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R32x-R35i;rootdev=mmcblk0p1;signed_img_dir=images-R32x-R35i"
SUCCESS: generate binaries for OTA "boardid=3668;fab=100;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R35A-R35i;rootdev=mmcblk0p1;signed_img_dir=images-R35A-R35i"
SUCCESS: generate binaries for OTA "boardid=3668;fab=301;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xavier-nx-devkit-emmc;rootdev=mmcblk0p1;signed_img_dir=images-R35-ToT"
SUCCESS: generate binaries for OTA "boardid=3668;fab=301;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R32i;rootdev=mmcblk0p1;signed_img_dir=images-R32i"
SUCCESS: generate binaries for OTA "boardid=3668;fab=301;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R32x-R35i;rootdev=mmcblk0p1;signed_img_dir=images-R32x-R35i"
SUCCESS: generate binaries for OTA "boardid=3668;fab=301;boardsku=;boardrev=;fuselevel_s=1;chiprev=2;board=jetson-xnx-devkit-emmc-R35A-R35i;rootdev=mmcblk0p1;signed_img_dir=images-R35A-R35i"

mount: /home/sr/jetson_setup/vc_mipi_nvidia/build/XavierNXSD_35.1.0/Linux_for_Tegra/R32x_R35-ToT_OTA/sysimg_tmp: wrong fs type, bad option, bad superblock on /dev/loop8, missing codepage or helper program, or other error.
Failed to mount /home/sr/jetson_setup/vc_mipi_nvidia/build/XavierNXSD_35.1.0/Linux_for_Tegra/bootloader/system.img.raw

but the error at the end suggests that I have the wrong file system type. Could you advise please on how to proceed?

Hi there,

Is there any update regarding this please?

Kind regards,
chh

There is no update from you for a period, assuming this is not an issue any more.
Hence we are closing this topic. If need further support, please open a new one.
Thanks

Sorry for the late response, is this still an issue to support? Thanks