M.2 NGFF vs NVMe - compatibility

10,530

Solution 1

There's no such thing as a "M.2 controller". The M.2 slot provides direct PCI-Express and SATA AHCI interfaces – NVMe drives are full-on PCI-Express devices, with the NVMe controller being on the drive itself.

There are M.2 slots which only provide SATA but not PCI-Express, or vice versa, and while (AFAIK) it's rare on actual PC motherboards, this seems to be very common for M.2-to-USB adapters – many of which only support SATA because adding PCIe support would've been much more expensive. (And the ones which support PCIe often omit SATA...)

So if the USB device's specs do not explicitly say it supports NVMe, there's a high chance it doesn't.

Solution 2

While technically NGFF is a synonym to M.2 AFAIK, some/most vendors refers to M.2 SATA with the former.

It's worth noting that there is/are chip(s) (from Realtek) on the market that can bridge both SATA and NVMe drive.

Solution 3

In theory, any M.2 compliant host (the thing you plug the M.2 card into) will work with any M.2 compliant device (the card itself), provided the module keying matches. The module keying (the exact physical location and dimensions of the cutout in the card edge connector) is supposed to indicate the exact interfaces available through the connector and what interfaces the device expects to be present. For example, an M-keyed card (the norm for most M.2 SSDs) expects to be able to use some combination of up to 4 PCIe lanes, a single SATA interface, and a single SMBus interface, while an M-keyed host is expected to provide exactly that set of interfaces. Similarly for B-keyed cards (the norm for almost all other M.2 cards) and hosts (though the list of provided interfaces is much longer and has fewer PCIe lanes).

In practice however, it is rather uncommon to see an M-keyed USB-to-M.2 bridge that actually provides PCIe lanes be marketed as a ‘USB to M.2 adapter’. They’re a lot cheaper to produce without the PCIe support because bridging USB to PCIe is far from trivial, so a lot of manufacturers make cheap ones that don’t do that.

The term you want to use when searching is ‘USB to NVMe adapter’. Those will be a bit more expensive and are pretty much always USB-C devices, but will almost always work for any NVMe card you get, and if you find a good one it will also work just fine with legacy SATA cards and support a Thunderbolt 3 upstream connection in addition to plain USB.

Share:
10,530

Related videos on Youtube

Kjensen
Author by

Kjensen

Updated on September 18, 2022

Comments

  • Kjensen
    Kjensen almost 2 years

    Are there M.2 controllers, that do not support NVMe?

    I am trying to understand, if an external m.2 USB controller will work with the M.2 NVMe drives I have.

    The drive spec says "Supports M.2 (NGFF) drive of any capacity".

    Does that mean it is not compatible with modern M.2 NVMe drives?

  • user1937198
    user1937198 about 3 years
    There are also motherboards which provide PCIe and SATA to an M.2 slot, but if you use a specific expansion card slot, it disables the PCIe capability, because the M.2 slot and expansion card slot share the same PCIe lines.
  • TooTea
    TooTea about 3 years
    @user1937198 That's actually very common. Most motherboards with more than one M.2 slot provide only one dedicated PCIe x4 NVMe M.2 and any additional M.2 slots are either SATA only or only PCIe x2. These PCIe lanes are also typically shared with a PCIe slot if the board provides many PCIe slots. (And sometimes, the SATA lanes will be shared with a physical SATA port on the board, so you can use either the M.2 or a SATA cable.)
  • plugwash
    plugwash about 3 years
    If that is indeed what the spec says then it essentially makes it highly impractical to put a M.2 slot on anything other than a desktop/laptop PC motherboard. So you can assume that anything other than a PC/Laptop motherboard that has a M.2 slot is probably non-compliant.
  • Austin Hemmelgarn
    Austin Hemmelgarn about 3 years
    @plugwash In general yes, though the ‘mostly compliant’ you get from USB-C and Thunderbolt enclosures is usually good enough for pretty much anything you would be using externally, because the I²C and SMBus interfaces are rarely used for any required functionality on any cards you would actually be looking at using externally (typically, they just expose thermal sensors or occasionally PMICs to the host system).
  • plugwash
    plugwash about 3 years
    I was under the impression that external enclosures generally supported either SATA or PCIe/NVME but not both and the only external enclosures that could support arbitrary PCIe devices were thunderbolt ones (since USB is not a memory mapped bus).
  • Austin Hemmelgarn
    Austin Hemmelgarn about 3 years
    @plugwash Yes, but just about nobody is going to be using arbitrary PCIe M.2 cards in an external enclosure. The only types such devices have to deal with to cover 95% of stuff is NVMe and AHCI (some non-NVMe M.2 SSDs present an AHCI controller over PCIe instead of talking SATA natively as it’s often more efficient than using the host’s SATA controller), and both can be easily supported without needing special memory handling.
  • Tom Yan
    Tom Yan about 3 years
    What you are talking about sounds more like some Thunderbolt-specific enclosure that simply "wire" the PCIe lanes to a Thunderbolt port but does no bridging and won't work on a "pure" USB host. The more popular ones on the market either bridges a SATA (not PCIe AHCI) or NVMe drive to USB and does command / protocol translation (SCSI to ATA or NVMe).
  • iBug
    iBug about 3 years
    Granted, there are USB M.2 enclosures that supports both SATA and NVMe SSDs, and they work if you plug in either type.