Can't see the M.2 "Drive"

Hi, I have the latest case and a Crucial P3 Plus 2TB PCIe M.2 2280 SSD | CT2000P3PSSD8 - I “can’t see” the M.2 while using df -h, any suggestions on how I can get it mounted as a filesystem?

df -h list only already mounted filesystems.

You should check first if the NVMe is detected as a block device.
sudo lsblk
should report a device like this
/dev/nvme0n1.

TY! I am clearly having a hardware issue, I do not see it as a device.

Please check if you you have that line in your config.txt:
dtparam=pciex1_gen=3

The 500GiB variant of the chosen NVMe model seems to need this because not backward compatible to Gen2.

Do you have have successfully executed the argon1.sh script and already checked that you have the current bootloader 2024-06-05 installed?

I just got my cases yesterday and have the same issue.
The M.2 drive is a Kingston 480G
blkid and lsblk show nothing.

Seems to be latest bootloader:
/usr/lib/firmware/raspberrypi/bootloader-2712/default/pieeprom-2024-06-05.bin

Can’t find any config.txt or argon1.sh

Please read the manual of the Argon ONE V3 case until the end first.

There you will find the link to the argon-eeprom.sh and argon1.sh scripts. With main stream distributions like PiOS, Ubuntu…, those scripts tries to make the most of the needed changes, like bootloader update, bootloader/EEPROM settings and config.txt. Additionally it provides (a currently buggy) service scripts for fan control and power button observation. After successfully installation you should find the service and configuration scripts at the /etc/argon directory.

Looking into crystal ball:
In the assumption, that you use a recent PiOS the config.txt file should be here: /boot/firmware/config.txt
https://www.raspberrypi.com/documentation/computers/config_txt.html

Attention: Also make sure that you have chosen an M.2 NVMe and not an M.2 SSD! This is a difference because only some NVMe with a Gen2 compatible controller are supported by the RPi5.

Not sure why, but my issue has been resolved.
The 480G Kingston M.2 card came straight from my RPI 4, not sure why it wasn’t recognized.
I formatted a new 500G Kingston M.2 card on an AMD server, installed it in the Argon case and it was recognized by OS.
Pulled it back out, put the 480G & the new 500G cards in the AMD server, mounted both and copied all the files to to new drive.
Don’t know what it is about the 480G card, but it works elsewhere.

Like I already wrote: M.2 SSD (SATA) != M.2 NVMe (PCIe). There are 2 different M.2 expansion boards with an integrated USB bridge chip for the Argon ONE V2 (RPi4) available:

  • SATA SSD (Key-B and Key B&M)
  • NVMe (M-Key)

Please look for a complete model/part number of your both Kingston M.2 devices, not only the size info and post it. This will clarify the behaviour and helps other potential users too if that an incompatible NVMe device.

1 Like

The 480G is Key B&M (not seen by OS)
The 500G is Key M

Is there a way to see the M2 unit and check it is connected? The “little ribbon cable” appears visually to be connected but maybe that is the issue?

My Crucial “Drive” is “brand new out of the box”, does it need formatting?

In your case, the controller of the NVMe could be the main issue. You must force PCIe of the RPi5 to Gen3, but it‘s like overclocking and not certified.

The best way to see that happens is the boot screen. Remove the SD card and look at boot screen what is reported (attempt to boot from NVMe or not, other error messages …)

Because the normal autodetection of the NVMe could fail with a not Gen2 compatible NVMe, maybe you must force this to. This is already part of the argon-eeprom.sh and argon1.sh scripts.

Check your bootloader config:
sudo vcgencmd bootloader_config
and config.txt:
cat /boot/firmware/config.txt

You can also check the kernel log:
sudo dmesg | grep -i pcie
and what
sudo lspci -v
reports.

If the needed changes at bootloader_config and config.txt is already made, than the flexible pcb (ribbon cable) can be the issue. But there is also a big risk that your NVMe isn‘t compatible/supported.

Formatting is not needed, to be detected as a block device or PCIe device.

Here is the output of that:

