Hardware glitches—such as a frozen USB audio interface, an unresponsive Bluetooth radio, or a display driver encountering kernel timeouts—traditionally prompt Windows users to perform a full system reboot. Alternatively, administrators navigate into Device Manager, right-click the offending peripheral, disable it, wait several seconds, and re-enable it manually.
Windows 11 includes a native, automated command-line alternative: pnputil /restart-device. As part of Microsoft’s built-in PnP (Plug and Play) utility, this command programmatically stops, unloads, and re-initialises target hardware devices in a single command, restoring normal driver communication without interrupting other running processes or rebooting the operating system. This guide covers how to identify device instance IDs and execute hardware power cycles using pnputil.
Understanding PnP Device Instance Paths
To restart a specific piece of hardware, Windows requires its unique Device Instance Path (or Instance ID). This string identifies the hardware bus, vendor ID, product ID, and revision:
USB\VID_046D&PID_C52B\5&1B2A3C4D&0&1
Device instance paths are permanent across reboots for physically installed hardware, allowing them to be safely hardcoded into automated administrative recovery scripts.
Step-by-Step Hardware Restart Procedure
1. Identify the Target Device Instance ID
Open PowerShell or Command Prompt with administrative privileges and query connected devices matching your hardware class:
# Query all connected Bluetooth devices
pnputil /enum-devices /class Bluetooth /connected
Locate the Instance ID in the returned output:
Instance ID: USB\VID_8087&PID_0032\5&2B3C4D5E&0&1
Device Description: Intel(R) Wireless Bluetooth(R)
Class Name: Bluetooth
Status: Started
2. Execute the /restart-device Command
Pass the discovered Instance ID to pnputil with the restart switch:
pnputil /restart-device "USB\VID_8087&PID_0032\5&2B3C4D5E&0&1"
Windows immediately unloads the driver, issues a device reset signal over the bus controller, and re-initialises the hardware stack:
Microsoft PnP Utility
Restarting device: USB\VID_8087&PID_0032\5&2B3C4D5E&0&1
Device successfully restarted.
Automating Peripheral Restarts in PowerShell
Instead of copying instance IDs manually, write a one-line PowerShell script to automatically restart any malfunctioning device displaying an error code:
# Restart any device currently in an Error state
Get-PnpDevice | Where-Object { $_.Status -eq 'Error' } | ForEach-Object {
Write-Host "Restarting malfunctioning device: $($_.FriendlyName)" -ForegroundColor Yellow
pnputil /restart-device $_.InstanceId
}
Comparison of Windows Hardware Management Methods
| Method | Automation Capability | Reboot Required? | Best For |
|---|---|---|---|
pnputil /restart-device |
Excellent (Single command) | No | Automated script recovery of frozen peripherals |
Device Manager (GUI) |
None (Manual clicks) | No | Casual desktop troubleshooting |
Disable-PnpDevice / Enable-PnpDevice |
High (PowerShell cmdlets) | No | Complex pipeline filtering in PowerShell scripts |
System Restart (shutdown /r) |
High | Yes | Kernel-level hangs where bus drivers fail to respond |
Troubleshooting Device Restart Failures
- Error 0x5 (Access Denied): The command must be run from an elevated command prompt (Run as Administrator). Standard user shells lack PnP bus reset privileges.
- Device In Use / Cannot Be Stopped: If a storage controller or network adapter is handling active system pagefiles or primary network traffic, the operating system may refuse the restart request to prevent a blue screen crash.