guidox / PC

Check Whether a Drive Is SATA or NVMe and Which Slot It Uses

TL;DR

Read **BusType** from **Get-PhysicalDisk**, then map the device to a slot with **DEVPKEY_Device_LocationInfo**. A SATA drive in an M.2 slot shows SATA, not NVMe.

Before you start

Requirements

  • Windows 11
  • 5 minutes
Step by step

Instructions

01

Read the bus type

**Get-PhysicalDisk** reports NVMe, SATA or RAID per device. That single value answers most of the question before any hardware inspection.

Get-PhysicalDisk | Select-Object DeviceId,FriendlyName,MediaType,BusType,Size,HealthStatus
Get-Disk | Select-Object Number,FriendlyName,BusType,SerialNumber,Size
Get-CimInstance Win32_DiskDrive | Select-Object Index,Model,InterfaceType,Size,SerialNumber
02

Check the NVMe link speed and width

An NVMe drive in a x2 slot runs at half the lanes. The PCIe link is visible through the storage stack, and it is the difference between 3 GB/s and 7 GB/s.

Get-StorageNode -Name (Get-PhysicalDisk | Select-Object -First 1).FriendlyName -ErrorAction SilentlyContinue | Select-Object Name,OperationalState,UniqueId
Get-CimInstance -Namespace root\wmi -ClassName MSFT_Disk -ErrorAction SilentlyContinue | Select-Object ModelNumber,SerialNumber,BusType
Get-PnpDevice -Class SCSIAdapter,HDC | Select-Object FriendlyName,Status,InstanceId
03

Map the drive to its physical slot

The PCI location string names bus, device and function, which the manual maps to a slot. That is the only reliable way to know which M.2 socket is in use.

Get-PnpDevice -Class DiskDrive | Select-Object FriendlyName,InstanceId,LocationInfo
Get-PnpDeviceProperty -InstanceId (Get-PnpDevice -Class DiskDrive | Select-Object -First 1).InstanceId -KeyName 'DEVPKEY_Device_LocationInfo','DEVPKEY_Device_BusNumber' -ErrorAction SilentlyContinue | Select-Object KeyName,Data
Get-CimInstance Win32_PnPEntity | Where-Object { $_.PNPClass -eq 'DiskDrive' } | Select-Object Name,DeviceID
04

Check the controller and the driver

A SATA drive behind a RAID controller reports RAID, not SATA. The controller's driver decides whether Windows sees the drive as NVMe or as a SCSI device.

Get-CimInstance Win32_SCSIController | Select-Object Name,DriverName,Manufacturer
Get-PnpDevice -Class SCSIAdapter | Select-Object FriendlyName,Status
Get-CimInstance Win32_PnPSignedDriver | Where-Object { $_.DeviceClass -in 'SCSIADAPTER','HDC' } | Select-Object DeviceName,DriverVersion,DriverDate
05

Confirm with throughput

A sequential test separates a slow link from a slow drive. A drive rated at 7 GB/s that copies at 900 MB/s is limited by the slot or by the copy target.

Get-PhysicalDisk | Select-Object FriendlyName,BusType,MediaType,Size
# run a sequential test on the drive and compare against its rating
Get-Counter '\PhysicalDisk(*)\Disk Read Bytes/sec','\PhysicalDisk(*)\Disk Write Bytes/sec' -SampleInterval 1 -MaxSamples 3 | Select-Object -ExpandProperty CounterSamples | Select-Object InstanceName,CookedValue
06

Record the layout

A table of drive, bus type and slot makes the next upgrade decision trivial and prevents buying an NVMe drive for a SATA-only socket.

Get-PhysicalDisk | Select-Object FriendlyName,BusType,MediaType,Size,SerialNumber | Export-Csv "$env:USERPROFILE\storage.csv" -NoTypeInformation
Import-Csv "$env:USERPROFILE\storage.csv"
Get-CimInstance Win32_BaseBoard | Select-Object Product,Version
Troubleshooting

Common issues

An M.2 drive shows SATA

The slot is SATA-only, or the drive is a SATA M.2. Check the mainboard manual for the slot's supported modes.

The drive is missing entirely

The slot is disabled when another port is used. Many boards share lanes between an M.2 slot and SATA ports.

BusType shows RAID

The controller presents the drive as a virtual disk. Check the controller's own tool for the physical link.

Throughput is far below the rating

Check the PCIe generation in the firmware, the slot's lane count and the drive's temperature, which throttles performance.

FAQ

Frequently asked

Does an NVMe drive work in a SATA M.2 slot?

No. The slot's keying and the controller must support NVMe, otherwise the drive does not appear at all.

Is PCIe 3.0 x4 enough for an NVMe drive?

It caps around 3.5 GB/s. A Gen4 drive will work but not reach its rated speed.

Why does the drive get slower when hot?

NVMe controllers throttle to protect the NAND. A heatsink or better airflow restores the rated speed.

How to undo this

Nothing is changed by reading these values. Delete storage.csv if you do not need the record.

Changelog · 1 entry
  1. 2026-11-01
    First version
Interactive version: checklist, feedback, related guides →

Free · no account needed · tracks your progress