pi@raspberrypi5:~ $ sudo lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
mmcblk0     179:0    0 115.2G  0 disk 
├─mmcblk0p1 179:1    0   512M  0 part /boot/firmware
└─mmcblk0p2 179:2    0 114.7G  0 part /
pi@raspberrypi5:~ $ sudo vcgencmd bootloader_config
[all]
PSU_MAX_CURRENT=5000
WAKE_ON_GPIO=0
PCIE_PROBE=1
BOOT_UART=1
POWER_OFF_ON_HALT=1
BOOT_ORDER=0xf416

pi@raspberrypi5:~ $ 
pi@raspberrypi5:~ $ cat /boot/firmware/config.txt
# For more options and information see
# http://rptl.io/configtxt
# 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

[all]

dtparam=uart0=on
dtparam=nvme
dtparam=pciex1_gen=3
max_usb_current=1
dtoverlay=hifiberry-dacplus,slave
dtoverlay=gpio-ir,gpio_pin=23
dtparam=pciex1_gen=3
pi@raspberrypi5:~ $ sudo dmesg | grep -i pcie
[    0.000000] Kernel command line: reboot=w coherent_pool=1M 8250.nr_uarts=1 pci=pcie_bus_safe  smsc95xx.macaddr=D8:3A:DD:B8:02:7A vc_mem.mem_base=0x3fc00000 vc_mem.mem_size=0x40000000  console=ttyAMA10,115200 console=tty1 root=PARTUUID=61b84e50-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=US
[    0.389416] brcm-pcie 1000110000.pcie: host bridge /axi/pcie@110000 ranges:
[    0.389422] brcm-pcie 1000110000.pcie:   No bus range found for /axi/pcie@110000, using [bus 00-ff]
[    0.389433] brcm-pcie 1000110000.pcie:      MEM 0x1b00000000..0x1bfffffffb -> 0x0000000000
[    0.389439] brcm-pcie 1000110000.pcie:      MEM 0x1800000000..0x1affffffff -> 0x0400000000
[    0.389446] brcm-pcie 1000110000.pcie:   IB MEM 0x0000000000..0x0fffffffff -> 0x1000000000
[    0.390798] brcm-pcie 1000110000.pcie: Forcing gen 3
[    0.390997] brcm-pcie 1000110000.pcie: PCI host bridge to bus 0000:00
[    0.819734] brcm-pcie 1000110000.pcie: link down
[    0.824562] pcieport 0000:00:00.0: PME: Signaling with IRQ 38
[    0.824632] pcieport 0000:00:00.0: AER: enabled with IRQ 38
[    0.824915] brcm-pcie 1000120000.pcie: host bridge /axi/pcie@120000 ranges:
[    0.824919] brcm-pcie 1000120000.pcie:   No bus range found for /axi/pcie@120000, using [bus 00-ff]
[    0.824928] brcm-pcie 1000120000.pcie:      MEM 0x1f00000000..0x1ffffffffb -> 0x0000000000
[    0.824934] brcm-pcie 1000120000.pcie:      MEM 0x1c00000000..0x1effffffff -> 0x0400000000
[    0.824942] brcm-pcie 1000120000.pcie:   IB MEM 0x1f00000000..0x1f003fffff -> 0x0000000000
[    0.824947] brcm-pcie 1000120000.pcie:   IB MEM 0x0000000000..0x0fffffffff -> 0x1000000000
[    0.826120] brcm-pcie 1000120000.pcie: Forcing gen 2
[    0.826157] brcm-pcie 1000120000.pcie: PCI host bridge to bus 0000:00
[    0.931737] brcm-pcie 1000120000.pcie: link up, 5.0 GT/s PCIe x4 (!SSC)
[    0.943851] pcieport 0000:00:00.0: enabling device (0000 -> 0002)
[    0.943884] pcieport 0000:00:00.0: PME: Signaling with IRQ 39
[    0.943945] pcieport 0000:00:00.0: AER: enabled with IRQ 39
pi@raspberrypi5:~ $ sudo lspci -v
00:00.0 PCI bridge: Broadcom Inc. and subsidiaries BCM2712 PCIe Bridge (rev 21) (prog-if 00 [Normal decode])
        Flags: bus master, fast devsel, latency 0, IRQ 39
        Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
        Memory behind bridge: 00000000-005fffff [size=6M] [32-bit]
        Prefetchable memory behind bridge: [disabled] [64-bit]
        Capabilities: [48] Power Management version 3
        Capabilities: [ac] Express Root Port (Slot-), MSI 00
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [160] Virtual Channel
        Capabilities: [180] Vendor Specific Information: ID=0000 Rev=0 Len=028 <?>
        Capabilities: [240] L1 PM Substates
        Capabilities: [300] Secondary PCI Express
        Kernel driver in use: pcieport

