I am a beginner and I know that NVMe is new and has advantages over AHCI for SSDs. But, I have one small question?

A SATA SSD can talk both AHCI and NVMe and the OS also has drivers for both NVMe and AHCI.

How one of AHCI and NVMe is selected? How can we switch from one protocol to another? How can we switch from NVMe to AHCI? I am not sure but I do not think there is any BIOS setting for this.0

  • Please help me understand more. I heard that SATA Express supports both SATA and PCI Express storage devices. I think I am missing something Jan 27, 2020 at 15:37

1 Answer 1


No, a SATA SSD cannot talk both AHCI and NVMe.

AHCI is just the most common SATA controller specification, and/or the native working mode of that controller. Commonly, there may be one or two other modes: a legacy IDE compatibility mode, and/or a mode that supports software/firmware RAID. In all of these cases, the controller explicitly uses SATA connection technology to talk to the SSD (or HDD).

In order to talk NVMe, the SSD needs direct PCIe connectivity, which can be achieved with PCIe SSD cards (sometimes called "I/O accelerators" if sold as server options) or with M.2 form factor SSDs.

The M.2 slot can have both SATA and PCIe connectivity - but some M.2 slots may have only one or the other actually wired in, depending on the number of available PCIe lanes and/or SATA connections in the system chipset.

Most M.2 SSDs I've seen are either SATA or NVMe, not both - so if you wish to switch from one type to another, you'll usually have to replace the SSD with a different model, and make arrangements to copy the contents from one to the other.

A NVMe SSD should show up in a lspci listing in Linux like this, for example:

07:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM981/PM981/PM983

In Linux, the NVMe devices will not appear as /dev/sdX, but as /dev/nvmeXnY, where Y is the NVMe namespace ID (normally always 1 in consumer-level NVMe SSDs). The partitions of NVMe devices will be named /dev/nvmeXnYpZ. So the first NVMe device would be /dev/nvme0n1 and its first partition /dev/nvme0n1p1.

At least some system manufacturers have implemented NVMe boot support for native UEFI boot style only, so if your OS has been installed using legacy MBR/BIOS boot style, you might have to install a UEFI bootloader before transferring your current system to a NVMe SSD.

If you are unfamiliar with UEFI and NVMe, I would recommend introducing a NVMe SSD to your system by temporarily disconnecting all other HDDs and SSDs, plugging in a new NVMe SSD, switching the BIOS settings to UEFI boot only (or "CSM disabled", as it's sometimes expressed), and making a fresh installation of your OS of choice. These steps will ensure that the OS installer will be booted in UEFI mode, which usually means it will automatically install an UEFI-compatible bootloader instead of a traditional MBR/BIOS version. Disconnecting all other storage media protects against mistakes (both your and the installation program's).

Once you have the new OS fully installed, you can reconnect the other disks.

  • Please help me understand more. I heard that SATA Express supports both SATA and PCI Express storage devices. I think I am missing something Jan 27, 2020 at 15:41
  • SATA Express is a bus/connector type that allows plugging in either SATA storage devices or PCIe-based (= usually NVMe) SSDs. But a single SSD is either one or the other by design, not switchable from one mode to the other (since it would require the SSD to have two types of control electronics built-in, increasing production costs - easier to have two separate models). The M.2 specification was also launched at the same time as the SATA Express specification, and it looks like M.2 was the winner and SATA Express is vanishing from the market.
    – telcoM
    Dec 13, 2021 at 5:51

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .