PCIe NVMe compatibility

With the rise of popularity of the PCIe NVMe storage on Raspberry Pi latest devices starting this thread to share our experiences.

As a starting point please explore excellent overview and write-up with the caveat that the NVMe boards are now readily available and variety is increasing on the daily basis.
We also have a quick guide discussing how to prepare Raspberry Pi5 to interact with PCIe storage boot process.

Volumio implementation

Active-State Power Management (ASPM) saves power in the Peripheral Component Interconnect Express (PCI Express or PCIe) subsystem by setting a lower power state for PCIe links when the devices to which they connect are not in use. ASPM controls the power state at both ends of the link, and saves power in the link even when the device at the end of the link is in a fully powered-on state. When ASPM is enabled, device latency increases because of the time required to transition the link between different power states.

PCI Subsystem Options - pcie tuning will check the device’s MPS against the parent bridge when it is initially added to the pci subsystem, prior to attaching to a driver. If MPS is mismatched, the downstream port is set to the parent bridge’s if capable.

Our cmdline.txt uses pcie_aspm=off pci=pcie_bus_safe to keep NVMe ready at all times.

The official Raspberry Pi documentation reads: The connection is certified for Gen 2.0 speeds (5 GT/sec), but you can force it to Gen 3.0 (10 GT/sec)… Volumio is not aspiring to run quantum level calculations nor run real time processing although it relies on error-free storage I/O.
Our volumioconfig.txt uses:

Description Parameter
Enable NMVe dtparam=nvme
Use certified Gen 2.0 dtparam=pciex1_gen=2

NVMe SSD Incompatibility List

NVMe SSD drivers equipped with Phison controller (PS5022) are known to cause problems.

NVMe reported as not playing nicely with Raspberry Pi:

