Maker.io main logo

Getting Started with NVMe Base for Raspberry Pi 5

2024-04-11 | By Pimoroni

License: See Original Project Raspberry Pi

Courtesy of Pimoroni

Guide by Pimoroni‎

About NVMe Base

The new PCIe interface on Raspberry Pi 5 gives us an exciting new option for ‎adding fast, high-capacity storage. PCIe (that's peripheral component ‎interconnect express) is an interface standard for connecting up high-speed ‎components - not only external storage devices, but also graphics cards, USB ‎hubs and so on.‎

Pimoroni's NVMe Base lets you to connect up a large NVMe solid state drive ‎‎(SSD) to Pi 5's ribbon style PCIe connector and turn it into a responsive ‎desktop machine, a capable media player or file server for all your photos, ‎music and documents, or a backup server for your PC.‎

Read on for how to get started!‎

What You'll Need

  • Raspberry Pi 5
  • ‎27W power supply
  • A microSD card to get everything set up
  • An Active Cooler (not essential, but highly recommended)
  • A NVMe Base (Pimoroni sell them on their own, or bundled with a ‎compatible 250GB or 500GB drive)

If you're planning on sourcing your own NVMe SSD, then bear in mind the ‎following:‎

  • The SSD needs to be NVMe M.2. Don't get this confused with the ‎SATA M.2, which may look similar but are not compatible. NVMe and ‎SATA refer to the interface communications standards, and M.2 to the ‎form factor.
  • The NVMe Base can take SSDs of physical sizes ‎between 2230 and 2280. This refers to the size of the board - i.e., ‎‎22mm wide by 30mm to 80mm long.‎
  • The capacity is up to you. NVMe capacity ranges from 128GB to 2TB ‎and more. Smaller ones are cheaper but will limit how much you can ‎store. Very large drives are still very expensive. At the time of writing ‎the sweet spot appears to be between 256GB and 500GB.‎
  • The NVMe Base can run at PCIe Gen 2 x1 speeds (the maximum ‎officially supported) but with careful drive selection and a well-seated ‎ribbon-cable you can enable (experimental) Gen 3 x1 speeds for almost ‎double the bandwidth. Almost all available drives at the time of writing ‎are Gen 3 x4 or Gen 4. All SSDs supplied by Pimoroni will be specced ‎for at least Gen 3 but will only use x1 (1 lane.)

There is a list of compatible SSDs (and ones that have been found to be ‎problematic) on the NVMe Base shop page.‎

Putting it Together

When you unpack your NVMe Base you will find the following items:

base_1

  • A NVMe Base PCB
  • A flexible ribbon cable with writing on one side
  • Four sticks on rubber feet
  • A standoff set

If you purchased a bundle that includes an SSD then you will also have:‎

  • A 250GB or 500GB NVMe drive

PREPARING THE BASE

Open the standoff set bag and empty the contents into a small pot or tray so ‎they don't roll away. In it you will find these:‎

bag_2

Going clockwise from top left you should have:‎

  • Four long screws, for if you plan to use a HAT on your Raspberry Pi 5.
  • Eight short screws, for if you do not plan to attach a HAT.
  • A thin screw and two nuts, used for securing your SSD to the base.
  • Four standoffs, which are used to space the NVMe Base board from ‎your Raspberry Pi 5.‎

‎(You may also have a few spares!)‎

IF YOU ARE NOT USING A HAT

Start by posting one of the short screws through the larger holes in the Base ‎from the bottom (the side without components) and screw on the standoffs.‎

Repeat with three of the other short bolts and standoffs.‎

A little later you will be placing your Raspberry Pi 5 on the standoffs and use ‎the remaining four short bolts to secure it in place.‎

base_3

IF YOU ARE USING A HAT

Start by posting one of the long screws through the larger holes in the Base ‎from the bottom (the side without components) and screw the standoffs all ‎the way down.‎

Repeat with the other three long bolts and standoffs.‎

A little later you will be placing your Pi on the bolts and using the HATs own ‎standoffs to fix the Raspberry Pi 5 in place.‎

secure_4

SECURING THE SSD

Take the thin (2mm) bolt and post it through the board from the bottom in ‎one of the small holes running down the middle of the board. Use the hole ‎which corresponds to the length of your SSD (2280 in the case of the SSD ‎supplied by Pimoroni). Secure it in place with one of the nuts.‎

standoff_5

Unpack your SSD, being careful to avoid touching any of the gold connectors ‎on the end.‎

You will notice a notch breaking up the connectors on one end of the SSD. ‎This corresponds to the M.2 socket on the Base board.‎ 

label_7 

There is a round semicircular cutout in the middle of the other end. This is ‎where that thin bolt will be used to secure the SSD to the Base.‎

Now carefully push the SSD into the socket. It will only go in one direction ‎and doesn't need much effort.‎

socket_8

Gently push the SSD down at the other end and secure it in place by putting ‎the second nut on the screw you fixed in place earlier.‎

secure_9

CONNECTING THE RIBBON CABLE

NOTE: You may want to use a pair of tweezers for this part.‎

It is now time to secure the ribbon cable, firstly onto the Base board, and then ‎onto the Raspberry Pi PCIe socket. This can be fiddly, however following ‎these simple steps should ensure success.‎

The two ribbon cable sockets hold the ribbon in place using small plastic clips ‎which you have to 'open' to put the ribbon in, and close again to secure it in ‎place. These clips are quite fragile and require very little pressure to move. ‎The clips on sockets of the Base board and the Raspberry Pi work slightly ‎differently from each other, so be careful to read these instructions before ‎proceeding.‎

Let's first take a look at the ribbon cable. One end is wider than the other. ‎This is the end which goes into the NVMe Base connector and is labelled on ‎the ribbon as 'ADDON'. The other end labelled 'RPI 5' will go into the ‎Raspberry Pi 5's PCIe connector.‎

When in place, the writing and Pirate logo will face outwards.‎

cable_10

SECURING THE RIBBON TO THE BASE BOARD

Using tweezers or a fingernail, flip the grey clip of the socket on the NVMe ‎Base upwards. It will swivel into an upright position.‎

ribbon_11

ribbon_12

Now gently push the ADDON end of the ribbon cable into the socket, ensuring ‎the side with the writing is pointing downwards. You should see the cable go ‎under the silver 'connectors'; these are in fact what provides the pressure to ‎hold the ribbon down onto the real connectors.‎

Gently rotate the clip back down into its original position. You should be able ‎to see about 1mm of the brown surface of the ribbon protruding from the ‎socket.‎

position_13

SECURING THE RIBBON TO THE RASPBERRY PI 5‎

NOTE: Ensure your Raspberry Pi 5 is not powered on.‎

Now locate the Raspberry Pi 5 PCIe connector. It is the one on the opposite ‎end from the network and USB ports and is located next to the on/off switch. ‎This has a brown clip which slides up and down, at right angles to the ‎Raspberry Pi board.‎

position_13a

Carefully, and preferably with tweezers or fingernails, lift the clip up by about ‎‎1mm.‎

With the Raspberry Pi on your desk, hold your NVMe Base directly above the ‎Pi's PCIe connector with the SSD pointing away from the Pi.‎

power_14

Gently lower the Base, posting the ribbon into the PCIe connector until you ‎feel that it has gone as far as it can. With your thumb nail or tweezers, push ‎the brown clip down and back in place.‎

FINAL ASSEMBLY

Now that the two boards are connected by the ribbon cable, gently wrap the ‎NVMe Base down until it is under the Raspberry Pi as though the ribbon cable ‎is a hinge. Make sure you don't put the ribbon under any strain.‎

With the Raspberry Pi sitting on top of the NVMe Base board you now need ‎to secure them together.‎

If you are not using a HAT, use the four remaining short screws to secure the ‎Raspberry Pi 5 on top of the NVMe Base's spacers.‎

final_15

If you are using a HAT, post the long bolts through the four fixing holes of the ‎Raspberry Pi, and then screw the HAT's spacers onto the long screws.‎

final_16

Optionally, stick the four rubber feet onto the bottom of the NVMe Base, one ‎near each corner.‎

Installing your OS onto the NVMe SSD

There are a few ways you can install your chosen OS onto the NVMe SSD ‎and experience the speed boost, depending on whether you want to install ‎from scratch or if you already have your OS installed and set up how you ‎want.‎

For all options you need to start from the latest Raspberry Pi OS (Bookworm ‎or later). If you don't already have a microSD card with the OS written to it, ‎create one now using the Raspberry Pi Imager software (it's available for ‎Windows, macOS and Linux), or using your usual method.‎

