NVME on PI5 Working OK

I can confirm it is possible to get a working NVME drive fairly simply (or was I lucky?)…

I bought a ‘skeleton’ USB to NVME adapter from Ebay a while ago as an alternative to getting a NVME case so I could test drives as if they were a giant USB stick. Worked fine in Windows of course.

I ordered a PI5 on ‘the big day’ but didn’t get it until close to Christmas and then the various bases were being demoed getting me interested so ordered a couple of Pimoroni NVME Bases (I’ve since got a second PI5 from CPC). Also checked the ‘drive compatibility’ list and ordered a Patriot P300 512GB from Amazon.

I put the Patriot drive onto my USB Adapter and put 64-bit PI-OS on it using the Raspberry Pi Imager from my iMac. Plugging the adapter into the lower USB3 socket on the PI5 I was delighted to see it working nicely on its own (no SD card). I was hoping this could speed up the installation process for when the Base arrived.

The Pimoroni bases arrived today. I removed the PI5’s SD card and followed the hardware assembly video linked-to in the product page being extra careful with the ribbon cable.
Then powered up only to be met with a looping boot screen.

I set up another USB memory stick with the Raspberry Pi imager and put that in the PI’s USB socket and it booted up fine and I could see the Patriot drive (twice!) but file manager couldn’t get in them claiming invalid volume?

Went back to the Base product page and followed the EEPROM instructions and updated the config and the boot sequence. At first it claimed there was no EEPROM ROM to save?
I didn’t try the Gen 3 setting - staying safe for now.

Anyways, I powered down, removed the USB stick, powered up again and bingo! the system I’d previously set up on the Patriot with a different wallpaper popped up quickly.

I’ve copied a bunch of YouTube videos and assorted pictures and video playback seems rock solid.
So it works for me … Thanks Pimoroni :)

Now all I need is a pretty box for it!

Working OK here too, as far as I know. I pre ordered a Pi 5, then the kit, NVMe Base + 500GB SSD. I followed the guide to set it up. I have not enabled PCIe mode 3.

