2026-07-13
Best M.2 HAT for Raspberry Pi 5 (and Which to Avoid)
The official Raspberry Pi M.2 HAT+ is the safest choice for most people — it's inexpensive, well-supported in firmware, and delivers real NVMe speeds that obliterate microSD. If you need PoE or a cleaner form factor, third-party options exist, but each comes with trade-offs I'll detail below.
My Actual Build and What I Measured
I'm running a Raspberry Pi 5 Model B Rev 1.1 with 16 GB RAM, booting Debian Trixie (kernel 6.18.34+rpt-rpi-2712) directly from an NVMe drive — no microSD card in the slot. The drive is a Fanxiang S501Q 512GB connected via the official M.2 HAT+ over the Pi 5's single PCIe 2.0 lane (default gen2 setting, no gen3 override).
Here are my real fio numbers and thermal readings:
| Metric | Measured Value |
|---|---|
| Sequential read | 453 MB/s |
| Sequential write | 438 MB/s |
| Random 4K read IOPS | 16,433 |
| SoC temp, idle | 49.4 °C |
| SoC temp, after sustained load | 48.8 °C |
A few things worth noting. Those sequential speeds are essentially saturating the PCIe Gen 2 x1 link, which tops out around 500 MB/s after protocol overhead. That means my cheap Fanxiang drive isn't the bottleneck — the bus is. Buying a faster NVMe (like a Samsung 990 Pro) would make zero difference at Gen 2 speeds. The thermal numbers are also interesting: the SoC actually read slightly cooler after the sustained fio workload than at idle, which I attribute to measurement variance and the active cooler fan spinning up. Either way, the M.2 HAT+ adds no meaningful thermal penalty in my setup.
The boot device is /dev/nvme0n1p2. Boot time from power-on to SSH-ready is noticeably faster than microSD, though I didn't time it precisely enough to publish a number I'd stand behind.
The Three M.2 HAT Options Worth Discussing
1. Official Raspberry Pi M.2 HAT+
This is what I used and tested. It connects via the Pi 5's FFC cable to the PCIe connector and sits on top of the board using standoffs. It supports M.2 2230 and 2242 key-M NVMe drives.
Pros: - First-party firmware support. No quirks, no hacks needed for NVMe boot. - Costs around $12–15 USD. Absurdly cheap. - Passive — no additional power draw. - My measured 453/438 MB/s read/write confirms it runs at full Gen 2 speed.
Cons: - Sits on top, blocking GPIO access unless you use an extension header. - No PoE passthrough. - Only supports 2230/2242, not full 2280 drives.
2. Pimoroni NVMe Base / NVMe Base Duo
I have not tested the Pimoroni NVMe Base myself. Based on published specs and community reports: it mounts underneath the Pi 5, leaving GPIO pins fully accessible. It uses the same PCIe FFC connection, so it's limited to the same Gen 2 x1 bandwidth — meaning you should expect similar throughput to what I measured with the official HAT+. The Duo variant reportedly supports two M.2 drives, though both share that single lane.
Pros (based on specs): - Underslung design keeps GPIO free. - Supports 2230 and 2242 (Duo reportedly supports 2280 as well). - Similar price point to the official HAT+.
Cons (based on reports): - Early firmware revisions had boot compatibility issues; these are reportedly resolved now. - Mounting underneath means the drive is sandwiched between the Pi and whatever surface it sits on — potentially worse thermals without airflow, though I haven't verified this myself.
3. PoE+ HAT with M.2 — The Combo Play
The official Raspberry Pi PoE+ HAT does not include M.2. If you want both PoE and NVMe, you're looking at third-party combo boards (like the 52Pi or Geekworm variants). I haven't tested any of these. Based on published specs, they typically combine a PoE power circuit and an M.2 slot on a single board, using both the GPIO header (for PoE power) and the FFC cable (for NVMe data).
Be cautious here. The combo boards reportedly have more compatibility variance, thicker stack height, and some require specific firmware settings. If you're running a headless homelab node and PoE is essential, they can simplify wiring. But if you can tolerate a separate USB-C power supply, the official M.2 HAT+ is a more predictable choice.
The Gen 3 Override Question
The Pi 5 allows forcing PCIe Gen 3 via config.txt (dtparam=pciex1_gen=3). This is officially unsupported by Raspberry Pi and not guaranteed to work on every board. I chose not to enable it for my daily-driver setup because Gen 2 already gives me 453 MB/s reads, which is more than sufficient for my homelab workloads (Docker containers, a small media stack, databases). For context, a quality microSD card delivers maybe 40–90 MB/s sequential. Going from 453 to a theoretical ~800 MB/s wouldn't change my actual experience for anything except large sequential file copies.
If you do enable Gen 3 and it's stable on your specific board, you'd want a drive capable of saturating that bandwidth. The Fanxiang S501Q I'm using is a budget DRAMless drive — reportedly rated for around 500 MB/s by the manufacturer — so it wouldn't benefit anyway.
Which M.2 Drive to Buy
I used the Fanxiang S501Q 512GB because it was cheap (~$25) and available in 2242 form factor. At 453 MB/s sequential read and 16,433 random read IOPS, it's perfectly adequate. You don't need a flagship NVMe for a Pi 5. The PCIe bus is the ceiling, not the drive.
Key constraints for drive selection: - Must be M.2 key-M NVMe, not SATA. SATA M.2 drives will not work. - 2230 or 2242 form factor for the official HAT+ and most third-party boards. Check your specific HAT before buying 2280. - Capacity matters more than speed. Every budget NVMe will hit the Gen 2 wall. Buy the capacity you need.
Who Should NOT Do This
- If you just want a media player or light Pi-hole install, a decent microSD card is fine. The M.2 HAT adds cost, complexity, and stack height for workloads that don't need the IOPS.
- If you need more than ~450 MB/s sustained throughput, a Pi 5 isn't your platform. Consider a used mini PC, or run your workload on a small VPS like Hetzner Cloud where you get real SATA SSDs or better.
- If GPIO access is critical and you want the official HAT+, you'll need a GPIO extension header or the underslung Pimoroni alternative.
Verdict
The official M.2 HAT+ with any budget 2230/2242 NVMe drive is the right answer for most people. My Fanxiang S501Q on the official HAT+ delivered 453 MB/s reads and nearly 16.5K random IOPS at under 50 °C — more than enough for a homelab server. Save your money on the drive, spend it on capacity, and skip the Gen 3 hack unless you have a specific reason and a willingness to troubleshoot.