Alternatively, you can use an existing card, as long as it has the latest OS ‎‎(Bookworm or later) on it.‎

Before doing anything else, boot your Pi from the SD card and ensure the OS ‎is up to date (otherwise it may not have the required updates for the NVMe ‎to be properly recognised).‎

Open a terminal (Ctrl-Alt-T, or find it in the Pi OS menus) and type:‎

sudo apt update && sudo apt upgrade -y

The Raspberry Pi 5 uses an EEPROM to store some boot settings. This needs ‎to be updated to a version dated newer than December 2023. The command ‎above should have done that for you, but to double check, type the following ‎into a terminal to check:‎

sudo rpi-eeprom-update

If it is not post-December 2023 type the following into a terminal to start the ‎configuration tool:‎

sudo raspi-config

Scroll down to 'Advanced Options' and press Enter:‎

scroll_17

Scroll down to 'Bootloader Version' and press Enter:‎

scroll_18

And finally choose 'Latest', and press Enter:‎

scroll_19

Confirm by pressing Enter:‎

confirm_20

And exit from the tool by selecting 'Finish':‎

finish_21

If asked to reboot, select 'Yes'.‎

reboot_22

Checking NVMe Base Installation

Before installing an OS, you should first check that the ribbon cable has been ‎connected correctly and the SSD installed properly.‎