01:00.0 Ethernet controller: Raspberry Pi Ltd RP1 PCIe 2.0 South Bridge
        Flags: bus master, fast devsel, latency 0, IRQ 39
        Memory at 1f00410000 (32-bit, non-prefetchable) [size=16K]
        Memory at 1f00000000 (32-bit, non-prefetchable) [virtual] [size=4M]
        Memory at 1f00400000 (32-bit, non-prefetchable) [size=64K]
        Capabilities: [40] Power Management version 3
        Capabilities: [70] Express Endpoint, MSI 00
        Capabilities: [b0] MSI-X: Enable+ Count=61 Masked-
        Capabilities: [100] Advanced Error Reporting
        Kernel driver in use: rp1

pi@raspberrypi5:~ $ 

When I tried to boot without the SD card I got:

Raspberry Pi 5 - BCB bootloader:
6feUb091
2024/06/05
update-ts: 1720111657
board: d04170 811b94ff d8:3a:dd:b8:02:7a
boot: mode USB-NSD 4 order f416 retry 0/128 restart 1/-1
SD: card not detected
part: 0 mor [0x90:0000000e 0x80:00000000 0x00:00000000 0x00:000000001
power: supply: Custom 5000 mA CCI PIC: reset normal 0x0 usb_oc=0
net: down ip: 0.0.0.0 sn: 0.0.0.0 gw: 0.0.0.0
tftp: 0.0.0.0 00:00:00:00:00:00
display: DISPO:
HPD=0 EDID=none #0 DISP1: HDMI HPD=1 EDID=ok #2
Failed to open device: 'nme'
Boot mode: SD (01) order f4
Failed to open device: 'sdcard' (cmd 371a0010 status 1fff0001)
Failed to open device:
sdcard' (cmd 371a0010 status 1fff0001)
Boot mode: USB-NSD (04) order f
USB NSD stopped. Timeout: 25 seconds
Boot mode: RESTART (0f) order 0
Boot mode: NVVE (06) order {41
PCIe timeout: 0x0001e08f failed to open device: "nume'
PCle timeout: 0x0001e08f
Failed to open device: 'nme'
Boot mode: SD (01) order f4
Failed to open device: "sdcard' (cmd 371a0010 status 1fff0001)
Failed to open device: "sdcard' (cmd 371a0010 status 1fff0001)
Boot mode: USB-SD (04) order

Matt

Wow, you have transferred the text of the boot screen by hand. Thanks for that.

As far I can see there is no room for additional configuration specific issue, except the possibility to force the PCIe speed down to Gen1.

Unfortunately the conclusion is one of these:

  • issue with the ribbon cable
  • CT2000P3PSSD8 2TiB isn‘t compatible with RPi5

You can check again if you connected the cable in the right direction and maybe look with help of a lens if the contacts of the flexible printed circuit board matches the sideways orientation at the sockets too.

But I think you must try another NVMe model…

I am going to purchase a: Western Digital 2TB WD Blue SN580 NVMe Internal Solid State Drive SSD - Gen4 x4 PCIe 16Gb/s, M.2 2280, Up to 4,150 MB/s - WDS200T3B0E - Is this supported?

The most existing lists are not detailed enough to give a bulletproof recommendation (missing: part number, firmware version, capacity, controller, hardware revision …). The NVMe manufacturers with incomplete (useless) or not published specifications and their hidden changes on the product, do the rest to make it to be a lottery.

If you scroll down:

Your crucial NVMe should have worked, but it doesn’t.

Maybe someone else here in the forum has a 2TiB model in use and can confirm that it works out of the box.

Taking a different tack, how would I source a replacement ribbon cable (are these available from a US supplier)?

Better to ask the supplier of your case or the support of Argon40 for a spare part.

it looks like after a new “Drive” taking everything apart and putting it together it now works

Nice, sound good.

Just that I understand you correct. You have only reassembled all, or you switched additional to a different NVMe?

I’m asking because proberly re-assembling is already one of the possible solutions for power on problems:

I took everything apart, started from there beginning with the new drive, then swapped back to the Crucial.