I went for a side by side / end to end setup. I used bits and pieces of Pibow stuff I have bought over the years. A lot of it is now discontinued. ;(

For anyone considering a HAT version I managed to order a Waveshare PCIe to M.2 HAT before they sold out their first batch and it came today. A surprisingly affordable version.

This one comes with metal stand-offs and a short, straight connector ribbon and, being smaller can only accommodate 2230 and 2242 sizes of SSD. I bought an Integral 256GB 2242 SSD to try with it and as per above I pre-formatted and installed Raspberry PiOS using Pi imager from my iMAC using a USB adapter and using the same adapter plugged into my Pi5 tested it working.

Assembled the kit with PiOS on an SD card and made the config adjustments then rebooted with the SSD only fitted and like magic it’s up and running. NB I had to break off the 2230 embedded mounting nut as it fouled up with the 2242 SSD preventing it from screwing down flat.

Not tried Gen 3 setting - from what I’ve heard about the PCIe ribbon link connection the straight line type might not work at higher speeds?

Only problem is it still doesn’t fit in a standard Pi case as the stand-off screw heads under the Pi lift it too much though longer threaded bolts through the case holes might work - or it might not even need the lower bolts?
Update: removed the lower bolts but kept the stand-offs and it’s a snug but usable fit in a official Pi5 case. Can’t put the white cap on but that would block ventilation anyway. Ace!

So still want a suitable case for this too.

FWIW, despite initial concerns about potential problems with the physical connection method (made me think of gamers stressing about a scratch on their PCIe video card gold contacts!), the Pimoroni NVME base and supplied Adata Legend 700 512GB card worked straight out-of-the-box for me.

Using hdparm, read speed: Timing cached reads: 4078 MB in 2.00 seconds = 2041.64 MB/sec
Using dd, write speed: 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.04333 s, 525 MB/s

Is that what I should expect (in mode 3)?

Expert step-by-step guidance provided by ChatGPT-4:

My PIM700, NVMe Base + 500GB SSD, came with a Netac NV2000. With the default PCIe Gen 2 setting, the pibenchmarks.com score was 38313, and there were no error messages in dmesg. With the Gen 3 setting, the pibenchmarks.com score was 53008, but dmesg contained the following four lines multiple times:

pcieport 0000:00:00.0: device [14e4:2712] error status/mask=00000040/00002000
pcieport 0000:00:00.0: [ 6] BadTLP
pcieport 0000:00:00.0: AER: Corrected error received: 0000:00:00.0
pcieport 0000:00:00.0: PCIe Bus Error: severity=Corrected, type=Data Link Layer, (Receiver ID)

These errors did not appear to downgrade performance, but for now I will stick with Gen 2. I used a Vilros Raspberry Pi 5 Active Cooler Compatible Case to build an open-sided stack: short screw - Vilros bottom - 6mm M-F standoff - Pimoroni Base - 1mm washer - 6mm M-F standoff - RPi5 + active cooler - 17mm M-M standoff - Vilros top - short screw.

RPi5 Netac and Lexar NVMe SSD Testing

  • Hardware
    • RPi5 + active cooler, RPi RTC battery, RPi 27W Power supply
    • Dell monitor P2219H with a four port USB hub
      • Upstream cable USB-A 3.0 to USB-B data only
      • Downstream 2 x USB 2.0 480Mbps 2.5W (Max, each port)
        • RPi5 Keyboard and mouse
        • Audio DAC
      • Downstream 2 x USB 3.0 5Gbps 4.5W (Max, each port)
    • Pimoroni NVMe Base + FPC
      • Pimoroni support: The FPC has a ground copper plane on the 2nd layer close to the high-speed signaling traces, but it doesn’t have an all-around shield layer. It’s similar to the FPC the Pi uses with their upcoming M.2 HAT.
    • Netac NV2000 NVMe SSD 3 x 4 512GB, $ sudo lspci -vvv shows no support for ASPM.
    • Lexar NV790 NVMe SSD 4 x4 512GB, $ sudo lspci -vvv shows support for ASPM L1.
    • Case, open-sided stack: short screw - Vilros bottom - 6mm M-F standoff - Pimoroni Base - 1mm washer - 6mm M-F standoff - RPi5 + active cooler - 17mm M-M standoff - Vilros top - short screw.
  • Software
    • Kernel: $ uname -a
      • Linux rpi5 6.6.20+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.6.20-1+rpt1 (2024-03-07) aarch64 GNU/Linux.
    • Bootloader: $ rpi-eeprom-update
      • Fri Feb 16 03:28:41 PM UTC 2024 (1708097321)
    • Active-State Power Management (ASPM) saves power in the PCIe subsystem by setting a lower power state for PCIe links when the connected devices are not in use.
    • Kernel support for ASPM: $ grep ASPM /boot/config-6.6.20+rpt-rpi-2712
      • # CONFIG_PCIEASPM_DEFAULT is not set
    • ASPM policy
      • powersave: highest power saving mode, enable all available ASPM state and clock power management.
        • Policy set by kernel at boot.
      • performance: highest performance, disable ASPM and clock power management
        • To set add pcie_aspm.policy=performance to /boot/firmware/cmdline.txt before rootwait.
    • PCIe Advanced Error Reporting (AER) is a kernel feature that improves error reporting for PCIe devices.
  • Testing: run each case one or more days using geekbench6, pibenchmarks, speedtest.net, daily work load
    • Netac Ethernet connected, WiFi and BT off
      • Gen 2 powersave
        • 0 AER errors – save about 0.5W at idle
        • Pibenchmarks 38389
      • Gen 2 performance
        • 0 AER errors
        • Pibenchmarks 38149
      • Gen 3 powersave
        • Multiple corrected AER errors, some kernel panics
      • Gen 3 performance
        • 0 AER errors
        • Pibenchmarks 51443
        • Geekbench6 778 1608
    • Lexar Ethernet connected, WiFi and BT off
      • Gen 2 powersave
        • 0 AER errors
        • Pibenchmarks 41167
        • Geekbench6 787 1634
      • Gen 2 performance
        • 0 AER errors
        • Pibenchmarks 41789
      • Gen 3 powersave
        • 0 AER errors – save about 1.25W at idle
        • Pibenchmarks 58681
        • Geekbench6 791 1698
      • Gen 3 performance
        • 0 AER errors
        • Pibenchmarks 58630
    • Lexar Ethernet not connected, WiFi 5G and BT connected
      • Gen 3 powersave
        • 0 AER errors
        • Pibenchmarks 58509