Model Controller
WD Black SN850 series SanDisk 8-Channel (derivative from E18T)
WD Black SN770 series 20-82-10081-A1 Polaris MP16+
WD SN740 series 20-82-10081-A1 Polaris MP16+
WD Blue SN550/SN580 series SanDisk 20-82-01008-A1 updated eeprom: PCIe NVMe compatibility - #51 by Fungle
WD Green SN350 series 20-82-01008-A2 Polaris MP16
Samsung 990 Pro Samsung Pascal V7 (FW older than 4B2QJXD7
Samsung 980 Pro Samsung Elpis (FW older than 5B2QGXA7)
Lexar NM610 Pro SM2263XT removed: PCIe NVMe compatibility - #44 by nerd

We will update above list with problematic devices from community feedback.

NVMe SSD Compatibility List

Gen 3: Generations of NVMe SSD drivers lover than 3 are considered safe.
Gen 4: All devices tagged with “Low Power Consumption” and not based on Phison controller (For now, we know that some PS5012S, PS5013 and PS5022 are causing issues).
Gen 5: An overkill. Most of the Gen 5 NVMe are furnished with large heat-sinks rendering them impractical. Power requirements for the Gen 5 NVMe is a separate topic altogether.

Power requirements

I will open with frequent comment “I put NVMe to my PC and it works perfectly. I put the same NVMe to Raspberry Pi 5 and it does not work!”.
I am not surprised. A standard PC PCIe lane delivers a whooping 75W of power. On PC PCIe lanes designed for high performance and throughput delivered power is even higher. Raspberry Pi 5 on the other hand, is spec to provide up to 5W to PCIe lane. Adding FCC unshielded ribbon impedance it can be reduced to as little as 2W. And this is where most of the problems are - a NVMe HAT without additional power source, simply can not provide enough energy to drive demanding NVMe. Such NVMe, the very moment when even proportionally small workload arrives, disconnects, starts throwing I/O errors tantrum and even in some edge cases - a sudden power decay, corrupts other storage devices by simply under-powering device during write. Sound familiar?
Some NVMe HATs producers already observed above problem and added an auxiliary power connector like 2-pin XH2.54 to drive 5V from an additional power supply lane, whilst other producers have exposed pads for soldering.
“But I have original Raspberry Pi power supply which can deliver 27W!”. It is connected to the USB-C port on Raspberry Pi. Power is distributed by Raspberry Pi circuitry down to all connected devices. Connected devices power consumption, however small it seems, adds up. In most of the cases it is sufficient, however add Touch, IR receiver, high power DAC, drive a screen and there comes a surprise. In fact - this is an elementary school level maths.

Usage, community discussion and further steps:

Description Community thread
Upgrade eeprom Prepare Raspberry Pi for boot from USB/NVMe
Testing Volumio OS with Disk Installer [ALPHA] Raspberry Pi boot from USB/NVMe
1 Like

We strive to provide the best music experience. As such we internally tested (and still do) Volumio on variety of NVMe SSD. This list is only indication of our effort and is not definitive.

Please share your experience by posting what NMVe and HAT combination were successful or detail the ones caused problems.

Form factor 2230

Manufacturer Model PCIe Image Controller Geekworm Pimoroni Pineberry Waveshare
FanXiang S700 Gen4 Innogrit IG5220BBA X1001 NVMe Base HatDrive! Top *TBT
Integral INSSD1TM2230G3 Gen3 MAP1202D-F X1001 NVMe Base HatDrive! Top *TBT
Sabrent SB-2130-512 Gen4 Phison E21 X1001 X1003 NVMe Base HatDrive! Top *TBT
SG Electronics *TBD Gen4 *TBD *TBT *TBT *TBT PCIe To M.2 HAT

Form factor 2280

Manufacturer Model PCIe Image Controller Geekworm Pimoroni Pineberry Waveshare
Gigabyte GP-GSM2NE3256GNTD Gen3 *TBT *TBT NVMe Base HatDrive! Bottom *TBT
Samsung 960 EVO Gen3 Samsung Polaris S4LP077X01-8030 X1001 NVMe Base HatDrive! Bottom *TBT
Samsung 970 EVO Gen3 Samsung Phoenix S4LR020 X1001 NVMe Base HatDrive! Bottom *TBT
Samsung 970 EVO Plus Gen3 Samsung
(+V6) Elpis S4LV003
(+V5) Phoenix S4LR020
*TBT NVMe Base HatDrive! Bottom *TBT
Samsung PM9A1 Gen4 Samsung Elpis S4LV003 X1001 NVMe Base HatDrive! Bottom *TBT
Seagate FireCuda 520 Gen4 Phision PS5016-E16-32 X1001 NVMe Base HatDrive! Bottom *TBT
Transcend MTE110S Gen3 Silicon Motion SM2263XT X1001 NVMe Base HatDrive! Bottom *TBT

Form factor 2280 low power consumption winners

We cannot test all NVMe SSD available on the market. Originating from reviews in various forum’s, the SK Hynix Gold P31 is clearly established as a reference NMVe SSD for low power consumption. In my tests there is a serious contender Crucial P3 showing even lower power consumption under workloads. If you find any other contender worth testing, please share your findings in this thread.

Manufacturer Model PCIe Image Controller Geekworm Pimoroni Pineberry Waveshare
SK Hynix Gold P31 Gen3 SK hynix Cepheus Phison E12 X1001 X1002 NVMe Base HatDrive! Bottom *TBT
Crucial P3 Gen3 Phison E21T X1001 X1002 NVMe Base HatDrive! Bottom *TBT

*TBD - To Be Determined
*TBT - To Be Tested

Most compact expansion board designed to support Raspberry Pi 5 Active Cooler and the official Raspberry Pi 5 ABS case

Compact NVME M2 SSD PIP with 40 pin header:

Those are the host combinations I’ve tested successfully with NVME boot


This is the cheapest combination I could find for the Raspberry Pi 5 (9 EUR for the HAT+, 15 EUR for the SSD). The results are amazing, boot time is crazy low, the responsiveness of the system is the best i’ve ever had on a DIY Volumio system.



With the possibility of NVME Boot, CM4 becomes a strong candidate to build a fast and reliable DIY Volumio system. Again the results are amazing, and this combination is even cheaper than the previous one based on RPi5.

If you’re planning to build a DIY streamer with a metal chassis, this is the best option, because it’s possible to connect ad external WiFi antenna to the CM4. With a RPi4 or a RPi5, the WiFi antenna is embedded on the PCB, if it’s surrounded by metal the coverage won’t be good. With CM4 and an external antenna, this problem is solved.

2 Likes

It seems to me to be the best small PCI-e to M.2 card available. Unfortunately its availability in Europe is almost non-existent for the moment, I’ve been waiting for over a month for it to finally be deliverable.

I received 3 samples just a few days ago

On a Pineberry Pi site is compatibility list for their hat drive:

https://docs.pineberrypi.com/nvme-compatibility-list

I can add:

  • GIGABYTE NVMe 256GB SSD GP-GSM2NE3256GNTD works - I have Voumio on it
  • Lexar Ssd Nm610 Pro 2Tb Nvme - not visible in system.

j’en veux bien un si tu en as en trop :slight_smile:

I would like one if you have extra :slight_smile:

sorry but I already sent two to colleagues, we ordered them for development and testing

but I thought we we’re friends…

1 Like

It’s early days but I bought a Geekworm X1003 for my Pi 5 and did the necessary eeprom update and configuration as per “Nerd’s” community post.

Arrived today and installed a fanxiang M.2 2230 SSD and followed exactly the instructions above. However, I cannot see “install to disk” as an option so further delving around is required. Not sure what the problem is yet but will report back.

The problem appears to be the Fanxiang M.2 SSD. It can be seen on my PC but is not seen by the PI. I temporarily used a Samsung SSD which is seen and appears to be working fine with “install to disk” appearing in the menu. I tried formatting the Fanxiang to NTFS and exFAT … I’ll keep tinkering to see if anything helps - if not then it might be a different PCIE board and case.

From your description, your NVMe seems to be S700 series device. Can you take the photo of the sticker with model number or EAN? We need to track down the controller type.

If your Volumio system does not see the disk, the option to install to the disk will not be visible - I think :slight_smile:

Here are Fanxiang disk controller type:

Resembles one listed here: FanXiang S700 PCIe 4.0 NVMe M.2 Internal SSD

Yes, that’s the one - bought from Amazon here in the UK.

Thank you. Will interrogate this NVMe early next week.

Here are the details.

Interrogate, that sounds creepy… With a big shiny bright light.

1 Like