How to Install NVMe on Jetson Orin Nano (Step-by-Step Setup)
Last updated: February 2026
For a complete breakdown of NVMe configuration, PCIe lanes, and deployment considerations, see our detailed Jetson NVMe setup guide.
TL;DR: Jetson Orin Nano supports M.2 2230/2242 NVMe drives via PCIe 3.0 x1 slot on the carrier board. Installation takes 10 minutes: power off, remove M.2 module cover, insert drive at 30° angle, press down, and screw it in. Flash JetPack 6.x to NVMe, configure boot order in UEFI, and verify with lsblk. Boot from NVMe is optional but recommended for 24/7 deployments.
Prerequisites
- Jetson Orin Nano board (6GB or 8GB variant)
- Supported carrier board with M.2 slot (see compatibility table below)
- M.2 2230 or 2242 NVMe SSD (not SATA, must be NVMe/PCIe)
- Laptop with USB-C connection for flashing (Linux, macOS, or Windows with NVIDIA SDK Manager)
- Screwdriver (usually M2.5 or smaller for M.2 screw)
- Optional: thermal pad or adhesive heatsink for passive cooling
Carrier Board Compatibility Check
Jetson Orin Nano is sold as a module only; it must be paired with a carrier board. Not all carriers have M.2 slots.
| Carrier Board | M.2 Slot Type | PCIe Lanes | Status |
|---|---|---|---|
| NVIDIA Developer Kit (official) | M.2 2230/2242 | x1 (PCIe 3.0) | Supported |
| Seeed reTerminal Jetson Nano | M.2 2242 (limited) | x1 | Supported (check clearance) |
| Jetson Nano (previous gen, not Orin) | M.2 only on unofficial carriers | PCIe 2.0 x1 | Not recommended |
| Jetson Orin NX Official Dev Kit | M.2 2230/2242 | x4 (PCIe 3.0) | Supported (higher bandwidth) |
Check your carrier board: Consult your product documentation or contact the board vendor. Look for "M.2" or "SSD" in the carrier board specs. If unsure, take a photo of the board and search the NVIDIA forums.
M.2 Key Explanation
M.2 drives come in different "key" configurations—small notches that determine physical compatibility.
- M Key (SATA + NVMe): Most common. Two notches. Works with both SATA and NVMe M.2 slots. All NVMe drives are M-keyed.
- B Key (SATA only): Older, SATA-only drives. Not compatible with NVMe slots.
- B+M Key: Rare. Works in both slots.
For Jetson Orin Nano, you need M Key NVMe drives only. Do not buy B-key or SATA M.2 drives; they will not fit or work. Verify your drive is labeled "NVMe" or "PCIe SSD" before purchasing.
Physical Installation (8 Steps)
- Power off and disconnect. Turn off Jetson, unplug power supply, wait 30 seconds for capacitors to discharge.
- Locate M.2 slot. On Orin Nano dev kit, it's on the top side of the carrier board, near the 40-pin GPIO header. Remove the metal or plastic cover if present (usually held by a single screw).
- Prepare drive. If using a heatsink, peel and apply a thin thermal pad to the back of the NVMe drive (non-component side). Let it set for 30 seconds.
- Insert at 30° angle. Align the drive's notch with the slot key, then insert the drive at a 30° angle (not flat). Slide it in smoothly without forcing.
- Press down gently. Once fully inserted, press the drive down flat against the carrier board. You should hear a soft click as the drive seats.
- Screw it in. Insert and tighten the M.2 screw (usually at the far end of the slot). Do not over-tighten; finger-tight plus one quarter turn is sufficient.
- Reattach cover. If your carrier has a metal or plastic shield, screw it back down (if applicable).
- Visual inspection. Verify the drive is flush against the board and the screw is snug. No gaps or tilting.
Common mistake: Not pressing the drive down after inserting at an angle. The drive must be fully seated (flat) before screwing. If it's tilted, the electrical contacts won't align.
Heatsink Considerations
M.2 NVMe drives generate 3–5W of heat during sustained writes. Passive heatsinks dissipate this without requiring fans.
- Passive aluminum heatsink (standard): Adhesive-backed or screw-mounted. Most NVMe drives ship with one pre-installed. Effective for ambient <50°C and clearance >10 mm from enclosure wall.
- Thermal pad. If your carrier board has a heatsink pocket or thermal interface area on the underside, use a 1–2 mm thick thermal pad (3–5 W/mK rating) between drive and carrier. This is your primary cooling path for passive dissipation.
- Enclosure clearance. Leave at least 5 mm clearance above the drive for airflow. If your drive is in a sealed fanless enclosure, add a thin heatsink or thermal pad as mentioned.
- Avoid thermal paste. Thermal paste requires reapplication over time. Use phase-change material (PCM) pads rated for 24/7 operation instead.
Check temperature: After boot, monitor drive temperature with sudo nvme smart-log /dev/nvme0 (requires nvme-cli package). If temperature exceeds 55°C at idle or 65°C under sustained load, improve cooling.
Flashing JetPack to NVMe
JetPack OS (based on Ubuntu 22.04 LTS) can boot from NVMe. You have two workflows:
Workflow 1: Flash OS to NVMe (Recommended for NVMe-first deployments)
- Install NVIDIA SDK Manager on host laptop. Download from
https://developer.nvidia.com/sdk-manager. Requires Linux host (Ubuntu 20.04/22.04 recommended). - Connect Jetson Orin Nano in recovery mode. Hold the Force Recovery button, press Reset, then release Force Recovery. The Jetson appears as an NVIDIA USB device.
- Select target in SDK Manager: Jetson Orin Nano, JetPack 6.x (latest), select NVMe as target storage.
- Flash to NVMe. SDK Manager detects the NVMe drive and writes bootloader + kernel + OS directly to it. Takes 10–15 minutes.
- Boot from NVMe. After flashing completes, power on. Jetson boots from NVMe automatically (bootloader is on NVMe).
Workflow 2: Keep eMMC, Add NVMe as Secondary Storage
- Boot from eMMC normally. Install JetPack to eMMC using SDK Manager.
- Partition and format NVMe in OS. Once booted, use
sudo nvme listto find NVMe device (usually/dev/nvme0n1). - Create partition:
sudo parted /dev/nvme0n1 mklabel gpt, thenmkpart primary ext4 0 100%. - Format:
sudo mkfs.ext4 /dev/nvme0n1p1 -L data. - Mount at boot: Add to
/etc/fstab:/dev/nvme0n1p1 /mnt/nvme ext4 defaults 0 2.
Recommendation: For continuous edge AI deployments (ring buffer recording), Workflow 1 is cleaner—NVMe is primary storage, eMMC becomes a backup recovery device.
Boot Configuration
After flashing NVMe in Workflow 1, boot is automatic. For Workflow 2, configure optional boot:
Change Boot Order (UEFI/BIOS)
- Reboot and enter UEFI setup. Power on and hold
EscapeorDelrepeatedly during boot (timing varies). You should see a setup menu. - Navigate to Boot Order or Boot Devices. Look for a "Boot Priority" section.
- Set NVMe as first boot device. If your NVMe is already first, save and exit. If eMMC is first, reorder to prioritize NVMe.
- Save and exit. Jetson reboots and boots from NVMe.
Alternative: If UEFI access is limited on your carrier board, you can use NVIDIA bootloader options (requires recompiling u-boot). Consult NVIDIA developer docs for your specific carrier.
Verification and Performance Testing
Step 1: Verify NVMe is Recognized
After booting, run:
lsblk
You should see output like:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 238.5G 0 disk
└─nvme0n1p1 259:1 0 238.5G 0 part /mnt/nvme
If NVMe does not appear, check firmware version (sudo nvme list) and ensure no BIOS/UEFI errors occurred during flashing.
Step 2: Check Temperature and Health
Install nvme-cli:
sudo apt update && sudo apt install nvme-cli
Check SMART data:
sudo nvme smart-log /dev/nvme0
Look for "Temperature" field. Should be 25–40°C at idle. After a sustained write test (see below), up to 50–60°C is acceptable.
Step 3: Benchmark Sustained Write Performance
Install fio (flexible I/O tester):
sudo apt install fio
Test sustained sequential write (ring buffer pattern):
fio --name=seqwrite --ioengine=libaio --direct=1 --bs=4k --numjobs=4 --rw=write --size=10G --runtime=60 --group_reporting /dev/nvme0n1
Expected output: 200–350 MB/s sustained write for consumer NVMe. Industrial drives may reach 400–500+ MB/s.
Step 4: Monitor Under Ring Buffer Load
Simulate your actual ring buffer workload (continuous video writes). For an 8-camera 1080p30 stream (~96 MB/s):
dd if=/dev/zero of=/mnt/nvme/testfile bs=1M count=50000 &
In another terminal, monitor temperature:
watch -n 1 "sudo nvme smart-log /dev/nvme0 | grep -i temp"
Run for 10+ minutes. Temperature should stabilize below 55–60°C. If it climbs above 65°C, check heatsink contact and improve airflow.
Troubleshooting
| Problem | Cause | Solution |
|---|---|---|
NVMe not detected (lsblk shows no nvme0) |
Drive not fully seated or slot not recognized | Power off, reseat drive at 30° angle, ensure screw is snug. Reboot. |
| SDK Manager can't find device in recovery mode | USB connection not established or wrong driver | Use USB 3.0 port on host. On Linux, install libftdi-dev. On Windows, install NVIDIA USB drivers. |
| Boot slow or kernel panic during NVMe boot | Bootloader not flashed to NVMe correctly | Re-flash with SDK Manager. Ensure "NVMe" is selected as target storage in SDK Manager. |
| Temperature exceeds 70°C under load | Poor heatsink contact or no airflow | Check thermal pad is not compressed. Add enclosure airflow (fan or vent holes). Reduce write load if possible. |
| Corruption/filesystem errors after power loss | No power loss protection on drive | Replace with NVMe that has capacitor-backed cache (CBC). Add UPS to avoid power loss. |
Recommended Reading
- NVMe for Jetson Orin Nano: PCIe Lanes, Endurance, and Drive Selection
- Best NVMe SSD for Jetson Orin Nano (2026 Performance & Endurance)
- NVMe vs SD Card for Jetson: Speed, Endurance & Edge AI Impact
- SSD Endurance for Edge AI: TBW, Wear, and What to Buy
- Edge AI Hardware Guide: Compute, Storage, Power, and Networking