Pironman 5 Max, Pi 5 8Gb, Dual NVMe doesn't recognize Samsung 970 Evo Plus 1Tb

I need some help getting my Pironman 5 Max and Pi 5 8Gb running Debian 13 (Trixie) to recognize the Samsung 970 Evo Plus 1Tb NVMe SSD on the Dual NVMe Pip. I’ve been struggling with this for over 2 weeks and have tried absolutely every combination of hardware and software changes that I could find on this topic. I’ve tried reseating the FPC ribbon cable more than a dozen times and even tried the spare one that came in the kit. For power I’m using the CanaKit 45W USB C Power Supply, so it should be providing more than enough power.

The Dual NVMe PIP is powered on and has a steady green light indicating power. But no matter what I’ve done, I’ve never seen any red flashing status lights on the NVMe PIP. And I’m getting the following error while booting.

brcm-pcie 1000110000.pcie: link down

At the moment, I’m booting to a 64Gb SD card and just wanting the NVMe SSD for auxilliary storage. If I can get this NVMe working reliably, then I will copy the SD Card to the SSD and boot from that instead of the SD card.

Following are the contents of the various involved files, and even some photos of the ribbon cable and how it’s latched into the Pi and into the PIP.

Contents of /boot/firmware/config.txt

For more options and information see

Some settings may impact device functionality. See link above for details

Uncomment some or all of these to enable the optional hardware interfaces

#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

Enable audio (loads snd_bcm2835)

dtparam=audio=on

Additional overlays and parameters are documented

/boot/firmware/overlays/README

Automatically load overlays for detected cameras

camera_auto_detect=1

Automatically load overlays for detected DSI displays

display_auto_detect=1

Automatically load initramfs files, if found

auto_initramfs=1

Enable DRM VC4 V3D driver

dtoverlay=vc4-kms-v3d
max_framebuffers=2

Don’t have the firmware create an initial video= setting in cmdline.txt.

Use the kernel’s default instead.

disable_fw_kms_setup=1

Run in 64-bit mode

arm_64bit=1

Disable compensation for displays with overscan

disable_overscan=1

Run as fast as firmware / board allows

arm_boost=1

[cm4]

Enable host mode on the 2711 built-in XHCI USB controller.

This line should be removed if the legacy DWC2 controller is required

(e.g. for USB device mode) or if USB support is not required.

otg_mode=1

[cm5]
dtoverlay=dwc2,dr_mode=host

[all]

Enable NVME Drives

dtparam=pciex1_no_10s=on
dtparam=pciex1,pciex1_gen=2

Here is the contents of the EEPROM file

[all]
PCIE_PROBE=1
BOOT_UART=1
BOOT_ORDER=0xf461
POWER_OFF_ON_HALT=1
WAKE_ON_GPIO=1

Here is the full contents of the log when I grep for PCIE.

