Skip to content

Raspberry Pi 5 fails to boot from NVMe (WD SN850X 4TB via Argon NEO5) – NVMe not enumerated during early boot #816

@mearubato

Description

@mearubato

Describe the bug

Summary

Raspberry Pi 5 is unable to boot from an NVMe SSD. The NVMe device is not enumerated during early boot, resulting in root filesystem mount failure.

However, the same NVMe device works perfectly once Linux is running (when booting from an SD card), suggesting a bootloader / early PCIe initialization issue.


Hardware

  • Raspberry Pi 5
  • Argon40 NEO5 NVMe case (PCIe bridge)
  • WD Black SN850X 4TB NVMe SSD
  • Official Raspberry Pi 45W USB-C power supply

Firmware

  • Bootloader version: 2026-02-23
  • PCIE_PROBE=1
  • BOOT_ORDER=0xf461 (SD → NVMe → USB → repeat)

PCIe modes tested:

  • dtparam=pciex1_gen=1
  • dtparam=pciex1_gen=2
  • dtparam=pciex1_gen=3

OS

  • Raspberry Pi OS Lite (Debian Trixie)
  • Imaged using Raspberry Pi Imager

Observed behaviour

When attempting to boot from NVMe:

  • Bootloader starts normally
  • Kernel fails with:

"Waiting for root file system device"
"PARTUUID=ffc763c1-02 does not exist"

  • System drops to initramfs shell

Inside initramfs:

  • /dev contains no nvme devices
  • /dev/nvme0n1 does not exist

Control test (working case)

When booting from SD card with the same NVMe attached:

  • NVMe is detected normally as /dev/nvme0n1
  • Partitions are readable
  • Root filesystem is valid
  • PARTUUID matches cmdline.txt
  • The drive performs well with PCIe mode: dtparam=pciex1_gen=3

Diagnostics already performed

  • Verified PARTUUID correctness
  • Verified cmdline.txt configuration
  • Verified NVMe functionality under Linux
  • Verified PCIe enabled (PCIE_PROBE=1)
  • Verified bootloader is up to date
  • Tested PCIe Gen1, Gen2, and Gen3 modes
  • Verified no NVMe devices present in initramfs environment

NVMe device properties

logical_block_size: 512
physical_block_size: 512


Conclusion

The NVMe device does not appear to be enumerated early enough during bootloader / early kernel initialization.

This appears to be a firmware-level PCIe/NVMe enumeration issue rather than a kernel or filesystem configuration problem.


Related issue

This behaviour appears closely related to:
#623

Similarities:

  • Same SSD family (WD Black SN850X)
  • NVMe accessible to bootloader but unavailable to kernel
  • Root filesystem mount failure during NVMe boot

Differences in this report:

This may indicate a broader compatibility or PCIe handoff issue rather than an isolated configuration problem.


Questions

Are there known limitations or compatibility issues with:

  • WD SN850X NVMe SSDs
  • PCIe bridges such as Argon NEO5
  • NVMe enumeration timing during early boot on Raspberry Pi 5

that could explain this behaviour?

Is there any recommended workaround or firmware fix planned?

Steps to reproduce the behaviour

See description.

Device (s)

Raspberry Pi 5

Bootloader configuration.

When booted from SD card:

rpi-eeprom-update

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

rpi-eeprom-config pieeprom.upd

ERROR: Failed to read 'pieeprom.upd'
[Errno 2] No such file or directory: 'pieeprom.upd'

System

cat /etc/rpi-issue

Raspberry Pi reference 2025-12-04
Generated using pi-gen, https://github.com/RPi-Distro/pi-gen, 4997bf4e4e49bc3305eb182a4a08bd023529da04, stage2

vcgencmd bootloader_version

2026/02/23 10:01:39
version 85353ce41ce7840aa48c5cda1e77c5ad208b1331 (release)
timestamp 1771840899
update-time 1773823911
capabilities 0x0000007f

vcgencmd version

2026/02/23 10:01:39
Copyright (c) 2012 Broadcom
version 85353ce4 (release) (embedded)

uname -a

Linux guy 6.12.75+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.75-1+rpt1 (2026-03-11) aarch64 GNU/Linux

Bootloader logs

I don't have the hardware to perform this.

USB boot

Not applicable.

NVMe boot

sudo nvme list

Node Generic SN Model Namespace Usage Format FW Rev


/dev/nvme0n1 /dev/ng0n1 23521G801687 WD_BLACK SN850X 4000GB 0x1 4.00 TB / 4.00 TB 512 B + 0 B 624361WD

sudo nvme id-ctrl -H /dev/nvme0

