NVMe base isn't recognized

I’ve got a Patriot P300 256 GB NVMe drive installed in the NVMe Base, but it doesn’t seem to be working. I’m running the latest RaspberryOS 64-bit on a 64 GB SD card, using the official 27W power supply. I have the cable between the RPi and the NVMe board securely connected, at least as far as I can tell, with the text on the “outside”. The Raspberry Pi boots just fine; I’ve updated the firmware (rpi-eeprom-update says Jan 22), and added the lines to the config.txt.

That said, I am getting the following in the logs (running “sudo journalctl -b -g pcie”):

[Mon Feb 5 17:24:00 2024] brcm-pcie 1000110000.pcie: host bridge /axi/pcie@110000 ranges:
[Mon Feb 5 17:24:00 2024] brcm-pcie 1000110000.pcie: No bus range found for /axi/pcie@110000, using [bus 00-ff]
[Mon Feb 5 17:24:00 2024] brcm-pcie 1000110000.pcie: MEM 0x1b00000000…0x1bfffffffb → 0x0000000000
[Mon Feb 5 17:24:00 2024] brcm-pcie 1000110000.pcie: MEM 0x1800000000…0x1affffffff → 0x0400000000
[Mon Feb 5 17:24:00 2024] brcm-pcie 1000110000.pcie: IB MEM 0x0000000000…0x0fffffffff → 0x1000000000
[Mon Feb 5 17:24:00 2024] brcm-pcie 1000110000.pcie: setting SCB_ACCESS_EN, READ_UR_MODE, MAX_BURST_SIZE
[Mon Feb 5 17:24:00 2024] brcm-pcie 1000110000.pcie: Forcing gen 2
[Mon Feb 5 17:24:00 2024] brcm-pcie 1000110000.pcie: PCI host bridge to bus 0000:00
[Mon Feb 5 17:24:00 2024] pci_bus 0000:00: root bus resource [bus 00-ff]
[Mon Feb 5 17:24:00 2024] pci_bus 0000:00: root bus resource [mem 0x1b00000000-0x1bfffffffb] (bus address [0x00000000-0xfffffffb])
[Mon Feb 5 17:24:00 2024] pci_bus 0000:00: root bus resource [mem 0x1800000000-0x1affffffff pref] (bus address [0x400000000-0x6ffffffff])
[Mon Feb 5 17:24:00 2024] pci 0000:00:00.0: [14e4:2712] type 01 class 0x060400
[Mon Feb 5 17:24:00 2024] pci 0000:00:00.0: PME# supported from D0 D3hot
[Mon Feb 5 17:24:00 2024] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[Mon Feb 5 17:24:00 2024] brcm-pcie 1000110000.pcie: link down

I’m guessing those last two lines are the important bits, but I couldn’t find any other resources explaining what to try next.

Edit: Well, something changed; I still can’t find the drive, but after one more of innumerable reboots, I got some lights on the drive, and it doesn’t say “link down” any more, and “lspci” correctly lists it. However, no drive shows up anywhere; parted only shows the SD card. Did I miss something?

I don’t think this is your issue but I’ll mention it anyway.
Which config.txt did you edit? It’s now /firmware/config.txt.

I edited /boot/firmware/config.txt (there’s a handy “DO NOT EDIT THIS FILE” on the old one that points to the right direction, which I’m very glad of!).

I’m sure I’m just missing one crucial step to get all this working… I don’t have an NVMe to USB adapter to write the files on, so the NVMe drive currently has no partitions/file system, but I would expect it to still show up in parted, at least.

Hi Arman,

I am having the same issue. I see the board with lspci
❯ lspci
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
0001:01:00.0 Ethernet controller: Device 1de4:0001

but lsblk doesn’t show the drive…
I tried with 3 different nvme drive with no luck…

I’ve figured it out…
I had to first do a full update of my system (sudo apt update, …) then reboot and it booted up with a newer boot loader (Jan 5). my drive nows shows up.

@patl
If memory serves me correctly its.
sudo apt update
sudo apt upgrade
sudo rpi-eeprom-update
sudo rpi-config
Then set it to boot from the latest firmware.

At this point, the adapter is showing up; lspci reports:

