Nvidia Jetson Orin Nano Devkit Notes

Nvidia Jetson Orin is the latest and greatest embedded platform from Nvidia, which comes in many different variations, depending on performance needed.

This wiki will be focused on:

  • Nvidia Jetson Orin 8GB SOM
  • Nvidia Jetson Orin Nano Developer Kit
  • Booting Yoe on the dev kit

Nvidia Jetson Orin Nano Developer Kit Getting Started Guide
Nvidia Jetson Orin Nano Developer Kit Carrier Board Specification

Dev Kit and Interface Layout:

Nvidia Jetson Orin Nano Block Diagram

Nvidia Jetson Orin Nano Carrier Board Placement - Top View

Nvidia Jetson Orin Nano Carrier Board Placement - Bottom View

40-Pin Exapansion Header

USB Console Access:

The dev kit doesn’t provide a USB console on the board for direct connection like most dev kits do. It instead brings out pins on the Button Header ( J14 ). You will need a USB to TTL cable to access the USB console port. I’ve been using this cable made by Adafruit from Amazon:
ADAFRUIT Industries 954 USB-to-TTL Serial Cable

NOTE: You will need a jumper cable to be able to connect pins 9 and 10 to force the system into USB recovery mode to flash the device bootloaders for booting a Yoe image

Yoe - Building yoe-simple-image to run on the dev kit

(See updated posts below.)

Many thanks to the folks at RidgeRun Embedded Linux Developer Connection. Found several of their wiki pages very helpful:
Setting up Yocto
Flashing the Jetson Platform

Yocto BSP layer for Nvidia Jetson Modules: meta-tegra

All MACHINE configurations and associated MACHINE level components are included in this layer so it was added as another source layer

Yoe Project Configuration:

One of the most important settings to getting to a bootable image was adding the tegra image types to the IMAGE_CLASS variable. This adds the tegraflash tarball that is used for both the initial flash of the SOM, as well as creating a bootable uSD card.
IMAGE_CLASSES:append = " image_types_tegra"

Create yoe-simple-image from bmoyers/jetson branch:

Source jetson devkit project: . envsetup.sh jetson-orin-nano-devkit
Build the image: bitbake yoe-simple-image

Unpacking the tegraflash

  • Create a temporary directory somewhere and cd into it
  • Copy yoe-simple-image-jetson-orin-nano-devkit.tegraflash.tar.gz to the tmp directory
  • Untar the archive:
    tar -xzvf yoe-simple-image-jetson-orin-nano-devkit.tegraflash.tar.gz

Flashing the uSD card to boot Yoe Linux

  • Insert a 32GB uSD card into the slot on the SOM (I have seen errors with bigger cards)
  • Connect USB console cable described above to connect to J14 the button header (Note this is a crossover cable so connect the TX to the dev kit RX, and the RX to the dev kit TX)
  • Use the jumper described above to connect pins 9 and 10 on J14 to put the device in FORCE_RECOVERY mode
  • Connect the power supply to the dev kit
  • Connect a USB C cable from the USB C connector on the dev kit to USB C port on computer. You should see something similar to this in dmesg:
[28355.858179] usb 7-2: new high-speed USB device number 5 using xhci_hcd
[28356.075177] usb 7-2: New USB device found, idVendor=0955, idProduct=7523, bcdDevice= 4.01
[28356.075179] usb 7-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[28356.075180] usb 7-2: Product: APX
[28356.075181] usb 7-2: Manufacturer: NVIDIA Corp.
  • In the tmp directory with the tegra flash components, run:
    sudo ./doflash.sh

If all goes well with the flash, your uSD will be updated, and you should see Yoe boot up in your USB console:

Yoe Linux 2023.06 jetson-orin-nano-devkit ttyTCU0

jetson-orin-nano-devkit login: root
root@jetson-orin-nano-devkit:~#

ITEMS REMAINING TO BE DONE:

  • How to flash NVMe drive and boot from it (Jetson does not have eMMC)
  • Create initramfs-image to match the rest of the yoe projects
  • Add Yoe updater support for rootfs provisioning, overlayfs, and firmware updates
2 Likes

The Orin image from Nvidia uses DT overlay files extensively:

There are over 100 files in the /boot dir …

How to hook up rPI FTDI cable to Jetson Orin module:

Jetson Orin Nano SOM documentation

This page has a nice comparison chart of various Jetson modules and prices:

Datasheet for Nano module:

Jetson_Orin_Nano_Series_DS-11105-001_v1.1.pdf (847.8 KB)

Partner products:

Advantech EPC-R7300

Posting this as an example that uses 4 PCIe busses.

image

NVIDIA Jetson Module Compatible: Jetson Orin™ NX 8GB/16GB and Nano 4GB/8GB

The Orin Nano SD slot is only populated on devkit SOMs – it is not available on production SOMs:

Here is meta-tegra notes on flashing the nano

I am unable to create SD card offline, perhaps it needs the device to be connected and SPI flashed first. Need to experiment.

I remember trying dosdcard.sh several times and in several different ways, none of which seemed to work. I always had to have the Jetson connected to my host machine via USB-C connection and run the doflash.sh.

If you figure out why this is, please share.

Found the problem with dosdcard.sh we need to do following.

Create a udev rule on build host

$ cat /etc/udev/rules.d/71-device-name.rules

# See - https://github.com/OE4T/tegra-demo-distro/blob/master/layers/meta-tegrademo/scripts/setup-udev-rules
# Jetson Nano
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0955", ATTRS{idProduct}=="7523", MODE="0660", TAG+="uaccess"

sudo udevadm control --reload

Now please disconnect/reconnect your device

Then add your username to disk group. So you can avoid need for sudo
while running doflash or dosdcard scripts. Running under sudo can be quite dangerous if accidentally device chosen is wrong one ( least the data disk on workstation )

sudo usermod -a -G disk kraj

The install these packages

sudo pacman -S dtc gptfdisk

gptfdisk is providing sgdisk utility which is needed to create GPT tables on SD card.

In the end logout of the system and log back in so new group permissions are added to the user credentials.

To flash yoe-simple-image to NVME SSD we need few changes.

Changed MACHINE setting in jetson-orin-nano-devkit-nvme

Then build image.

bitbake yoe-simple-image

Once done, put orin-nano in recovery mode.

mkdir /tmp/orin
cd /tmp/orin
tar xf /mnt/b/yoe/master/build/tmp/deploy/images/jetson-orin-nano-devkit-nvme/yoe-simple-image-jetson-orin-nano-devkit-nvme.rootfs.tegraflash.tar.gz
sudo ./initrd-flash

with latest Jetson SDK there is update mechanism for doing online update

https://docs.nvidia.com/jetson/archives/r35.2.1/DeveloperGuide/text/SD/Bootloader/UpdateAndRedundancy.html#generating-the-capsule-update-payload