NVME Identify Controller:
vid : 0x15b7
ssvid : 0x15b7
sn : 23521G801687
mn : WD_BLACK SN850X 4000GB
fr : 624361WD
rab : 4
ieee : 001b44
cmic : 0
[3:3] : 0 ANA not supported
[2:2] : 0 PCI
[1:1] : 0 Single Controller
[0:0] : 0 Single Port

mdts : 7
cntlid : 0x2020
ver : 0x10400
rtd3r : 0x222e0
rtd3e : 0x7a120
oaes : 0x200
[31:31] : 0 Discovery Log Change Notice Not Supported
[27:27] : 0 Zone Descriptor Changed Notices Not Supported
[19:19] : 0 Allocated Namespace Attribute Notices Not Supported
[17:17] : 0 Reachability Groups Change Notices Not Supported
[16:16] : 0 Temperature Threshold Hysteresis Recovery Not Supported
[15:15] : 0 Normal NSS Shutdown Event Not Supported
[14:14] : 0 Endurance Group Event Aggregate Log Page Change Notice Not Supported
[13:13] : 0 LBA Status Information Notices Not Supported
[12:12] : 0 Predictable Latency Event Aggregate Log Change Notices Not Supported
[11:11] : 0 Asymmetric Namespace Access Change Notices Not Supported
[9:9] : 0x1 Firmware Activation Notices Supported
[8:8] : 0 Namespace Attribute Changed Event Not Supported

ctratt : 0x16
[19:19] : 0 Flexible Data Placement Not Supported
[18:18] : 0 Reservations and Host Identifier Interaction Not Supported
[17:17] : 0 HMB Restrict Non-Operational Power State Access Not Supported
[16:16] : 0 MDTS and Size Limits Exclude Metadata Not Supported
[15:15] : 0 Extended LBA Formats Not Supported
[14:14] : 0 Delete NVM Set Not Supported
[13:13] : 0 Delete Endurance Group Not Supported
[12:12] : 0 Variable Capacity Management Not Supported
[11:11] : 0 Fixed Capacity Management Not Supported
[10:10] : 0 Multi Domain Subsystem Not Supported
[9:9] : 0 UUID List Not Supported
[8:8] : 0 SQ Associations Not Supported
[7:7] : 0 Namespace Granularity Not Supported
[6:6] : 0 Traffic Based Keep Alive Not Supported
[5:5] : 0 Predictable Latency Mode Not Supported
[4:4] : 0x1 Endurance Groups Supported
[3:3] : 0 Read Recovery Levels Not Supported
[2:2] : 0x1 NVM Sets Supported
[1:1] : 0x1 Non-Operational Power State Permissive Supported
[0:0] : 0 128-bit Host Identifier Not Supported

rrls : 0
bpcap : 0
[2:2] : 0 Set Features Boot Partition Write Protection Not Supported
[1:0] : 0 RPMB Boot Partition Write Protection Support Not Specified

nssl : 0
plsi : 0
[1:1] : 0 Power Loss Signaling with Forced Quiescence Not Supported
[0:0] : 0 Power Loss Signaling with Emergency Power Fail Not Supported

cntrltype : 1
[7:2] : 0 Reserved
[1:0] : 0x1 I/O Controller
fguid : 00000000-0000-0000-0000-000000000000
crdt1 : 0
crdt2 : 0
crdt3 : 0
crcap : 0
[1:1] : 0 RGRPID may change while the namespace is attached to any controller.
[0:0] : 0 Reachability Reporting Not Supported

nvmsr : 0
[1:1] : 0 NVM subsystem Not part of an Enclosure
[0:0] : 0 NVM subsystem Not part of a Storage Device

vwci : 0
[7:7] : 0 VPD Write Cycles Remaining field is Not valid.
[6:0] : 0 VPD Write Cycles Remaining

mec : 0
[1:1] : 0 NVM subsystem Not contains a Management Endpoint on a PCIe port
[0:0] : 0 NVM subsystem Not contains a Management Endpoint on an SMBus/I2C port

oacs : 0x17
[11:11] : 0 Host Managed Live Migration Not Supported
[10:10] : 0 Lockdown Command and Feature Not Supported
[9:9] : 0 Get LBA Status Capability Not Supported
[8:8] : 0 Doorbell Buffer Config Not Supported
[7:7] : 0 Virtualization Management Not Supported
[6:6] : 0 NVMe-MI Send and Receive Not Supported
[5:5] : 0 Directives Not Supported
[4:4] : 0x1 Device Self-test Supported
[3:3] : 0 NS Management and Attachment Not Supported
[2:2] : 0x1 FW Commit and Download Supported
[1:1] : 0x1 Format NVM Supported
[0:0] : 0x1 Security Send and Receive Supported