groninga@piosoffice:~ $ sudo dmesg | grep -i pcie
[ 0.000000] 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=32 numa=fake=8 system_heap.max_order=0 iommu_dma_numa_policy=interleave smsc95xx.macaddr=2C:CF:67:81:EB:B8 vc_mem.mem_base=0x3fc00000 vc_mem.mem_size=0x40000000 console=ttyAMA10,115200 console=tty1 root=PARTUUID=1e346a26-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles ds=nocloud;i=rpi-imager-1779346540026 cfg80211.ieee80211_regdom=US
[ 0.368869] brcm-pcie 1000110000.pcie: host bridge /axi/pcie@1000110000 ranges:
[ 0.368880] brcm-pcie 1000110000.pcie: MEM 0x1b80000000..0x1bffffffff → 0x0080000000
[ 0.368886] brcm-pcie 1000110000.pcie: MEM 0x1800000000..0x1b7fffffff → 0x0400000000
[ 0.368892] brcm-pcie 1000110000.pcie: IB MEM 0x0000000000..0x0fffffffff → 0x1000000000
[ 0.368897] brcm-pcie 1000110000.pcie: IB MEM 0x1000131000..0x1000131fff → 0xfffffff000
[ 0.370224] brcm-pcie 1000110000.pcie: PCI host bridge to bus 0001:00
[ 0.370252] pci 0001:00:00.0: [14e4:2712] type 01 class 0x060400 PCIe Root Port
[ 0.712469] brcm-pcie 1000110000.pcie: link down
[ 0.712644] pcieport 0001:00:00.0: PME: Signaling with IRQ 38
[ 0.712701] pcieport 0001:00:00.0: AER: enabled with IRQ 38
[ 0.712941] brcm-pcie 1000120000.pcie: host bridge /axi/pcie@1000120000 ranges:
[ 0.712948] brcm-pcie 1000120000.pcie: MEM 0x1f00000000..0x1ffffffffb → 0x0000000000
[ 0.712952] brcm-pcie 1000120000.pcie: MEM 0x1c00000000..0x1effffffff → 0x0400000000
[ 0.712957] brcm-pcie 1000120000.pcie: IB MEM 0x1f00000000..0x1f003fffff → 0x0000000000
[ 0.712961] brcm-pcie 1000120000.pcie: IB MEM 0x0000000000..0x0fffffffff → 0x1000000000
[ 0.712965] brcm-pcie 1000120000.pcie: IB MEM 0x1000130000..0x1000130fff → 0xfffffff000
[ 0.714203] brcm-pcie 1000120000.pcie: PCI host bridge to bus 0002:00
[ 0.714218] pci 0002:00:00.0: [14e4:2712] type 01 class 0x060400 PCIe Root Port
[ 0.816471] brcm-pcie 1000120000.pcie: clkreq-mode set to default
[ 0.816475] brcm-pcie 1000120000.pcie: link up, 5.0 GT/s PCIe x4 (!SSC)
[ 0.816495] pci 0002:01:00.0: [1de4:0001] type 00 class 0x020000 PCIe Endpoint
[ 0.824599] pcieport 0002:00:00.0: enabling device (0000 → 0002)
[ 0.824623] pcieport 0002:00:00.0: PME: Signaling with IRQ 39
[ 0.824659] pcieport 0002:00:00.0: AER: enabled with IRQ 39
[ 2.360005] input: GeneralPlus USB Audio Device as /devices/platform/axi/1000120000.pcie/1f00200000.usb/xhci-hcd.0/usb1/1-2/1-2:1.3/0003:1B3F:2008.0001/input/input0
[ 2.626215] input: LiteOn HP USB Multimedia Keyboard as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2.3/3-2.3.1/3-2.3.1:1.0/0003:04CA:0040.0002/input/input1
[ 2.754195] input: LiteOn HP USB Multimedia Keyboard System Control as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2.3/3-2.3.1/3-2.3.1:1.1/0003:04CA:0040.0003/input/input2
[ 2.808517] input: LiteOn HP USB Multimedia Keyboard Consumer Control as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2.3/3-2.3.1/3-2.3.1:1.1/0003:04CA:0040.0003/input/input3
[ 2.850192] input: LiteOn HP USB Multimedia Keyboard as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2.3/3-2.3.1/3-2.3.1:1.2/0003:04CA:0040.0004/input/input5
groninga@piosoffice:~ $

FPC Cable on the Pi 5, on the PIP, and showing the solid green power light when turned on.

In any case, I’m completely baffled and quite frustrated at this point. Any help or advice would certainly be appreciated. Perhaps the Dual NVMe PIP is bad? I’ve tried so many combinations of configurations and settings in the Eeprom and config.txt files that my head is spinning.

Thank you for your detailed post and patience. We apologize for the delayed reply due to the weekend break.

I’ve carefully reviewed your kernel log and configuration. The key clue is the link down error for PCIe controller 0001:00 (which connects to your NVMe PIP), while 0002:00 (USB/Ethernet) is working correctly. This indicates the issue is isolated to the PIP ↔ SSD side.

Please try the following steps one by one:

  1. Try the other M.2 slot
    The Dual NVMe PIP has two M.2 slots connected via a PCIe switch. Please install your SSD into the other slot and test if it gets detected.

  2. Adjust PCIe Gen parameters
    Your Samsung 970 Evo Plus is a Gen3 drive. Your current setting (pciex1_gen=2) forces Gen2, which some Gen3 drives may fail to link with. Try:

