How to flash the Yocto-Based compiled images into "Jetson Orin Nano Super Developer Kit" ? Not able to flash the SSD for the yocto compiled images

Hi Team,

Using this Link:- GitHub - OE4T/tegra-demo-distro: Reference/demonstration distro for meta-tegra · GitHub

We have build the image (demo-image-full) using yocto-build system for the “Jetson Orin Nano Super Developer Kit” using steps mentioned in above link.

During Image-Building i have selected machine type is “p3768-0000-p3767-0003” based on EVK information.
(Command:- . ./setup-env --machine p3768-0000-p3767-0003 build-0003)

In final package below files created in build path:- “build/tmp/deploy/images/p3768-0000-p3767-0003/”

“demo-image-full-p3768-0000-p3767-0003.rootfs-20260605013044.tegraflash-tar.zst”

Using below command:-

unzstd demo-image-full-jetson-orin-nano-devkit.rootfs-20260603190504.tegraflash-tar.zst
tar xf demo-image-full-jetson-orin-nano-devkit.rootfs-20260603190504.tegraflash-tar

Now untar folder having below script for flashing:-

==================

boardvars.sh
doexternal.sh
doflash.sh
generate_bup_payload.sh
l4t_sign_image.sh
tegra-flash-helper.sh

==================

We have put the device in recovery-mode and using “doflash.sh” & “doexternal.sh” script try to flash the EVK-Kit (SSD-attached) but not get any success in it.

Please check below script file:-

cat doexternal.sh

#!/bin/sh
MACHINE=p3768-0000-p3767-0003 BOARDID=${BOARDID:-3767} FAB=${FAB:-300} CHIPREV=${CHIPREV:-0} BOARDSKU=${BOARDSKU:-0003} ./tegra-flash-helper.sh --sdcard -B 4096 -b demo-image-full --external-device external-flash.xml.in tegra234-p3768-0000+p3767-0003-nv-super.dtb tegra234-p3767-0001-sdram-l4t.dts gbe-uphy-config-8,hsstp-lane-map-3,hsio-uphy-config-0 boot.img demo-image-full.ext4 “$@”

============================================================

cat doflash.sh
#!/bin/sh
MACHINE=p3768-0000-p3767-0003 ./tegra-flash-helper.sh flash.xml.in tegra234-p3768-0000+p3767-0003-nv-super.dtb tegra234-p3767-0001-sdram-l4t.dts gbe-uphy-config-8,hsstp-lane-map-3,hsio-uphy-config-0 boot.img demo-image-full.ext4 “$@”

============================================================

Kindly let us know how to flash the EVK for SSD using Yocto-Based compiled Images. Let us know if we need to configure during compile time or flashing time. Please help us on this.

*** Please note that this reply is generated by LLM automatically ***

Based on the provided context, it appears that you are trying to flash a custom image onto a Jetson Orin Nano Super Developer Kit using Yocto-based compiled images. The images were built using the demoimage-full recipe, and you have selected the machine type as p3768-0000-p3767-0003 based on the EVK information.

The issue you are facing is that you are unable to flash the image onto the EVK kit’s SSD using the doflash.sh and doexternal.sh scripts.

To resolve this issue, you need to follow the correct flashing procedure for the Jetson Orin Nano Super Developer Kit. Here are the steps you can follow:

  1. Recovery Mode: Make sure the device is in recovery mode. You can do this by pressing the recovery button on the device while powering it on.

  2. Flash Command: Use the flash.sh command to flash the image onto the device. The command should be in the following format:

sudo ./flash.sh -K <kernel_image> -k <kernel_dtbs> -C <bootloader_dtbs> -c -S <system_image> -s <system_dtbs> -u <uefi_keys> -U <uefi_enc> <storage_device>

   Replace the placeholders with the actual file names and paths.

   For example:
   ```bash
sudo ./flash.sh -K kernel -k tegra234-p3767-0003-sdram-l4t.dtb -C tegra234-p3768-0000-p3767-0003-nv-super.dtb -c bootloader -S system.img -s tegra234-p3767-0003-sdram-l4t.dtb -u uefi_keys.conf -U uefi_enc.key jetson-orin-nano-devkit nvme0n1p1
  1. External Storage Device: If you are using an external storage device, make sure to specify the correct device name in the flash.sh command. In your case, it seems like you are using an SSD attached to the EVK kit, so you should use nvme0n1p1 as the storage device.

  2. UEFI Keys and Encryption: Make sure to provide the correct UEFI keys and encryption files in the flash.sh command. You can find these files in the oem_keys directory.

  3. Device Tree: Make sure to use the correct device tree files for your device. In your case, you are using the tegra234-p3767-0003-sdram-l4t.dtb and tegra234-p3768-0000-p3767-0003-nv-super.dtb files.

By following these steps, you should be able to flash the custom image onto the Jetson Orin Nano Super Developer Kit’s SSD using the Yocto-based compiled images.

Comparison with Provided Scripts:

The doflash.sh and doexternal.sh scripts you provided seem to be incomplete and do not match the correct flashing procedure for the Jetson Orin Nano Super Developer Kit. The flash.sh command I provided earlier is the recommended way to flash images onto the device.

Configuration during Compile Time:

You do not need to configure anything during compile time to flash the image onto the SSD. The configuration is done during the flashing process using the flash.sh command.

Configuration during Flashing Time:

You need to provide the correct configuration files and options during the flashing process using the flash.sh command. This includes specifying the correct device tree files, UEFI keys, and encryption files.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

Hi

We have checked using below available options and image-file and still we are facing issue in flashing.

sudo ./flash.sh -K kernel/Image -C tegra234-p3768-0000+p3767-0003-nv-super.dtb -c bootloader/boot.img jetson-orin-nano-devkit nvme0n1

Error:-

======================

/Linux_for_Tegra/bootloader/flash_win.bat
*** Flashing target device started. ***
Traceback (most recent call last):
File “~/Linux_for_Tegra/bootloader/./tegraflash.py”, line 1450, in
exports[‘–cfg’] = tegraflash_update_img_path(exports[‘–cfg’], exports[‘–image_dirs’])
File “~/Linux_for_Tegra/bootloader/tegraflash_internal.py”, line 4979, in tegraflash_update_img_path
xml_tree = ElementTree.parse(file)
File “/usr/lib/python3.10/xml/etree/ElementTree.py”, line 1222, in parse
tree.parse(source, parser)
File “/usr/lib/python3.10/xml/etree/ElementTree.py”, line 580, in parse
self._root = parser._parse_whole(source)
File “/usr/lib/python3.10/codecs.py”, line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x80 in position 11: invalid start byte
Failed flashing generic.

======================

No system.img file available and other related “**UEFI Keys” . So using available images and dtb try to flash “**Linux_for_Tegra/flash.sh” file.

We are using Ubuntu-Linux machine for flashing.

Additional-Point:-

We have also checked by using below command but same thing not able to flash the and error occured.

sudo ./flash.sh jetson-orin-nano-devkit nvme0n1

Error-Log:-

=================

Board ID(3767) version(300) sku(0003) revision(P.1)
Preset RAMCODE is 2
Chip SKU(00:00:00:D5) ramcode(2) fuselevel(fuselevel_production) board_FAB(300)
Error: Using a flash partition table config file of SD card, ~/Linux_for_Tegra/bootloader/generic/cfg/flash_t234_qspi_sd.xml, but the target board does not have SD card
To bypass this error, please add your board information to the board_with_sdcard array in this script.

=================

We have already build for the machine “p3768-0000-p3767-0003” (BOARDSKU=0003) still checking for SD-Card. We need to flash SSD (NVMe).

Machine-Config File:- tegra-demo-distro/repos/meta-tegra/conf/machine/p3768-0000-p3767-0003.conf

Please provide solution flashing SSD (NVMe) for EVK for Compiled yocto-image.

Hi,
Please confirm if you run the commands to build yocto:

# Get the recipes
git clone https://github.com/OE4T/tegra-demo-distro.git -b scarthgap
cd tegra-demo-distro
git submodule update --init --recursive

# Build
. ./setup-env --machine jetson-orin-nano-devkit-nvme
bitbake demo-image-full

Hi @DaneLLL , We have follow below steps.

==========================

git clone https://github.com/OE4T/tegra-demo-distro.git
cd tegra-demo-distro
git submodule update --init --recursive
. ./setup-env --machine p3768-0000-p3767-0003
bitbake demo-image-full

==========================

We have used machine “p3768-0000-p3767-0003” as per the BOARDSKU and details on EVK. Is it correct or not ? Please let me know.

Please let me know if any issue in above mentioned steps or machine information.

Kindly let me know which build-directory we need to used for the flashing of NVMe-SSD after compiling image using yocto-build. Please provide steps and document to flash the NVMe-SSD.

We need to use this; “Yocto setup with meta-tegra (Jetson Linux release: R36.5.0 JetPack release: 6.2.2)” Kindly provide appropriate yocto-steps details for this.

As per you steps details; Why do we need to “scarthgap” specific branch for the “tegra-demo-distro.git” git repository???

Hi,
By default it contains config files for Orin Nano module in P3767-0005. Yo would need to customize it to include P3767-0003. Please refer to
Using Device Tree Overlays - OE4T Meta Tegra
tegra-demo-distro/layers/meta-tegrademo/recipes-bsp/tegrademo-devicetree at master · OE4T/tegra-demo-distro · GitHub

Hi @DaneLLL , We have selected option machine “p3768-0000-p3767-0003” from the “. ./setup-env --machine” option and then build the image. Is it correct way to set machine? Please provide input on this.

But my questions; How to flash compiled image on NVMe-SSD based EVK. Kindly let us know which image file, scripts and supported data required to flash NVMe-SSD using that compiled image. Need proper steps to flash the NVMe-SSD and boot the board with compiled image.

Please provide solution on this asap.

Thanks,

Hi,
Please try $ sudo ./initrd-flash:

$ sudo ./initrd-flash
Starting at 2026-06-12T11:16:30+08:00
Machine:       p3768-0000-p3767-0003
Rootfs device: nvme0n1p1
Found Jetson device in recovery mode at USB 3-11
== Step 1: Signing binaries at 2026-06-12T11:16:30+08:00 ==
== Step 2: Boot Jetson via RCM at 2026-06-12T11:16:53+08:00 ==
Found Jetson device in recovery mode at USB 3-11
== Step 3: Sending flash sequence commands at 2026-06-12T11:16:57+08:00 ==
Waiting for USB storage device flashpkg from 81907349.....[/dev/sdc]
Device size in blocks: 262144
Unmounted /dev/sdc.
== Step 4: Writing partitions on external storage device at 2026-06-12T11:17:08+08:00 ==
Waiting for USB storage device nvme0n1 from 81907349...[/dev/sdc]
Creating partitions
  [03] name=A_kernel start=0 size=262144 sectors
  [04] name=A_kernel-dtb start=0 size=1536 sectors
  [05] name=A_reserved_on_user start=0 size=64768 sectors
  [06] name=B_kernel start=0 size=262144 sectors
  [07] name=B_kernel-dtb start=0 size=1536 sectors
  [08] name=B_reserved_on_user start=0 size=64768 sectors
  [09] name=recovery start=0 size=163840 sectors
  [10] name=recovery-dtb start=0 size=1024 sectors
  [11] name=esp start=0 size=131072 sectors
  [12] name=recovery_alt start=0 size=163840 sectors
  [13] name=recovery-dtb_alt start=0 size=1024 sectors
  [14] name=esp_alt start=0 size=131072 sectors
  [15] name=UDA start=0 size=819200 sectors
  [16] name=reserved start=0 size=982016 sectors
  [01] name=APP start=0 size=29360128 sectors
  [02] name=APP_b start=0 size=29360128 sectors
Writing partitions
  Writing boot.img (size=48222208) to /dev/sdc3 (size=134217728)...
  Writing kernel_tegra234-p3768-0000+p3767-0003-nv-super.dtb (size=249899) to /dev/sdc4 (size=786432)...
  Writing boot.img (size=48222208) to /dev/sdc6 (size=134217728)...
  Writing kernel_tegra234-p3768-0000+p3767-0003-nv-super.dtb (size=249899) to /dev/sdc7 (size=786432)...
  Writing esp.img (size=67108864) to /dev/sdc11 (size=67108864)...
  Writing demo-image-full.ext4 (size=15032385536) to /dev/sdc1 (size=15032385536)...
  Writing demo-image-full.ext4 (size=15032385536) to /dev/sdc2 (size=15032385536)...


[OK: /dev/sdc]
== Step 5: Waiting for final status from device at 2026-06-12T11:56:50+08:00 ==
Waiting for USB storage device flashpkg from 81907349....[/dev/sdc]
Unmounted /dev/sdc.
Final status: SUCCESS
Successfully finished at 2026-06-12T11:56:55+08:00
Host-side log:              log.initrd-flash.2026-06-12-11.16.30
Device-side logs stored in: device-logs-2026-06-12-11.16.30

Thanks for this detail support.