Help with booting from Pimoroni Pi 5 NVMe board

I’ve read a lot of articles and followed lots of instructions but I cannot get the Pi 5 to boot from an NVMe drive connected to a Pimoroni NVMe Base.

I’ve tried 4 drives, including the one I’m using to boot a Compute Module 4. Two drives are not seen at all, so they can’t be used. The Compute Module drive is seen quite happily when the Pi OS is running, but apparently it cannot be seen at boot time. The other drive is also happy, and the imager happily installs a Pi 5 64 bit OS on to it. It is seen by gparted and lsblk. I have added dtparam=nvme to config.txt on both the SD card and the NVMe drive, run the rpi-eeprom-config --edit and added BOOT_ORDER=0xf416 and PCIE_PROBE=1 and rebooted. But every time I try something the Pi just spits out can’t find device /dev/nvme at boot time.

So far I have tried the following drives: Toshiba (in use on the Compute Module 4 via a WonderShare board), ForeSee, Transcend and Liteon. The Liteon and the Transcend were not recognised at all by the Pi 5.

I think it must be something I not doing, or doing wrong, because the reviews are full of booting success stories!

Any help would be much appreciated.

Update: the Transcend and Liteon drives are SATA, which would be why they were not recognised. The Toshiba and Foresee are both NVMe

Did you already update your bootloader? The shop page tells you to run sudo rpi-eeprom-update, but they don’t tell you that you need to run raspi-config afterwards to actually select and activate the newest version.

I followed the instructions: Imager appeared to put Pi OS on the drive OK - a Kingston NV2, but I cannot persuade the Pi to boot from it. If I boot from the SD card it works with the NVME drive disconnected. If I re-connect the drive, it displays the first Pi logo briefly, then goes gray, which also happens if I attempt to boot with no SD card. What have I done wrong? NOTE - when it does boot, it complains about the power supply, although I am using a real Pi supply, with 5v & 5A. Because I cannot boot with the NVME drive connected, I cannot now attempt to re-install Pi OS using Imager from the SD card!

1 Like

Hi bablokb,

It took a couple of goes but I also worked out that you have to run sudo rpi-eeprom-update, then raspi-config and then reboot. It would be nice if it output, to the boot console, that the update had been successful or not.

Hi SageSoft,

Sounds like you’re in a similar situation to me. There’s a 10 second timeout while it waits for the NVMe drive to instantiate. I also thought the Pi had hung until I just left it and some time later, it reported 10 seconds but I think it was longer, it output that device nvme could not be found. I think the wait is superfluous, at boot time either the disk is present or it is not! Try again and wait 30 seconds to see if it gives up looking for the NVMe drive and boots from SD. (It also appears to attempt to boot from USB drives as well, if I’m reading the output correctly)

It looks to me, as if I’d know! as if something is missing from the bootloader. If the OS can find and mount the NVMe disk, but it’s not present at boot time, it has to be due to inadequacies in the boot code. Is the disk appearing on an odd device file? By the time the main OS is up and running the device is right where all the instructions say it will be.

Could the NVMe base be faulty in some way?

Going to dig up a drive and see if I can replicate. Is the kernel and boot filesystem up to date on the NVMe drive?

Edit: well I failed at the first hurdle. My weird 2230 drive is either unsupported, or my pre-release base is flaky.

Progress! I removed the drive and changed /boot/config.txt to comment out “dtparam=nvme” then re-booted - success, so I shut it down and re-connected the nvxm drive and re-booted - success (WHY?) The file manager reported 510Mb under ‘bootfs’ and 458Gb under ‘rootfs’ of disk space, do is obviously looking at the NVME drive. I then shut down, removed the SC card and re-booted, but that brought back the previous problem of stalling after initial logo: it did not continue, even when I left it long enough to type up this message. I shall now replace the SD card and ignore it, since I now have the extra capacity.

You could also try: GitHub - bablokb/pi-boot-switch: Boot-Switcher for Raspberry Pi multiboot systems. This tool allows you to boot from SD-card (kernel, config) and run a system from USB/NVME/SD whatever you want. Of course, with NVME you don’t want an additional SD-card, but the tool is also very handy for copying installations around. On my production systems, I typically have two OS installations. I can switch between them, e.g. to make an update, and if this fails, just switch back again.

The problem I have now, with both the SD card and the NVME drives installed, is that Linux shows me 2 file-systems, which can be rather confusing. If possible, before I get too far into using the new drive, I might wipe it and the SD card clean and start from scratch, if I can define the correct method of installation. Is there a definitive methodology anyone?

Methodology for wiping or installation?

I now cannot get the nvme drive to work at all. If I boot of a re-loaded sdcard, with no nvme drive connected, the Pi works. BUT, if I connect the nvme drive, the boot process stops after the first white logo screen, goes blank & gray,then hangs up. I cannot re-flash the nvme drive, beause I have no other way to access it - I do not want to waste money on a USB-NVME adapter. At the current rate, I shall have to return the drive and adapter.