0000:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
0000:01:00.0 Non-Volatile memory controller: INNOGRIT Corporation NVMe SSD Controller IG5216 (DRAM-less) (rev 01)
0001:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries Device 2712 (rev 21)
0001:01:00.0 Ethernet controller: Device 1de4:0001

It’s clearly there, but the actual drive isn’t showing up. I’ve realized that I don’t actually know much about getting this set up - normally there isn’t a step between “plug in hardware” and “drive shows up in /dev”!
The light on the drive flashes during startup (probably because I’ve set “BOOT_ORDER=0xf416” in rpi-eeprom-config), but after that, nothing. I’m willing to try about anything; any ideas?

Yes exactly what I did.

If you reboot back on your SD card and do:

❯ sudo rpi-eeprom-update -a
BOOTLOADER: up to date
CURRENT: Fri 5 Jan 15:57:40 UTC 2024 (1704470260)

What is your current boot loader?
For me that was the issue.

Hi, I have the same problem as yours. How did you get to detect the NVMe Base? Is there something I missed, besides:

  • latest system updates
  • latest bootloader
  • enable PCIe in /boot/firmware/config.txt
  • add PCIE_PROBE=1 to rpi-eeprom-config
  • reseat the flex cable

That’s what I did; double check that you’ve got the latest eeprom running:

BOOTLOADER: up to date
   CURRENT: Mon Jan 22 02:44:36 PM UTC 2024 (1705934676)
    LATEST: Mon Jan 22 02:44:36 PM UTC 2024 (1705934676)
   RELEASE: latest (/lib/firmware/raspberrypi/bootloader-2712/latest)

I did modify the boot order:

[all]
BOOT_UART=1
POWER_OFF_ON_HALT=0
BOOT_ORDER=0xf416
PCIE_PROBE=1

…but that’s about it. Of course, it’s still not working for me, either; it shows up under lspci, but the drive isn’t showing up at all.

1 Like

Actually, ran across this error:

dmesg | grep nvme
[    0.512253] nvme nvme0: pci function 0000:01:00.0
[    0.512285] nvme 0000:01:00.0: enabling device (0000 -> 0002)
[   51.017547] nvme nvme0: Device not ready; aborting initialisation, CSTS=0x0
[   51.024555] nvme nvme0: Removing after probe failure status: -19

I don’t even know if that is relevant, but is there any way to manually reinitialize?

I’ve ordered a usb-to-NVMe converter, in the hopes that I can maybe get it to work by flashing the drive from my desktop (or discover a bad drive, if that’s the case), but I’m beginning to get discouraged that I’ll ever get this to work.

Same feeling here. I didn’t even get to worry about the drives because the NVMe Base is not detected at all. I have opened a support ticket to Pimoroni, to which I do not expect to see an answer too soon. Meanwhile I am thinking to order a new board.

I am just curious, does your NVMe Base get detected in lspci even if there’s no drive attached?

I have exactly the same issue with the Pi5 set I received yesterday: the PCIe link is down, however, I am pretty sure I connected the flex cable correct, have the correct updates and settings. Also using a (bundled) Patriot P300 256 GB. I think I will switch to another SSD, to rule out an incompatibility on that point.

Same issue here. I’m not able to boot of the bundled Patriot.

The only way to see the nvme0n1 device is to satisfy these two conditions:

  • there are no partitions on the drive (I had to remove them using a usb case and fdisking)
  • the boot order is 0xf416 (or first checks the nvme and then boots from the usb since there is nothing on the nvme)

If I satisfy these two conditions and I’d change the order to 0xf461 then the drive nor the pci device is listed (lsblk or lspci) after reboot.

If I satisfy the above conditions and then write the rpios image I see the two partitions. But when I reboot (after setting the dtparms in the config.txt) then again nothing is listed (lsblk or lspci).

I saw a lot of things in this forum, but this observation was new (or I missed it in the forum). Does anybody recognize this?

what are “the lines”? I don’t see any steps in the instructions that have us modifying config.txt by hand? I feel like there is some secret set of instructions I don’t have access to.

I had booted from an SD Card and “if memory serves me” did the folowing to enable the PCIe / NVME bus.

sudo nano /boot/firmware/config.txt
dtparam=nvme

I then imaged my NVMe drive (from the Pi 5) with the Raspberry Pi Imager
Changed the boot order in raspi-config, and rebooted to it to do the first time install options.