Remove the Gen limit first (let auto-negotiation work):
dtparam=pciex1
If still not working, force Gen3:
dtparam=pciex1_gen=3
Reboot after each change.

  1. Remove pciex1_no_10s=on
    This parameter removes a 10-second delay after PCIe reset. Some SSDs need that delay for self-test and link training. Try commenting out this line.

  2. Check detection from SD card boot
    Boot from your SD card and run these commands, then share the output:
    lspci -vvv
    lsblk
    sudo dmesg | grep -i pcie
    We especially want to see if lspci shows the PCIe switch and NVMe controller.

  3. Test with a different NVMe SSD (if possible)
    Try another NVMe drive (preferably a common Gen3 or Gen2 model) on the PIP. This will help us determine if the issue is specific to the Samsung 970 Evo Plus compatibility.

Once you’ve tried these steps, please share the results. Thank you again for your detailed report and cooperation.

Okay, I moved the Samsung 970 Evo Plus to the other slot on the NVMe PIP and then tried the following.

Commented out the ‘dtparam=pciex1_no_10s=on’ in the [all] section at the bottom of the config.txt and having just the ‘dtparam=pciex1’. Rebooted, received the same error, ‘Link down’.

Commented out the ‘dtparam=pciex1_no_10s=on’ in the [all] section at the bottom of the config.txt and having just the ‘dtparam=pciex1_gen=3’. Rebooted, received the same error, ‘Link down’.

In both cases, absolutely no red blinking status LED’s next to the green power LED.

Results of the ‘lspci -vvv’

groninga@piosoffice:~ $ lspci -vvv
0002:00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21) (prog-if 00 [Normal decode])
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 39
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
Memory behind bridge: 00000000-004fffff [size=5M] [32-bit]
Prefetchable memory behind bridge: 00000000fff00000-00000000000fffff [disabled] [64-bit]
Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- Reset- FastB2B-
PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
Capabilities:
Kernel driver in use: pcieport

0002:01:00.0 Ethernet controller: Raspberry Pi Ltd RP1 PCIe 2.0 South Bridge
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 39
Region 0: Memory at 1f00410000 (32-bit, non-prefetchable) [size=16K]
Region 1: Memory at 1f00000000 (32-bit, non-prefetchable) [virtual] [size=4M]
Region 2: Memory at 1f00400000 (32-bit, non-prefetchable) [size=64K]
Capabilities:
Kernel driver in use: rp1

Results from ‘lsblk’

groninga@piosoffice:~ $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 2G 0 loop
mmcblk0 179:0 0 59.5G 0 disk
├─mmcblk0p1 179:1 0 512M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 59G 0 part /
zram0 254:0 0 2G 0 disk [SWAP]

Results from ‘sudo dmesg | grep -i pcie’