Boot your Raspberry Pi from a microSD card.‎

Open a Terminal window and type:‎

ls /dev/nvme0‎

If the file exists (i.e. /dev/nvme0 is repeated back in the terminal) then all is ‎good and you are ready to proceed.‎

If that file cannot be found, the terminal will report:‎

ls: cannot access \'/dev/nvme0\': No such file or directory‎

In which case, turn off your Raspberry Pi and recheck the ribbon cable ‎connections and the SSD installation. Remember that the clips on both the ‎NVMe Base and Raspberry Pi 5 need to be folded/pressed back in place for ‎the connections to work.‎

OS Installation Options

Once the NVMe Base has been properly connected, you have the following ‎options for installing an OS:‎

  • Install a new OS using Raspberry Pi OS Desktop
  • Install a new OS using using Network Install
  • Clone a current microSD card with Raspberry Pi OS Desktop
  • Clone a current microSD card with Raspberry Pi OS Lite

Boot your Raspberry Pi 5 from microSD card and follow your chosen option.‎

INSTALL A NEW OS USING RASPBERRY PI OS DESKTOP

In this scenario you will need a microSD card with the Desktop version of the ‎Raspberry Pi OS installed. Boot your Raspberry Pi from this card, then open ‎‎'Imager' from the Accessories menu.‎

pi_23

First choose the device - in this case the Raspberry Pi 5:‎

pi_24

Then choose the OS:‎

pi_25

And finally, the storage:‎

pi_26

Once it is complete, go to the Setting the Raspberry Pi to boot from the NVMe ‎SSD section below.‎

INSTALL A NEW OS USING NETWORK INSTALL

Raspberry Pi OS Lite is missing a number of useful tools which require the ‎Desktop. However, there is an alternative - Network Boot can be used to ‎install an OS onto any attached storage on the Raspberry Pi. You will need to ‎plug your Raspberry Pi into an ethernet network for this to run.‎

Type the following into a terminal to start the configuration tool:‎

sudo raspi-config

Scroll down to 'Advanced Options' and press Enter:‎

options_27

Scroll down to 'Boot Order' and press Enter:‎

options_28

Choose 'Network Boot' and press Enter:‎

options_29

Configuration will be confirmed. Press Enter:‎

options_30

Return to the first screen by selecting 'Back' or pressing the Esc key. Then ‎navigate to Finish using the right cursor key.‎

key_31

You will be asked whether you want to reboot now. Click 'No':‎

reboot_32

