guidox / Hardware

Test Whether a USB Port Is USB 2 or 3

TL;DR

Check **Get-CimInstance Win32_USBController** for an xHCI controller, read the port's location with **Get-PnpDeviceProperty**, then copy a large file from a USB 3 drive and watch the rate.

Before you start

Requirements

  • A USB 3 drive or device
  • Windows 11
  • 10 minutes
Step by step

Instructions

01

Identify the controllers

An **xHCI** controller serves USB 3 ports; **EHCI** is USB 2 only. A machine with only EHCI controllers has no USB 3 at all, whatever the port colour suggests.

Get-CimInstance Win32_USBController | Select-Object Name,Manufacturer,Status,DeviceID
Get-PnpDevice -Class USB | Where-Object FriendlyName -match 'Host Controller|xHCI|eHCI' | Select-Object FriendlyName,Status
Get-Service USBXHCI | Select-Object Name,Status,StartType
02

Read the hub tree

A SuperSpeed hub sits next to the USB 2 hub on the same physical port. Seeing a SuperSpeed hub for the device means the link has all four extra pins connected.

Get-PnpDevice -Class USB | Select-Object FriendlyName,Status,InstanceId | Where-Object FriendlyName -match 'Hub'
Get-CimInstance Win32_USBHub | Select-Object Name,DeviceID,Status
Get-PnpDeviceProperty -InstanceId (Get-PnpDevice -Class USB | Where-Object FriendlyName -match 'SuperSpeed' | Select-Object -First 1).InstanceId -KeyName 'DEVPKEY_Device_LocationInfo' -ErrorAction SilentlyContinue | Select-Object Data
03

Find the port the device is on

**DEVPKEY_Device_LocationInfo** reports the bus, port and hub path, which maps to a physical socket. Comparing two sockets on the same machine is the direct test.

$dev = Get-PnpDevice -Class DiskDrive | Select-Object -First 1
$dev | Select-Object FriendlyName,InstanceId
Get-PnpDeviceProperty -InstanceId $dev.InstanceId -KeyName 'DEVPKEY_Device_LocationInfo','DEVPKEY_Device_LocationPaths' -ErrorAction SilentlyContinue | Select-Object KeyName,Data
04

Measure the rate, not the label

A USB 3 drive at 480 Mbps caps near 40 MB/s, a USB 3 link near 400 MB/s. A timed copy of a large file is the honest measurement.

$src = (Get-ChildItem 'F:\' -Filter *.bin -Recurse -ErrorAction SilentlyContinue | Sort-Object Length -Descending | Select-Object -First 1).FullName
$src
Measure-Command { Copy-Item $src 'C:\temp\usbtest.bin' -Force } | Select-Object TotalSeconds
Get-NetAdapter -ErrorAction SilentlyContinue | Out-Null
05

Check the cable and the device class

A USB 2 cable, an unpowered hub or a USB 2 device in a USB 3 port all produce the slow rate. Swapping one component identifies which of the three it is.

Get-PnpDevice -PresentOnly -Class USB | Select-Object FriendlyName,Status
Get-CimInstance Win32_USBControllerDevice | ForEach-Object { [wmi]$_.Dependent } | Where-Object Name -match 'Hub|Device' | Select-Object Name,Status | Select-Object -First 8
Get-Disk | Where-Object BusType -eq 'USB' | Select-Object FriendlyName,Size,BusType
06

Record which socket is which

A table of socket, controller and measured rate saves the next guess. Label the case with tape if the ports look identical.

Get-CimInstance Win32_USBController | Select-Object Name,DeviceID
Get-PnpDevice -Class USB | Where-Object FriendlyName -match 'Hub' | Select-Object FriendlyName,InstanceId
Get-Disk | Where-Object BusType -eq 'USB' | Select-Object Number,FriendlyName | ConvertTo-Json
Troubleshooting

Common issues

The rate is ~40 MB/s on every port

Either the device is USB 2 or the cable is. Test the same device with a different cable before blaming the machine.

One port is slower than the others

It may be a USB 2-only socket or an internally shared hub. Check the board manual for the port map.

The device shows as SuperSpeed but copies slowly

The drive itself is the limit, common with cheap flash. Test with a known-fast SSD in an enclosure.

The port drops devices under load

Power delivery. Use a powered hub and check for the surge message in the system log.

FAQ

Frequently asked

Does the port colour prove USB 3?

No. Blue is a convention, not a standard, and many boards ignore it.

Can a USB 3 device run on a USB 2 port?

Yes, at USB 2 speed. The connector fits; only the extra pins are unused.

Why is the first copy slower than the second?

The file system cache and the drive's own cache. Measure after a warm-up copy for a stable number.

How to undo this

Nothing is changed by testing. Delete the test copy in C:\temp and reconnect the device to the port you prefer.

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

Free · no account needed · tracks your progress