guide · static export
Hardware · drivers

Identify an Unknown Device from Its Hardware ID

A device with a yellow mark and no name is not a mystery. The hardware ID encodes vendor and device numbers, and Windows already knows which driver package failed to bind.

by@guidox updated:11/01/26 time:15 min level:Intermediate tested on:Windows 11 24H2 works on:Windows 10, Windows 11, Windows Server 2019 tools:PowerShell as administrator, Device Manager
TL;DR

Read **Hardware Ids** in Device Manager, split the **VEN_** and **DEV_** numbers, then match the package with **pnputil /enum-devices /problem**. Install the right INF instead of guessing a driver name.

Before you start

Requirements

  • Admin rights
  • The device physically connected
  • 15 minutes
Step by step

Instructions

01

Read the ID instead of the name

The device shows as **Unknown device** because no INF claimed it. The Details tab still reports the identifier the firmware presents, which is the only reliable search key.

Get-PnpDevice -Status Error | Select-Object FriendlyName,InstanceId,Class
Get-PnpDevice -Status Error | Select-Object -ExpandProperty HardwareID
02

Split the identifier into its parts

**VEN_8086** is the vendor, **DEV_a7a0** the device, **SUBSYS** the board-specific variant. The vendor number is what you search first, and the subsystem decides between two almost identical models.

$id = (Get-PnpDevice -Status Error | Select-Object -First 1).HardwareID[0]
$id
$id -match 'VEN_(\w{4})' | Out-Null
"Vendor: $($Matches[1])"
$id -match 'DEV_(\w{4})' | Out-Null
"Device: $($Matches[1])"
03

See which driver package Windows tried

**pnputil /enum-devices /problem** lists only the broken devices with the problem code. Code 28 means no driver, code 10 means the driver loaded and failed, code 43 means the device reported an error.

pnputil /enum-devices /problem
pnputil /enum-devices /problem /class USB
Get-PnpDevice -Status Error | Select-Object FriendlyName,Problem,ProblemDescription
04

Check whether a matching driver is already staged

Drivers stay in the driver store after a failed attempt. **pnputil /enum-drivers** shows the OEM package names, and the INF usually names the vendor and the model family.

pnputil /enum-drivers | Select-String -Pattern 'oem|Provider|Class' -Context 0,1
Get-WindowsDriver -Online | Where-Object { $_.ClassName -eq 'USB' } | Select-Object Driver,ProviderName,Version,Date
05

Install the right package, not a generic one

**/add-driver** stages the INF and **/install** binds it to matching hardware. A package for the wrong subsystem installs without error and leaves the device broken, so compare the ID first.

pnputil /add-driver C:\drivers\chipset\*.inf /install /subdirs
Get-PnpDevice -Status Error | Select-Object FriendlyName,Status,Problem
Get-PnpDevice | Where-Object InstanceId -like '*VEN_8086*' | Select-Object FriendlyName,Status
06

Prove the device works and record the ID

A device without a problem code and with a proper name is bound. Keep the hardware ID in the ticket or the machine notes; the next reinstall is then a two-minute job.

Get-PnpDevice -Class USB,Net,Display | Where-Object Status -ne 'OK' | Select-Object FriendlyName,Status
Get-PnpDevice | Where-Object InstanceId -like '*VEN_8086*' | Select-Object FriendlyName,Status,DriverVersion
tipThe same ID is what a vendor support form asks for. Copying it from Device Manager is faster than describing the device in words.
Troubleshooting

Common issues

The device disappears when I open Device Manager

Enable View > Show hidden devices. A device that is present only while powered needs the check to run with the hardware plugged in.

pnputil says the driver is not applicable

The INF targets another architecture or another hardware ID. Compare the SUBSYS value in the INF with the one Device Manager reports.

The device works but shows code 43

The driver bound and then failed. Remove the device with pnputil /remove-device, reboot, and let Windows bind it again with the same package.

No driver exists for this build

Check the vendor page for the exact model revision and for a Windows 11 build. An older package often installs with compatibility mode but fails at runtime.

FAQ

Frequently asked

Is a hardware ID the same as a serial number?

No. The hardware ID describes the model, so every device of that model shares it; the serial number identifies the single unit.

Can I install a driver without the vendor tool?

Yes, if the package contains an INF. Point pnputil at the INF file and skip the installer that adds services and tray icons.

Where does Windows store the installed driver?

In the driver store under C:\Windows\System32\DriverStore\FileRepository. Removing it from there with pnputil /delete-driver is the clean uninstall.

How to undo this

Remove the package you added with pnputil /delete-driver oemNN.inf /uninstall and reboot. Get the exact oem name from pnputil /enum-drivers.

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

Free · no account needed · tracks your progress