You now need to shut down your Raspberry Pi 5, remove the microSD card, ‎remove power, and then reboot.‎

Your Raspberry Pi will reboot and show a red/white screen asking you to hold ‎the Shift key to boot from the network. Hold the shift key until the network ‎installer starts to load. Leave it to do so, and when the familiar Raspberry Pi ‎Installer loads, choose your required OS, and choose the SSD as storage.‎

The OS will be downloaded and installed onto your SSD. Once complete, the ‎Raspberry Pi will be restarted, and your chosen OS booted from your SSD. ‎Remember, first boot may take a little longer than usual as the OS may be ‎configuring itself. Don't worry, the next boot will be much faster!‎

CLONE A CURRENT MICROSD CARD WITH RASPBERRY PI OS DESKTOP

If you have been using your Raspberry Pi 5 for a while and have it set up how ‎you want, with the applications you want installed, then you can 'clone' the ‎current microSD card onto the SSD.‎

The desktop version of Raspberry Pi OS has a tool pre-installed for this task. ‎Under the Accessories menu start 'SD Card Copier'. Choose the current ‎microSD (/dev/mmcblk0) card in the Copy From Device dropdown and the ‎NVMe SSD (/dev/nvme0n1) from the Copy To Device dropdown:‎

copy_33

Click on start to start copying your microSD card over to the SSD.‎

Once it is complete, go to the Setting the Raspberry Pi to Boot from the NVMe ‎SSD section below.‎

CLONE A CURRENT MICROSD CARD WITH RASPBERRY PI OS LITE

The SD Card Copier application is not available in Raspberry Pi OS Lite, so ‎instead you will have to use the 'dd' ('disk duplicator') command. Various ‎devices in Linux are identified by 'device files' located in the /dev folder. The ‎microSD card's device file is /dev/mmcblk0, and the NVMe SSD device file ‎is /dev/nvme0n1.‎

From the terminal, type the following:‎

sudo dd if=/dev/mmcblk0 of=/dev/nvme0n1 status=progress

The microSD data will be copied over to the SSD. Once it is complete, go to ‎the Setting the Raspberry Pi to Boot from the NVMe SSD section below.‎

Setting the Raspberry Pi to Boot from the NVMe SSD

There is one vital step left to do, and that's to set the Raspberry Pi to boot ‎from the SSD.‎

Reboot your Raspberry Pi once again from the microSD card, open a terminal ‎window and start the Raspberry Pi configuration tool with:‎

sudo raspi-config

Scroll down to 'Advanced Options' and press Enter:‎

setting_34

Scroll down to 'Boot Order' and press Enter:‎

setting_35

Choose NVMe/USB Boot' and press Enter:‎

setting_36

Configuration will be confirmed. Press Enter:‎

configure_37

Return to the first screen by selecting 'Back' or pressing the Esc key. Then ‎navigate to Finish using the right cursor key.‎

screen_38

You will be asked whether you want to reboot now. Click 'Yes':‎

reboot_39

Your Raspberry Pi should now boot from the NVMe SSD.‎

Optional and Unsupported Speed Increase

What? There is more speed?‎

As mentioned at the start, the Raspberry Pi 5 PCIe port uses the PCIe 1.0 ‎specification. However, it can run faster, although this is not officially ‎supported and is a little experimental. This only works on Raspberry Pi OS.‎

To enable 'PCIe 3' mode, open a terminal window and type:‎

sudo nano /boot/firmware/config.txt

Add the follow line to the [all] section at the end of the file:‎

dtparam=pciex1_gen=3‎

Save the file (using Ctrl+X, y and Enter). Reboot again and you may see a ‎speed increase!‎

Next steps

You should now have a Raspberry Pi 5 which is no longer limited by the ‎speed of the microSD card, with extra capacity to store all your music, photos ‎and videos!‎

That's all folks!‎

制造商零件编号 SC1112
SBC 2.4GHZ 4 CORE 8GB RAM
Raspberry Pi
制造商零件编号 SC1153
27W USB-C PSU UL(US), WHITE
Raspberry Pi
制造商零件编号 SC1148
ACTIVE COOLER
Raspberry Pi
Add all DigiKey Parts to Cart
TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum