NVME Base Questions

I picked up a Pimoroni NVME base from Microcenter over a bit ago. I got it working on the first try with a Crucial 1TB P310 drive (not on the compatibility list), and was able to clone my sd card over to it and use it for a bit.

I have come into a WD Black SN850X 2TB (Also not on the compatibility list) and wanted to use it to upgrade the storage.

This time I didn’t care about preserving what was there, so I flashed an sd card, and booted from that with the WD drive in the NVME base. That worked fine, and all signs pointed to the NVME as working. I used the Raspberry Pi Imager to install RPi OS 64 on the WD drive. No errors, worked great.

Here’s where the issue comes in.

If I remove the SD card (or change boot order), and try booting from the NVME drive, I get stopped with an error:

brcm-pcie 1000110000.pcie: link down

But even after that, without changing anything else, if I reinsert the SD card and boot from there, it boots up fine, and the NVME drive is visible in the Imager, and via lsblk, which shows the full 1.8TB.

So. . . the drive works, but not as boot? Am I boned? Is there some way to get this to boot? (and if not, can I at least use it as storage while continuing to boot from SD?)

It could be a timing problem. You can run sudo journalctl -b -g pcie to check for any PCIe related errors when you boot from SD. If you don’t see relevant errors, then yes, boot from SD and use the NVMe as storage.

BTW: I also do this. You won’t see a difference. Even measuring a difference is difficult. Booting will mostly do reads from the SD, and the SD is also flash, like the SSD. Booting from the SD has many advantages even if you don’t have problems with the SSD.

Thanks for the tip. I’m pretty new to Linux in general, so I’m not quite sure what I’m looking for here. I only see one thing that looks like an error (second to last line), but it seems to be a complaint about ethernet (which is working fine)?

Nov 03 08:43:44 Grace kernel: Kernel command line: reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe cgroup_disable=memory numa_policy=interleave nvme.max_host_mem_size_mb=0 numa=fake=8 system_heap.max_o>
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000110000.pcie: host bridge /axi/pcie@1000110000 ranges:
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000110000.pcie: No bus range found for /axi/pcie@1000110000, using [bus 00-ff]
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000110000.pcie: MEM 0x1b80000000..0x1bffffffff → 0x0080000000
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000110000.pcie: MEM 0x1800000000..0x1b7fffffff → 0x0400000000
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000110000.pcie: IB MEM 0x0000000000..0x0fffffffff → 0x1000000000
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000110000.pcie: IB MEM 0x1000131000..0x1000131fff → 0xfffffff000
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000110000.pcie: PCI host bridge to bus 0001:00
Nov 03 08:43:44 Grace kernel: pci 0001:00:00.0: [14e4:2712] type 01 class 0x060400 PCIe Root Port
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000110000.pcie: clkreq-mode set to safe
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000110000.pcie: link up, 5.0 GT/s PCIe x1 (!SSC)
Nov 03 08:43:44 Grace kernel: pci 0001:01:00.0: [15b7:5030] type 00 class 0x010802 PCIe Endpoint
Nov 03 08:43:44 Grace kernel: pci 0001:01:00.0: 4.000 Gb/s available PCIe bandwidth, limited by 5.0 GT/s PCIe x1 link at 0001:00:00.0 (capable of 63.012 Gb/s with 16.0 GT/s PCIe x4 link)
Nov 03 08:43:44 Grace kernel: pcieport 0001:00:00.0: enabling device (0000 → 0002)
Nov 03 08:43:44 Grace kernel: pcieport 0001:00:00.0: PME: Signaling with IRQ 38
Nov 03 08:43:44 Grace kernel: pcieport 0001:00:00.0: AER: enabled with IRQ 38
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000120000.pcie: host bridge /axi/pcie@1000120000 ranges:
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000120000.pcie: No bus range found for /axi/pcie@1000120000, using [bus 00-ff]
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000120000.pcie: MEM 0x1f00000000..0x1ffffffffb → 0x0000000000
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000120000.pcie: MEM 0x1c00000000..0x1effffffff → 0x0400000000
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000120000.pcie: IB MEM 0x1f00000000..0x1f003fffff → 0x0000000000
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000120000.pcie: IB MEM 0x0000000000..0x0fffffffff → 0x1000000000
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000120000.pcie: IB MEM 0x1000130000..0x1000130fff → 0xfffffff000
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000120000.pcie: PCI host bridge to bus 0002:00
Nov 03 08:43:44 Grace kernel: pci 0002:00:00.0: [14e4:2712] type 01 class 0x060400 PCIe Root Port
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000120000.pcie: clkreq-mode set to default
Nov 03 08:43:44 Grace kernel: brcm-pcie 1000120000.pcie: link up, 5.0 GT/s PCIe x4 (!SSC)
Nov 03 08:43:44 Grace kernel: pci 0002:01:00.0: [1de4:0001] type 00 class 0x020000 PCIe Endpoint
Nov 03 08:43:44 Grace kernel: pcieport 0002:00:00.0: enabling device (0000 → 0002)
Nov 03 08:43:44 Grace kernel: pcieport 0002:00:00.0: PME: Signaling with IRQ 44
Nov 03 08:43:44 Grace kernel: pcieport 0002:00:00.0: AER: enabled with IRQ 44
Nov 03 08:43:44 Grace kernel: input: Logitech USB Receiver as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2:1.0/0003:046D:C52B.0001/input/input0
Nov 03 08:43:44 Grace kernel: input: Logitech USB Receiver Mouse as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2:1.1/0003:046D:C52B.0002/input/input1
Nov 03 08:43:44 Grace kernel: input: Logitech USB Receiver Consumer Control as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2:1.1/0003:046D:C52B.0002/input/input2
Nov 03 08:43:44 Grace kernel: input: Logitech USB Receiver System Control as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2:1.1/0003:046D:C52B.0002/input/input3
Nov 03 08:43:44 Grace kernel: input: Logitech Wireless Device PID:4008 Mouse as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2:1.2/0003:046D:C52B.0003/0003:046D:4008.0004/input/input5
Nov 03 08:43:44 Grace kernel: input: Logitech K270 as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2:1.2/0003:046D:C52B.0003/0003:046D:4003.0005/input/input9
Nov 03 08:43:44 Grace kernel: input: Logitech M185 as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2:1.2/0003:046D:C52B.0003/0003:046D:4008.0004/input/input10
Nov 03 08:43:45 Grace mtp-probe[480]: checking bus 2, device 2: “/sys/devices/platform/axi/1000120000.pcie/1f00200000.usb/xhci-hcd.0/usb2/2-1”
Nov 03 08:43:45 Grace mtp-probe[479]: checking bus 3, device 2: “/sys/devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2”
Nov 03 08:43:51 Grace ModemManager[898]: [base-manager] couldn’t check support for device ‘/sys/devices/platform/axi/1000120000.pcie/1f00100000.ethernet’: not supported by any plugin
Nov 03 08:49:00 Grace sudo[1654]: grace : TTY=pts/0 ; PWD=/home/grace ; USER=root ; COMMAND=/usr/bin/journalctl -b -g pcie

Yes, there is no error. The one you spotted is from ModemManager, a component which I usually turn off (not needed if you connect using ethernet anyway).

Ok, so sounds like my resolution is to mount it as extra storage then?

Thanks again.

Yes. I know of no way to add some extra delay during boot to make the SSD visible to the bootloader. But you might want to ask this on the Raspberry Pi forum too. But as I said, there are many advantages to keeping storage and the OS-system separated. So in my eyes, you are not running a second class solution.