Boot from NVMe¶
AryaOS boots from a microSD card by default. On hardware with an NVMe slot — the Waveshare PoE M.2 HAT+, other M.2 HATs, or SNS-supplied boxes — you can run AryaOS from an NVMe SSD instead, which is far more endurance-friendly for continuous field use (see Media longevity) and noticeably faster.
Booting from NVMe is a Raspberry Pi bootloader change, not something the AryaOS image does for you — the steps below are one-time, per unit.
1. Fit the drive¶
Seat an M.2 NVMe SSD (2230/2242/2260/2280) in the HAT. The Pi 5 auto-detects the PCIe
link; no config.txt change is needed for detection. To force PCIe Gen 3 (faster, but not
all HATs/SSDs are stable):
The Waveshare PoE M.2 HAT+ runs at Gen 2 by default, which is plenty for AryaOS.
2. Put AryaOS on the NVMe¶
Either flash the AryaOS .img directly to the NVMe from another machine, or clone a running
SD install to the NVMe on the box:
lsblk # confirm the NVMe is /dev/nvme0n1
# Option A — clone the running SD card to NVMe:
sudo rpi-clone nvme0n1 # if rpi-clone is available
# Option B — write a downloaded image (see the OS image backup card in Cockpit):
sudo sh -c 'xzcat /var/lib/aryaos/image/*.img.xz > /dev/nvme0n1'
findmnt / afterwards should still show the SD root until you change the boot order.
3. Set the boot order to prefer NVMe¶
Edit the bootloader EEPROM config and set BOOT_ORDER so the Pi tries NVMe first, then SD:
Boot-order digits are read right-to-left: 6=NVMe, 1=SD, 4=USB, f=retry. 0xf416 means
NVMe → SD → USB → repeat, so a box with no NVMe still falls back to the SD card. Reboot.
4. Verify¶
Power headroom
NVMe adds roughly 2–4 W on the PCIe link. On a marginal supply — a 5V/3A brick, or a PoE HAT fed from plain 802.3af — adding NVMe (plus SDRs) can tip the box into a brownout. Pair NVMe boot with a proper 5V/5A (27 W) supply or a true PoE+ (802.3at) source. AryaOS surfaces under-voltage via power-health and falls back to safe mode if it crash-loops. See Hardware & requirements.
See also¶
- Media longevity — why NVMe/eMMC beats SD for continuous use
- OS image backup — pulling the unit's own
.imgto re-flash