OK, problem solver / circumvented. My PC has an M.2 slot on the motherboard, so I installed the Kingston drive and used a partition manager to delete both partitions. Removed the drive, put back in the Pi with a clean SD card, after doing the usual updates and ran Imager to install Pi OS on the NVME drive, shut down, remove the SD card and EUREKA - it works. The drive now has a 512Mb partition and a 465.3Gb partition for me to work with. next, install Java & Apache Derby, then get writing & collecting data.

I’ve tried completely deleting the drive and then letting the app create the partitions, but still doesn’t work.

@SageSoft @OS1 I think that the eeprom update ‘default’ is now also one that plays nicely with PCIe/NVMe setup, but like you’ve discovered, you can go into raspi-config at terminal and choose ‘latest’ bootloader instead of ‘default’.

I’d definitely start with an SD card made with version 1.8.4 of imager and using the latest RPi OS for RPi 5 64-bit. This should be the top option when you choose Raspberry Pi 5 in the new board filter in Imager.

From there, I’d boot the RPi 5 from the SD card with the NVMe Base and NVMe installed, and use Imager in RPi OS to install onto the SSD.

If it can be seen and works fine in Imager, then there should be no barrier to booting from it with a recent OS image and if ‘NVMe boot’ has been chosen in raspi-config via terminal.

If all that is fine, and you’re still not able to boot from it, with or without the SD card, then something else is probably afoot.

There are a few levels of ‘non-boot’ that indicate what might be wrong:

Grey/Red/no sign of life at boot: The drive and RPi are very upset with something. Hope the power button down to turn off and try again.

Stuck at the bootloader (black screen with raspberries and a little bit of text) which tries NVMe/SD on 10 second cycles: bootable partition not found. If you wait and watch the text, you can see it reporting if it can see the NVMe, and if it can see partitions, but not boot from them.

Stuck at ‘busybox’: The system found a bootable partition, but then couldn’t make the transition to the full boot image. This is probably something that went wrong with imaging the drive, or you’re using a weird OS, or tried to manually partition and install the OS or similar.

Booted into SD card despite NVMe being the first boot option: The bootloader didn’t find a bootable partition on the NVMe, or could not see the NVMe at all during boot.

I think that’s a summary of the main symptoms I’ve seen, and they can have many causes from the cable being not quite seated correctly, dust in the connector, RPi or NVMe drive not happy with each other for some reason, or something not up to date or right with the software side.

I’ve tested the Kingston NV1 and KC3000 successfully, but not the NV2, so I’ll get one of those to try. It may be a power-hungry NVMe, or have other quirks.

If you’ve definitely got the latest (Jan 5th 2024) EEPROM, definitely installed the latest OS, and reseated the cable a lot, then you should send a photo and the model/exact drive SKU to support@pimoroni.com and we’ll see what we can suggest to get you up and running. We’re quite overwhelmed at the moment, but we will get back to you :-)

@SageSoft I had a similar result to you for the first time today! I found an old Gigabyte drive (appears identical to a new PNY drive we have) but at first it would not boot unless the SD card was also inserted.

After updating to latest OS on it, and rebooting a few times with various glitches, it seemed to settle down and play nice and boot with the SD card. No particular rhyme or reason as to why. The setup works flawlessly before and after with other drives in my stable of tested ones.

Sorry for the delay.

I’d definitely start with an SD card made with version 1.8.4 of imager and using the latest RPi OS for RPi 5 64-bit.
Did this

From there, I’d boot the RPi 5 from the SD card with the NVMe Base and NVMe installed, and use Imager in RPi OS to install onto the SSD.
Did this

If it can be seen and works fine in Imager, then there should be no barrier to booting from it with a recent OS image and if ‘NVMe boot’ has been chosen in raspi-config via terminal.
No issues, disk mounts perfectly and NVMe Boot chosen

Grey/Red/no sign of life at boot
No

Stuck at the bootloader
No

Booted into SD card despite NVMe being the first boot option: The bootloader didn’t find a bootable partition on the NVMe, or could not see the NVMe at all during boot.
This is where I am. No idea why it wouldn’t find a bootable partition when the partition map has been created by the RPi Imager. It complains that it can’t find /dev/nvme which would indicate that the bootloader is not even seeing the drive, let alone any partitions.

The SSD is the Foresee 64Gb NVMe drive, I believe these are used in Steam boxes.

Mine won’t boot to an OS at all without the SD card. With the NVMe drive attached it still boots to SD

I’ve had the cable out and reinserted it, makes no difference.

@OS1 I have a strong feeling this will be a drive issue. These are small 2230 drives, right?, and tend to have weirdness like integrated flash and controller. Without testing that specific drive, I can’t say, but I suspect adding extra power via the 5V header won’t help with the boot issue.

You had a Toshiba drive too, yeah? How does that behave?