groninga@piosoffice:~ $ sudo dmesg | grep -i pcie
[ 0.000000] 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=32 numa=fake=8 system_heap.max_order=0 iommu_dma_numa_policy=interleave smsc95xx.macaddr=2C:CF:67:81:EB:B8 vc_mem.mem_base=0x3fc00000 vc_mem.mem_size=0x40000000 console=ttyAMA10,115200 console=tty1 root=PARTUUID=1e346a26-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles ds=nocloud;i=rpi-imager-1779346540026 cfg80211.ieee80211_regdom=US
[ 0.452767] brcm-pcie 1000110000.pcie: host bridge /axi/pcie@1000110000 ranges:
[ 0.452780] brcm-pcie 1000110000.pcie: MEM 0x1b80000000..0x1bffffffff → 0x0080000000
[ 0.452786] brcm-pcie 1000110000.pcie: MEM 0x1800000000..0x1b7fffffff → 0x0400000000
[ 0.452793] brcm-pcie 1000110000.pcie: IB MEM 0x0000000000..0x0fffffffff → 0x1000000000
[ 0.452798] brcm-pcie 1000110000.pcie: IB MEM 0x1000131000..0x1000131fff → 0xfffffff000
[ 0.454134] brcm-pcie 1000110000.pcie: PCI host bridge to bus 0001:00
[ 0.454162] pci 0001:00:00.0: [14e4:2712] type 01 class 0x060400 PCIe Root Port
[ 0.796428] brcm-pcie 1000110000.pcie: link down
[ 0.796597] pcieport 0001:00:00.0: PME: Signaling with IRQ 38
[ 0.796649] pcieport 0001:00:00.0: AER: enabled with IRQ 38
[ 0.796915] brcm-pcie 1000120000.pcie: host bridge /axi/pcie@1000120000 ranges:
[ 0.796923] brcm-pcie 1000120000.pcie: MEM 0x1f00000000..0x1ffffffffb → 0x0000000000
[ 0.796927] brcm-pcie 1000120000.pcie: MEM 0x1c00000000..0x1effffffff → 0x0400000000
[ 0.796933] brcm-pcie 1000120000.pcie: IB MEM 0x1f00000000..0x1f003fffff → 0x0000000000
[ 0.796938] brcm-pcie 1000120000.pcie: IB MEM 0x0000000000..0x0fffffffff → 0x1000000000
[ 0.796942] brcm-pcie 1000120000.pcie: IB MEM 0x1000130000..0x1000130fff → 0xfffffff000
[ 0.798183] brcm-pcie 1000120000.pcie: PCI host bridge to bus 0002:00
[ 0.798199] pci 0002:00:00.0: [14e4:2712] type 01 class 0x060400 PCIe Root Port
[ 0.900431] brcm-pcie 1000120000.pcie: clkreq-mode set to default
[ 0.900434] brcm-pcie 1000120000.pcie: link up, 5.0 GT/s PCIe x4 (!SSC)
[ 0.900455] pci 0002:01:00.0: [1de4:0001] type 00 class 0x020000 PCIe Endpoint
[ 0.908562] pcieport 0002:00:00.0: enabling device (0000 → 0002)
[ 0.908584] pcieport 0002:00:00.0: PME: Signaling with IRQ 39
[ 0.908625] pcieport 0002:00:00.0: AER: enabled with IRQ 39
[ 2.443849] input: GeneralPlus USB Audio Device as /devices/platform/axi/1000120000.pcie/1f00200000.usb/xhci-hcd.0/usb1/1-2/1-2:1.3/0003:1B3F:2008.0001/input/input0
[ 2.710037] input: LiteOn HP USB Multimedia Keyboard as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2.3/3-2.3.1/3-2.3.1:1.0/0003:04CA:0040.0002/input/input1
[ 2.870020] input: LiteOn HP USB Multimedia Keyboard System Control as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2.3/3-2.3.1/3-2.3.1:1.1/0003:04CA:0040.0003/input/input2
[ 2.924479] input: LiteOn HP USB Multimedia Keyboard Consumer Control as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2.3/3-2.3.1/3-2.3.1:1.1/0003:04CA:0040.0003/input/input3
[ 2.966053] input: LiteOn HP USB Multimedia Keyboard as /devices/platform/axi/1000120000.pcie/1f00300000.usb/xhci-hcd.1/usb3/3-2/3-2.3/3-2.3.1/3-2.3.1:1.2/0003:04CA:0040.0004/input/input5

And lastly, I don’t currently have another NVMe SSD to test with. However, I did confirm that the Samsung 970 Evo Plus is on the list of SSD’s that are supposed to be compatible with this Pironman 5 Max and the Dual NVMe PIP.

Based on all the testing completed so far, the issue does not appear to be software-related.Since the PCIe link is not being established and the SSD is not being detected in either NVMe slot, we believe the Dual NVMe PIP itself may be faulty.To resolve this as quickly as possible, we would like to send you a replacement Dual NVMe PIP for testing.Please contact service@sunfounder.com to provide your shipping address and original order number if possible.

Thank you! I’ve reached out to the support team and have requested a replacement PIP. Once I get that and have replaced this existing one, I’ll report back with the results. Thanks again for the assistance!

Just received the new NVME PIP this afternoon, installed it, mounted the NVME SSD, and VIOLA! Everything worked! So it was a bad PIP all this time.

Thanks again for helping me to get a new one, and all the support thru the diagnosis. I really appreciate the help!

That’s great news! Thank you for the update, and we’re very glad the new NVMe PIP resolved the issue.We appreciate your patience throughout the diagnosis and your kind words. If you need any further assistance, please don’t hesitate to reach out.