acl : 4
aerl : 7
frmw : 0x14
[5:5] : 0 Multiple FW or Boot Update Detection Not Supported
[4:4] : 0x1 Firmware Activate Without Reset Supported
[3:1] : 0x2 Number of Firmware Slots
[0:0] : 0 Firmware Slot 1 Read/Write

lpa : 0x1e
[6:6] : 0 Telemetry Log Data Area 4 Not Supported
[5:5] : 0 LID 0x0, Scope of each command in LID 0x5, 0x12, 0x13 Not Supported
[4:4] : 0x1 Persistent Event log Supported
[3:3] : 0x1 Telemetry host/controller initiated log page Supported
[2:2] : 0x1 Extended data for Get Log Page Supported
[1:1] : 0x1 Command Effects Log Page Supported
[0:0] : 0 SMART/Health Log Page per NS Not Supported

elpe : 255
[7:0] : 255 (0's based) Error Log Page Entries (ELPE)

npss : 4
[7:0] : 4 (0's based) Number of Power States Support (NPSS)

avscc : 0x1
[0:0] : 0x1 Admin Vendor Specific Commands uses NVMe Format

apsta : 0x1
[0:0] : 0x1 Autonomous Power State Transitions Supported

wctemp : 363
[15:0] : 90 °C (363 K) Warning Composite Temperature Threshold (WCTEMP)

cctemp : 367
[15:0] : 94 °C (367 K) Critical Composite Temperature Threshold (CCTEMP)

mtfa : 50
hmpre : 0
hmmin : 0
tnvmcap : 4000787030016
[127:0] : 4000787030016
Total NVM Capacity (TNVMCAP)

unvmcap : 0
[127:0] : 0
Unallocated NVM Capacity (UNVMCAP)

rpmbs : 0
[31:24]: 0 Access Size
[23:16]: 0 Total Size
[5:3] : 0 Authentication Method
[2:0] : 0 Number of RPMB Units

edstt : 407
dsto : 1
[1:1] : 0 Host-Initiated Refresh capability Not Supported
[0:0] : 0x1 NVM subsystem supports only one device self-test operation in progress at a time

fwug : 1
kas : 0
hctma : 0x1
[0:0] : 0x1 Host Controlled Thermal Management Supported

mntmt : 273
[15:0] : 0 °C (273 K) Minimum Thermal Management Temperature (MNTMT)

mxtmt : 358
[15:0] : 85 °C (358 K) Maximum Thermal Management Temperature (MXTMT)

sanicap : 0x60000003
[31:30] : 0x1 Media is not additionally modified after sanitize operation completes successfully
[29:29] : 0x1 No-Deallocate After Sanitize bit in Sanitize command Not Supported
[3:3] : 0 Media Verification and Post-Verification Deallocation state Not Supported
[2:2] : 0 Overwrite Sanitize Operation Not Supported
[1:1] : 0x1 Block Erase Sanitize Operation Supported
[0:0] : 0x1 Crypto Erase Sanitize Operation Supported

hmminds : 0
hmmaxd : 0
nsetidmax : 1
endgidmax : 1
anatt : 0
anacap : 0
[7:7] : 0 Non-zero group ID Not Supported
[6:6] : 0 Group ID does change
[4:4] : 0 ANA Change state Not Supported
[3:3] : 0 ANA Persistent Loss state Not Supported
[2:2] : 0 ANA Inaccessible state Not Supported
[1:1] : 0 ANA Non-optimized state Not Supported
[0:0] : 0 ANA Optimized state Not Supported

anagrpmax : 0
nanagrpid : 0
pels : 1
domainid : 0
kpioc : 0
[1:1] : 0 Key Per I/O capability Not apply to all namespaces
[0:0] : 0 Key Per I/O capability Not Supported

mptfawr : 0
megcap : 0
tmpthha : 0
[2:0] : 0 Temperature Threshold Maximum Hysteresis

cqt : 0
sqes : 0x66
[7:4] : 0x6 Max SQ Entry Size (64)
[3:0] : 0x6 Min SQ Entry Size (64)

cqes : 0x44
[7:4] : 0x4 Max CQ Entry Size (16)
[3:0] : 0x4 Min CQ Entry Size (16)

maxcmd : 0
nn : 1
oncs : 0xdf
[12:12] : 0 Namespace Zeroes Not Supported
[11:11] : 0 Maximum Write Zeroes with Deallocate Not Supported
[10:10] : 0 All Fast Copy Not Supported
[9:9] : 0 Copy Single Atomicity Not Supported
[8:8] : 0 Copy Not Supported
[7:7] : 0x1 Verify Supported
[6:6] : 0x1 Timestamp Supported
[5:5] : 0 Reservations Not Supported
[4:4] : 0x1 Save and Select Supported
[3:3] : 0x1 Write Zeroes Supported
[2:2] : 0x1 Data Set Management Supported
[1:1] : 0x1 Write Uncorrectable Supported
[0:0] : 0x1 Compare Supported

fuses : 0
[0:0] : 0 Fused Compare and Write Not Supported

sudo nvme list-ns /dev/nvme0

NVME Namespace List:
[ 0]:0x1

sudo nvme id-ns -H /dev/nvme0 --namespace-id=1

NVME Identify Namespace 1:
nsze : 0x1d1c0beb0 Total size in logical blocks
ncap : 0x1d1c0beb0 Maximum size in logical blocks
nuse : 0x1d1c0beb0 Current size in logical blocks
nsfeat : 0x2
[7:7] : 0 NPRG, NPRA and NORS are Not Supported
[6:6] : 0 Single Atomicity Mode applies to write operations
[5:4] : 0 NPWG, NPWA, NPDG, NPDGL, NPDA, and NOWS are Not Supported
[3:3] : 0 NGUID and EUI64 fields if non-zero, Reused
[2:2] : 0 Deallocated or Unwritten Logical Block error Not Supported
[1:1] : 0x1 Namespace uses NAWUN, NAWUPF, and NACWU
[0:0] : 0 Thin Provisioning Not Supported

nlbaf : 1
flbas : 0
[6:5] : 0 Most significant 2 bits of Current LBA Format Selected
[4:4] : 0 Metadata Transferred in Separate Contiguous Buffer
[3:0] : 0 Least significant 4 bits of Current LBA Format Selected

mc : 0
[1:1] : 0 Metadata Pointer Not Supported
[0:0] : 0 Metadata as Part of Extended Data LBA Not Supported

dpc : 0
[4:4] : 0 Protection Information Transferred as Last Bytes of Metadata Not Supported
[3:3] : 0 Protection Information Transferred as First Bytes of Metadata Not Supported
[2:2] : 0 Protection Information Type 3 Not Supported
[1:1] : 0 Protection Information Type 2 Not Supported
[0:0] : 0 Protection Information Type 1 Not Supported

dps : 0
[3:3] : 0 Protection Information is Transferred as Last Bytes of Metadata
[2:0] : 0 Protection Information Disabled

nmic : 0
[1:1] : 0 Namespace is Not a Dispersed Namespace
[0:0] : 0 Namespace Multipath Not Capable

rescap : 0
[7:7] : 0 Ignore Existing Key - Used as defined in revision 1.2.1 or earlier
[6:6] : 0 Exclusive Access - All Registrants Not Supported
[5:5] : 0 Write Exclusive - All Registrants Not Supported
[4:4] : 0 Exclusive Access - Registrants Only Not Supported
[3:3] : 0 Write Exclusive - Registrants Only Not Supported
[2:2] : 0 Exclusive Access Not Supported
[1:1] : 0 Write Exclusive Not Supported
[0:0] : 0 Persist Through Power Loss Not Supported

fpi : 0x80
[7:7] : 0x1 Format Progress Indicator Supported
[6:0] : 0 Format Progress Indicator (Remaining 0%)

dlfeat : 9
[4:4] : 0 Guard Field of Deallocated Logical Blocks is set to 0xFFFF
[3:3] : 0x1 Deallocate Bit in the Write Zeroes Command is Supported
[2:0] : 0x1 Bytes Read From a Deallocated Logical Block and its Metadata are 0x00

nawun : 7
nawupf : 7
nacwu : 0
nabsn : 7
nabo : 7
nabspf : 7
noiob : 0
nvmcap : 4000787030016
mssrl : 0
mcl : 0
msrc : 0
kpios : 0
[1:1] : 0 Key Per I/O Capability Not Supported
[0:0] : 0 Key Per I/O Capability Disabled

nulbaf : 0
kpiodaag: 0
anagrpid: 0
nsattr : 0
[0:0] : 0 Namespace Not Write Protected

nvmsetid: 1
endgid : 1
nguid : e8238fa6bf530001001b448b4c35ebde
eui64 : 001b448b4c35ebde
LBA Format 0 : Metadata Size: 0 bytes - Data Size: 512 bytes - Relative Performance: 0x2 Good (in use)
LBA Format 1 : Metadata Size: 0 bytes - Data Size: 4096 bytes - Relative Performance: 0x1 Better

Network (TFTP boot)

Not applicable.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions