The NVIDIA Jetson Orin Nano Developer Kit can boot from a Solid State Drive (SSD). You can set up your Orin Nano in under 45 minutes from the command line. Looky here:
The Jetson Orin Nano Developer Kit has two M.2 Key M slots which allow installation of PCIe SSDs. You can boot the system from the SSD, bypassing the SD card. A SSD is much faster than the default storage medium of a SD card (5-10X in practice).
Previous Jetson production modules in the Nano/NX form factor use eMMC for their main drive storage. eMMC is a type of flash memory. The new Orin Nano and Orin NX forego the eMMC, and boot directly from a SSD attached via a M.2 Key M slot. This brings along a couple of changes. First, there is a small amount of flash memory, called QSPI, on the Jetson module which holds the bootloader and hardware configuration details. Here’s an article which speaks more in depth about that. QSPI is normally used in the SD card version of the previous generation Jetson Dev Kits. QSPI is present on all Orin Nano/NX modules.
The second change is the lack of eMMC on the production modules. With ever increasing storage demands for Deep Learning tasks, many users were running out of memory on their eMMC drives. Rather than offering ever larger eMMC, NVIDIA decided to simply use an external SSD. eMMC is expensive (and may be difficult to source), SSD is less so. Another advantage is that SSDs are available in a large range of sizes, 128GB to 1TB are available at consumer prices under $60 currently.
Selecting a SSD
Here are some things to keep in mind when buying a SSD for your Jetson Orin Nano Developer Kit. The first is that you must use a PCIe SSD. SSDs are available in two flavors, PCIe and SATA. Many PCs use SATA drives, so you have to be careful when buying. Typically SATA drives have two notches on their connector edge, while the PCIe drives have only one. The SATA drives no-worky on the Jetson.
The second thing to know is that the Orin Nano Devkit NVMe slot is PCIe Gen 3. Which means that you won’t get Gen 4 speeds if you are using a Gen 4 drive. Most Gen 4 drives are compatible with the Orin Nano, but you usually pay a premium for no added benefit.
The third thing to know is that you should probably know how much power the drive draws. In the video for example, we’re using a 1TB drive with a power draw of 2.5A at 3.3V. This is 8.25W. The Orin Nano Devkit board can provide 36 watts total to the system. Unlike a traditional desktop, you need to keep track of your power budget. Remember that the Orin Nano SoC itself can use 15W (you would add a little more for a safety buffer). If you add in another 8W, that means you have about another 8-10 for other peripherals give or take. Smaller capacity drives tend to use less power.
Also, remember you’re going to need backups. Right? So a larger drive is not always a blessing.
Some SSD Recommendations
Here’s a couple that have worked well over the years. This is one area where we’ve seen price decreases!
The drives are available in different sizes, find one that fits your needs. While you’re shopping, you may also want to pick up a jumper to put the Jetson into force recovery mode. You’ll also need a data capable USB-C cable to connect your Jetson to your host PC.
The Flashing Process
NVIDIA provides different ways of flashing the Jetson. You must have an x86 host machine, desktop or Linux. The requirements for the distribution are different depending on which method you choose. One way to set everything up is to use the official NVIDIA SDK Manager. This is the recommended way if you are new to the Jetson ecosystem. SDK Manager runs on different distributions and under Docker. There’s a video on the JetsonHacks YouTube channel that goes through the process here.
If you are a little more hard core, you can flash from the command line. I’ve written some convenience scripts to help with this. These scripts are derived from instructions directly from the NVIDIA Jetson Linux site and Jetson Linux Developer Guide Quick Start section.
To be clear, flashing from the command line is serious business. If you are a professional developer, you will need to learn the different flashing options. These options have to do with security, redundancy, and flashing multiple Jetson at once. All important in a production environment.
These scripts, on the other hand, take the most common use case and automates it.
The process takes ~ 45 minutes, depending on your host computer and network connection speeds. The JetsonHacks scripts provide guard code around the NVIDIA supplied flashing scripts. The JetsonHacks scripts verify that they are operating on the right machine and that the suitable Jetson is in recovery mode. Things like that.
In overview, the scripts do the following:
- Download the Board Support Package (BSP, flashing tools, bootloader, hardware definition, etc)
- Download the rootfs (These are the system files that you usually see on a Linux system)
- Assemble the BSP and rootfs
- Copy NVIDIA user space libraries to the rootfs (apply_binaries)
- Install prerequisites on the host used for flashing
- Flash the Jetson
- Updates the QSPI
- Flashes the SSD
To download the helper scripts and setup the flashing environment:
$ git clone https://github.com/jetsonhacks/bootFromExternalStorage.git
$ cd bootFromExternalStorage
Flashing the Jetson
Once the archives are expanded and put in the correct place, put the Jetson into Force Recovery mode. Follow the procedure in the video. Make sure the power is off, jumper pins 9 and 10 on the button header together, and apply power. With the USB-C cable attached to the Jetson and host, make sure that you can see the Jetson using the lsusb command.
You can then use the convenience script in the repository to flash the Jetson:
It takes ~ 20 minutes to install Jetson Linux. After flashing, the Jetson will be in ‘oem-config’ mode, ready to be setup. At this point, we’re done on the host side.
Remove the power from the Jetson. Make sure that the jumper pin is removed from the button header. Connect your Jetson to the Internet. You can set up the Jetson headless, or as shown in the video connected to a monitor, keyboard and mouse. After going through the oem-config sequence, you will have a basic install of Jetson Linux. You can then install JetPack.
JetPack is in NVIDIA repositories, and can be installed via APT.
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install nvidia-jetpack
After about 20 minutes (depending on your connection speed), all of the NVIDIA JetPack goodness will be installed.
- In the video, the host is running Ubuntu 20.04
- In the video, Jetson Linux version 35.3.1 is installed
- JetPack 5.1.1 is shown being installed on the Jetson
- Jtop is shown in use in the video
- In the video, the SSD is unformatted before flashing