Why is my U.2 NVMe SSD not detected in my server?
Sources checked · page updated · the question as people ask it: “I put a U.2 NVMe SSD in my server (in a front bay, on a U.2-to-PCIe adapter card, or on an OCuLink/SlimSAS/MCIO cable) and the BIOS/UEFI, iDRAC or the OS does not see it - why, and how do I find out which part of the path is wrong?”
A U.2 drive the server cannot see has lost one link in a chain: an NVMe-wired bay or a correctly split slot, a cable that carries the NVMe pinout, the PCIe link, then the Linux nvme driver. Run lspci first: if no 'Non-Volatile memory controller [0108]' line appears for the drive, it is not visible on the host's PCI bus and the fault is the bay, the slot or card configuration, the cable, VMD, or the drive itself; if it appears but nvme list does not show it, the fault is the driver binding (for example vfio-pci passthrough) or the drive's own controller. No purchase is needed to find out which, and several of these causes are fixed with a firmware setting, a binding or the right cable.
What are you seeing?
Pick the closest symptom to open the matching diagnostic path. This is a guide to what to check and in what order; it does not read your system and does not diagnose it.
Is the drive visible on the PCI bus?
- 1.List NVMe controllers by PCI class as well as by name. An NVMe controller always enumerates as class 0108, 'Non-Volatile memory controller', whatever the vendor's device name says, so a grep for 'nvme' alone can miss one. Match the class in brackets so a vendor or device ID containing 0108 does not count. Count the lines against the drives you installed.
lspci -nn | grep -i -e nvme -e '\[0108\]' -e non-volatileReadingEach controller prints as 'Non-Volatile memory controller [0108]' with its [vendor:device] IDs. A drive missing here is not visible on the host's PCI bus: the bay is not NVMe-wired, the slot or card is not configured (bifurcation for a passive card, BIOS settings for a retimer card), the card is a vendor-locked switch card, the cable is the wrong type or dead, VMD is enabled without the kernel's vmd driver (step 4), or the drive itself is at fault. Look at firmware, cabling and BIOS (paths p4 and p5) before the OS. A drive present here has a problem above the PCI bus: go to p2. - 2.Print the bus tree to see where each drive sits: directly on a root port, behind a switch, or in a separate PCI domain.
lspci -tvReadingAn extra bridge level with several downstream ports means a switch-type adapter. Drives in their own PCI domain are behind Intel VMD. - 3.For a drive that is present, check the negotiated link against what it can do. Run it as root, because some config space is root-only and the capability block may not print otherwise.
sudo lspci -vv -s <bus:dev.fn> | grep -E 'LnkCap|LnkSta'ReadingLnkCap is the most the device can do (for example Speed 16GT/s, Width x4); LnkSta is what it negotiated. An endpoint whose LnkSta is below LnkCap is marked '(downgraded)'. A width of x1 or x2 instead of x4, or a lower speed, points at the slot's lane allocation, a cable, a riser or a retimer rather than the drive. - 4.If the board has Intel VMD enabled, NVMe root ports and the drives behind them are moved into a separate VMD PCI domain, and the kernel needs its vmd module to reach them. Check which kernel driver owns the VMD controller.
lspci -k | grep -i -B3 -e vmd -e "volume management"Readinglspci -k prints both the driver handling a device ('Kernel driver in use') and the modules capable of handling it ('Kernel modules'). 'Kernel driver in use: vmd' means the vmd module owns the VMD controller, and its drives should show in the VMD domain in lspci -tv. VMD enabled in firmware with no device using the vmd driver, and no VMD domain in lspci -tv, points at the kernel side. Do not stop at the VMD setting: in one 45HomeLab thread on a Supermicro X11SPH-nCTPF board, the drives were not seen with VMD disabled and threw PCI BAR errors with it enabled, and replacing the third-party OCuLink cables with Supermicro's own fixed it with VMD disabled. Check the cable too (p5).
On the PCI bus, but no /dev/nvme device
- 1.Check which kernel driver owns the controller. Take the bus:dev.fn address from the first lspci command.
lspci -k -s <bus:dev.fn>Reading'Kernel driver in use: nvme' is correct. 'vfio-pci' means the device was unbound from its host driver and handed to passthrough (a Proxmox VM, or a TrueNAS isolated device), so the host will not create /dev/nvme for it: remove it from the VM's passthrough or the isolated-device list and reboot. No driver line at all means the nvme driver did not bind; read the kernel log in the next step. - 2.Read the nvme driver's probe messages and match each address to lspci.
dmesg | grep -i nvmeReadingA healthy probe logs 'nvmeN: pci function 0000:BB:DD.F'. Errors on the same address after that line (timeouts, resets, removal) mean the link came up and the controller failed to initialise. No nvme lines for an address that lspci shows means no nvme driver bound (previous step). - 3.Ask nvme-cli what the driver registered.
nvme list && nvme list-subsysReadingnvme list only shows controllers the nvme driver registered in sysfs, so a drive in lspci but absent here is a driver, binding or controller problem. list-subsys shows each registered controller with its transport and address. - 4.Read each registered controller's state from sysfs. This is the kernel's own state word for the controller.
grep . /sys/class/nvme/nvme*/stateReading'live' is the working state. A controller that stays at 'dead', or stays at 'resetting' or 'connecting', was found by the driver and could not be brought up: suspect the drive or its firmware, not the bay. Before blaming the drive, move it to a different known-good NVMe path and repeat. - 5.Check that a usable namespace exists. lsblk lists block devices (namespaces such as nvme0n1), not controllers.
lsblk -d -o NAME,MODEL,SIZEReadingA controller in nvme list with no nvmeXnY here has no usable namespace attached. Run 'lsblk --list-columns' to confirm the column names on the installed version.
Dell PowerEdge: ask the iDRAC which bays it sees
- 1.Over SSH to the iDRAC, dump the hardware inventory. Each NVMe drive the server's own management path can see is listed with a bay FQDD.
racadm hwinventoryReadingLook for entries like 'Disk.Bay.8:Enclosure.Internal.0-1:PCIeExtender.Slot.1' with BusProtocol = PCIE and DeviceProtocol = NVMe-MI1.0. A bay with no entry was not seen by the iDRAC, so the OS will not see it either: go to p5. BusNumber is decimal; convert it to hex to match lspci (Dell's example: BusNumber 134 is bus 86 in hex). - 2.Check the drive list and the Lifecycle Controller log for the bay. Dell's KB gives the drive list as iDRAC > Physical Disks and the messages as Lifecycle Controller log entries; where that log sits in the UI depends on the iDRAC version.
iDRAC > Physical Disks, and the Lifecycle Controller log (location varies by iDRAC version; filter PR8, CTL137)ReadingPR8 reads 'Device not detected: Dell NVMe PCIe SSD Configuration Data(PCIe SSD in Slot X in Bay Y)'. CTL137 reads 'iDRAC is unable to successfully communicate with the device PCIe SSD in Slot X in Bay Y'. Both name the bay. The KB these messages come from has a fix that applies only to Dell PM1733a and PM1735a firmware: use it for the message IDs, not the remedy.
Drives on an adapter card: bifurcation and card type
- 1.Work out what kind of card it is: passive (each drive takes its own x4 share of the slot's lanes), retimer (Supermicro's example runs 4 lanes per port and needs BIOS configuration), or switch (built on a PCIe switch chip). The bus tree shows a switch as an extra bridge level.
lspci -tvReadingSeveral downstream ports under one extra bridge: a switch-type card. Drives (or nothing) directly under the root port: passive or retimer. - 2.For a passive card, open the host BIOS/UEFI setup and find the bifurcation setting for the slot holding the card. The setting is per slot and the menu names differ by vendor. Lenovo's UEFI offers x8x8, x8x4x4 or x4x4x8, and x4x4x4x4 for a physical x16 slot. On Lenovo's Override Slot Bifurcation menu, x16 (the default) means the system setting is used; choose x4x4x4x4 explicitly.
Host BIOS/UEFI setup: the per-slot PCIe bifurcation setting for the slot holding the card (for example Lenovo 'Slot n' = x4x4x4x4)ReadingA passive card shows one drive per x4 link the slot is split into: each drive needs its own x4 link (x4x4 for two drives, x4x4x4x4 for four in an x16 slot). Supermicro documents that a slot left at x8 or x16 shows only one drive, for a two-drive M.2 carrier; the lane split is the same rule a passive multi-U.2 card relies on. - 3.For a retimer card, the BIOS still has to be configured for it. Supermicro says its AOC-SLG3-4E4T retimer card requires motherboard BIOS configuration and points to the card's User's Guide for the settings.
- 4.If the board offers no split for that slot, or no split with one x4 link per drive, a passive card cannot show every drive there. Forum posters report boards where the setting was missing from the BIOS. A split fixed at x4x4 is not the obstacle for two drives: in one thread on an ASUS K14PA-U12, whose MCIO ports the poster reports as fixed at x4x4, the fault was a dead cable. The sourced option is a different slot that can be split. Forum replies say a switch card avoids the split; we have not found a vendor document stating that. Supermicro's own switch-based NVMe cards are stated to work only in validated Supermicro systems and motherboards.
Front bay, backplane and cable
- 1.Confirm the bay itself is on an NVMe path. A bay takes an NVMe drive only behind an NVMe or AnyBay backplane, in configurations that wire it to onboard NVMe ports, retimer cards or NVMe switch adapters. On Lenovo's SR650 V2 a Tri-Mode RAID adapter is another route, but only for U.3 drives on an AnyBay backplane. Dell's R740xd manual lists up to 32 SAS or SATA drives but up to 24 NVMe drives, so not every bay takes NVMe; we have not found a Dell document stating which bays those are. Oracle labels its NVMe-capable bays NVMe0, NVMe1 and so on: check the bay label and the service manual for your chassis.
- 2.If the drive is cabled to a tri-mode RAID adapter or HBA, check the cable type. Intel documents NVMe drives that the adapter BIOS could not detect on regular data cables, with the NVMe (OCuLink) data cable as the resolution. A ServeTheHome thread on a Broadcom 9400-16i shows the same symptom with an SFF-8643-to-SFF-8639 cable. Separately, Lenovo's SR650 V2 guide supports Tri-Mode only with U.3 drives on an AnyBay backplane and states U.2 drives are not supported there.
- 3.Swap in a cable of the type the board or controller maker documents for NVMe, or a known-good one. Several of the U.2 threads below pointed at the cable: two were fixed by replacing it (t4, t3), and in a third the poster found the wrong SFF-8654 type, with no confirmation afterwards (t1).ReadingIf the drive appears in lspci after the swap, the old cable was the fault. If it still does not, move the drive to another bay or path before suspecting the drive.
Causes, how to confirm each, and whether hardware fixes it
| Cause | How to confirm | Fix | Hardware? |
|---|---|---|---|
| The bay is not wired for NVMe in this chassis configuration | The service manual or bay label does not list the bay as NVMe-capable; racadm hwinventory has no entry for it; lspci shows no 0108 controller for the drive. | Move the drive to an NVMe-capable bay, or put it on a U.2 PCIe card instead of the bay. Adding NVMe to bays that lack it means the vendor's NVMe path for that chassis: an NVMe or AnyBay backplane fed by onboard NVMe ports, retimer or switch adapters, and their cables. A Tri-Mode adapter route on an AnyBay backplane takes U.3 drives only, not U.2. | Yes |
| A passive multi-drive card sits in a slot not split into one x4 link per drive | Fewer drives than installed show in lspci; the slot is not set to one x4 link per drive. | Split the slot into one x4 link per drive in the BIOS/UEFI (x4x4 for two drives, x4x4x4x4 for four in an x16 slot). If the board offers no such split for that slot, use a slot that does. | No |
| A retimer card without the BIOS configuration it needs | Drives on the retimer card are missing from lspci; the slot's settings were never changed from the defaults. | Apply the BIOS settings the card's maker documents for it. | No |
| Wrong cable standard for NVMe, or a dead cable | The drive is missing from the controller's or board's BIOS with the bay or port otherwise correct; a known-good cable of the documented NVMe type makes it appear. | Use the NVMe cable the controller or board maker documents (Intel names an OCuLink data cable for its tri-mode adapter case). | Yes |
| A vendor-locked switch card in another maker's system | The card is a Supermicro switch-based NVMe card (for example AOC-SLG3-2E4 or AOC-SLG3-4E2P) and the host is not a validated Supermicro system. | Use the card in a validated Supermicro system, or use a different card or slot in this host. | Yes |
| Intel VMD is enabled and the kernel's vmd driver has not taken the VMD domain | VMD is enabled in firmware, lspci -tv shows no VMD-domain root ports or drives, and lspci -k shows no device with 'Kernel driver in use: vmd'. A VMD domain that is present in lspci -tv means VMD is working, so look elsewhere. | Make the BIOS VMD setting and the OS agree: with VMD on, the kernel needs its vmd module. If the drives are also missing with VMD off, check the cable (p5). | No |
| The controller is bound to vfio-pci for passthrough | lspci -k shows 'Kernel driver in use: vfio-pci' for the drive's address. | Remove the device from the VM's passthrough list or the isolated-device list and reboot, so the nvme driver binds it. | No |
| A U.2 drive in a Lenovo Tri-Mode bay | The bay is on a Tri-Mode controller with an AnyBay backplane; Lenovo's SR650 V2 guide supports only U.3 drives in Tri-Mode. | Put the U.2 drive in a bay on an NVMe or AnyBay backplane fed by an NVMe path (onboard NVMe ports, retimer or switch adapters) instead of the Tri-Mode controller. | No |
| The drive's controller failed to initialise | /sys/class/nvme/nvmeN/state stays at 'dead', or stays at 'resetting' or 'connecting'; dmesg shows errors after the 'pci function' line for that address. | Test the drive on a different known-good NVMe path. If it fails the same way there, the drive or its firmware is the fault. | Yes |
Nothing on this page is fixed by buying hardware: the causes above are settings, cabling, firmware or formatting. We list no products here on purpose.
Read next on this site
- U.2 vs U.3 adapters and carriers · Covers the connector and wiring difference and why tri-mode is a backplane and controller property, which this page does not repeat.
- M.2 to PCIe adapter cards · Explains passive versus switch cards and the 'only one drive appears' symptom for M.2 carriers, the same lane-split rule a passive U.2 card follows.
- U.2 to M.2 adapters and carriers · Sorts out the two opposite 'U.2 to M.2' adapters and notes that a bay not wired for NVMe stays silent.
- Drive caddies and adapters · The site's listing of adapters, cables and carriers, if the diagnosis points at a card or cable.
- PowerEdge R730xd drive compatibility · States which R730xd configuration takes NVMe and how many drives, the bay question behind path p5 for that chassis.
- Used server checklist: verify on arrival · A bay test with a known-good drive and an iDRAC or iLO controller check, useful before blaming a new drive.
- LSI 9400-16i · The tri-mode HBA from the ServeTheHome thread, where the cable type was the suspected fault.
Frequently asked questions
Does a PCIe switch card avoid the bifurcation setting?
Forum replies say so, but we have not found a vendor document stating it, so treat it as unconfirmed. Supermicro's switch-based NVMe cards are built on a PCIe switch chip and Supermicro states they work only in validated Supermicro systems and motherboards, so check the card maker's host requirements before relying on one in another server.
How do I match an iDRAC drive entry to the Linux device name?
Take the BusNumber from racadm hwinventory, which is decimal, and convert it to hex to find the lspci address (Dell's example: BusNumber 134 is bus 86 in hex). Then find the 'nvmeN: pci function' line for that address in dmesg, which names the /dev/nvmeN device.
Do I need to buy anything to fix this?
Not to diagnose it, and often not at all: bifurcation, retimer BIOS settings, VMD and vfio-pci binding are all configuration. Hardware is the answer when the bay has no NVMe path, the cable is the wrong standard or dead, a vendor-locked switch card sits in another maker's system, or the drive fails the same way on a known-good NVMe path. A slot that cannot be split for a passive card is first a reason to use another slot. This page does not list a product, because whether a card or cable fits depends on your board's slot options and the connector your controller documents.
Sources
Every technical statement above rests on one of these documents, each read on the date shown. Where a document did not state something, the page says so rather than filling the gap.
- Supermicro FAQ 25062 - AOC-SLG3-2M2 in a slot that cannot be bifurcated · checked
- Lenovo ThinkSystem UEFI (Xeon 6) - Override Slot Bifurcation · checked
- Supermicro AOC-SLG3-2E4 add-on card product page · checked
- Supermicro AOC-SLG3-4E2P add-on card product page · checked
- Supermicro AOC-SLG3-4E4T add-on card product page · checked
- Lenovo Press LP1392 - ThinkSystem SR650 V2 Product Guide (updated 18 Sep 2025) · checked
- Intel Article 000027304 - Multiple NVMe Drives Are Not Detected by the Intel RAID Adapter RSP3WD080E · checked
- Oracle 1.6 TB NVMe SSD User Guide - Install a New NVMe Storage Drive (CRU) · checked
- Dell EMC PowerEdge R740xd Installation and Service Manual - system overview · checked
- Dell KB 000481601 - PowerFlex: PM1733a and PM1735a Drives are Missing in iDRAC, PDR5 - PR8 · checked
- Dell KB 000120258 - PowerEdge: How to identify the NVMe SSD slot location used in a vSAN disk group · checked
- lspci(8) man page · checked
- pciutils ls-caps.c - cap_express_link() and link_compare() · checked
- PCI ID Repository - Class 01 subclass 08 · checked
- nvme-list(1) man page · checked
- nvme-list-subsys(1) man page · checked
- Linux kernel drivers/nvme/host/sysfs.c - nvme_sysfs_show_state · checked
- Linux kernel - VFIO - Virtual Function I/O · checked
- Linux kernel drivers/pci/controller/Kconfig - config VMD · checked
- Linux kernel drivers/nvme/host/pci.c - nvme_probe() · checked
- lsblk(8) man page · checked
- Linux kernel drivers/nvme/host/core.c - nvme_class and controller device naming · checked
Where people hit this
Discussions we opened and read while researching this page. They are evidence that the problem occurs and of what people tried; no specification above is sourced to a forum post.
- Unraid forums (General Support) · 2024-02-06 · Three U.2 drives on a Ceacent CNS44PE16 x16 U.2 card were invisible to Unraid and the boot BIOS although the card appeared. A moderator advised disabling bifurcation because the card's controller splits the slot; that did not help. The poster then found the SFF-8654 cables were the wrong type and ordered replacements. No confirmation that the new cables fixed it.
- TrueNAS community (legacy forum, read-only) · 2023-06-06 · Twelve WD Ultrastar DC SN630 U.2 drives in R730xd front slots behind an HBA330 were invisible to iDRAC, TrueNAS and the HBA utility. Replies said only four backplane slots take NVMe, and only with Dell's NVMe enablement kit, and that the HBA330 is not a tri-mode controller. No fix confirmed.
- 45HomeLab forum · 2025-02-26 · U.2 drives on a Supermicro X11SPH-nCTPF's OCuLink ports were not seen with VMD disabled and threw PCI BAR assignment errors with VMD enabled. A BIOS update did not help; replacing the third-party OCuLink-to-U.2 cables with Supermicro's own cables fixed it with VMD disabled.
- Level1Techs (Storage) · 2026-02-21 · Two U.2 drives on an MCIO x8 to 2x SFF-8639 breakout on an ASUS K14PA-U12 were not seen by BIOS or BMC. Reseating, forcing Gen4, other MCIO ports and a BIOS update did nothing; the cable was dead on arrival. The poster reports the board's MCIO ports are fixed at x4x4.
- Level1Techs (Storage) · 2023-10-09 · Two Samsung PM9A3 U.2 drives on x4-to-SFF-8643 adapter cards first did not appear, then came and went. Bifurcation changes, cables from two makers, other slots and BIOS/IPMI updates did not settle it; a reply said the board's BIOS did not expose the needed bifurcation, and later posts report a new per-slot bifurcation option. No fix reported by the original poster.
- Level1Techs (Storage) · 2025-01-05 · An HGST Ultrastar SN200 U.2 on a SlimSAS-to-U.2 cable under Proxmox showed in BIOS and lspci but not in nvme list; nvme list-subsys reported the controller 'dead'. After a passthrough test it vanished from lspci too. Unresolved; the poster considered returning the drive.
- ServeTheHome forums · 2023-01-09 · NVMe drives in a U.2 shuttle on an SFF-8643-to-SFF-8639 cable from a tri-mode LSI 9400-16i did not appear even in the HBA BIOS on any port. Replies said Broadcom tri-mode HBAs need a dedicated NVMe cable because the SAS cable does not carry the NVMe pinout. No confirmed fix.
- TrueNAS forums (SCALE) · 2025-02-05 · Two NVMe SSDs on an x8x4x4 bifurcation card both showed in BIOS, IPMI and lspci, but only one in TrueNAS: lspci -v showed the missing one bound to vfio-pci because it was listed under 'Isolated GPU PCI IDs'. Removing it and rebooting fixed it. The thread does not say whether the drives were U.2 or M.2; it is evidence of the binding failure, not of a U.2 fault.
- Proxmox Support Forum · 2024-09-11 · Eight M.2 NVMe drives on two bifurcated adapter cards were in lspci but absent from lsblk and nvme list after passthrough to a TrueNAS VM; they were bound to vfio-pci, and rebinding them to nvme restored them. The drives were M.2, not U.2: this is the same lspci-yes, nvme-list-no binding failure, not a U.2 case.