How to Configure Selective Suspend on Network Adapters in Windows 11 Using PowerShell

In modern computing environments, USB-C docking stations, external USB Ethernet dongles, and embedded PCIe/USB network interface controllers (NICs) are ubiquitous. To maximise energy efficiency on laptops, tablets, and desktop workstations, Windows 11 implements USB Selective Suspend and NDIS Selective Suspend. When an adapter detects no network transmission for a predetermined inactivity timeout, Selective Suspend places the physical controller into a low-power D2 or D3 power state while the host system remains fully operational. However, this aggressive bus-level power management frequently results in dropped SSH sessions, lost network connections, wake-on-LAN failures, and high first-packet latency when network activity resumes. Using PowerShell in Windows 11, administrators can configure Selective Suspend on network adapters with precision.

How Selective Suspend Operates on Network Adapters

Unlike global system sleep states, Selective Suspend operates on individual peripheral device buses. For USB-connected network controllers—such as Realtek RTL8153/RTL8156, ASIX AX88179, and DisplayLink docks—the NDIS driver coordinates with the USB core stack (USBPORT.SYS or USBXHCI.SYS). When the network traffic queue remains idle for longer than the internal timeout threshold (typically 5 to 30 seconds), the NDIS driver issues an idle notification to the USB bus driver.

The USB port enters a suspended power state, cutting power to the transceiver circuits. When outbound packets are queued or an inbound Wake-on-LAN frame arrives, the driver must issue a resume request, wait for the USB host controller to power the downstream port, and re-establish physical Ethernet auto-negotiation. This transition can take between 500 milliseconds and several seconds. If the upstream network switch interprets the power-down as an unexpected physical link detachment, it drops port state, triggering Spanning Tree Protocol (STP) recalculations and disrupting continuous network workflows.

Querying Network Adapters and Locating Selective Suspend

To audit and manage Selective Suspend, open an elevated PowerShell prompt and identify the available physical network adapters:

Get-NetAdapter -Physical | Select-Object -Property Name, InterfaceDescription, Status, LinkSpeed

To inspect whether your adapter exposes Selective Suspend as an NDIS advanced property, query Get-NetAdapterAdvancedProperty:

Get-NetAdapterAdvancedProperty -Name "Ethernet*" | Where-Object { $_.DisplayName -match "Selective Suspend" -or $_.RegistryKeyword -match "SelectiveSuspend" }

The property is typically identified by the display name Selective Suspend or the registry keyword *SelectiveSuspend (or EnablePME / SSIdleTimeout). Inspect its current registry values and permitted parameters:

Get-NetAdapterAdvancedProperty -Name "Ethernet 2" -DisplayName "Selective Suspend" | Select-Object DisplayName, DisplayValue, RegistryKeyword, RegistryValue, ValidDisplayValues

Disabling Selective Suspend to Prevent Network Drops

In enterprise docking setups, mission-critical workstations, or scenarios where persistent network connections (such as database sessions, VPN tunnels, or file syncs) must remain continuously responsive, disabling Selective Suspend forces the network controller to remain continuously powered on the USB or PCIe bus.

To disable Selective Suspend on a target network adapter, execute:

Set-NetAdapterAdvancedProperty -Name "Ethernet 2" -DisplayName "Selective Suspend" -DisplayValue "Disabled"

If you prefer referencing the standardized NDIS registry keyword for script compatibility across localized language packs, execute:

Set-NetAdapterAdvancedProperty -Name "Ethernet 2" -RegistryKeyword "*SelectiveSuspend" -RegistryValue "0"

Modifying this property triggers an immediate driver reinitialization. The interface will briefly disconnect and reconnect to the network, permanently eliminating bus suspension while the computer is active.

Enabling Selective Suspend for Battery Optimization

On ultra-portable laptops and field devices operating primarily on battery power, enabling Selective Suspend allows the external USB Ethernet adapter to conserve measurable milliwatts whenever network queues are idle.

To re-enable Selective Suspend on the adapter:

Set-NetAdapterAdvancedProperty -Name "Ethernet 2" -DisplayName "Selective Suspend" -DisplayValue "Enabled"

Or configure via the registry keyword:

Set-NetAdapterAdvancedProperty -Name "Ethernet 2" -RegistryKeyword "*SelectiveSuspend" -RegistryValue "1"

Verify that the updated property value has been written to the driver configuration:

Get-NetAdapterAdvancedProperty -Name "Ethernet 2" -RegistryKeyword "*SelectiveSuspend"

Configuring Selective Suspend Idle Timeouts

Some vendor drivers also expose a configurable timeout property (often named Selective Suspend Idle Timeout or keyword *SSIdleTimeout), allowing you to define the number of idle seconds required before the bus suspends.

Check if your adapter driver supports an adjustable timeout:

Get-NetAdapterAdvancedProperty -Name "Ethernet 2" | Where-Object { $_.DisplayName -match "Timeout|Idle" }

If present, you can extend the timeout from the default 5 seconds to 30 or 60 seconds to prevent rapid on/off power cycling during brief network pauses:

Set-NetAdapterAdvancedProperty -Name "Ethernet 2" -DisplayName "Selective Suspend Idle Timeout*" -DisplayValue "30"

Automating Fleet-Wide Configuration Across Docking Stations

Because external USB network adapters frequently change interface names when plugged into different ports, hardcoded adapter names are fragile. Systems administrators can use a dynamic PowerShell script to identify all USB-attached Ethernet adapters and enforce a disabled Selective Suspend baseline:

$NetworkAdapters = Get-NetAdapter -Physical | Where-Object { $_.InterfaceDescription -match "USB|Realtek USB|ASIX|Ethernet Adapter" }

foreach ($NIC in $NetworkAdapters) {
    $TargetProp = Get-NetAdapterAdvancedProperty -Name $NIC.Name -ErrorAction SilentlyContinue |
        Where-Object { $_.RegistryKeyword -match "SelectiveSuspend" -or $_.DisplayName -match "Selective Suspend" }

    if ($TargetProp) {
        Write-Host "Disabling Selective Suspend on: $($NIC.Name) ($($NIC.InterfaceDescription))" -ForegroundColor Cyan
        Set-NetAdapterAdvancedProperty -Name $NIC.Name -RegistryKeyword $TargetProp.RegistryKeyword -RegistryValue "0"
    } else {
        Write-Host "Selective Suspend property not found on: $($NIC.Name)" -ForegroundColor DarkGray
    }
}

Auditing USB Power Management and Device Event Logs

In addition to NDIS driver properties, verify that the underlying USB device node does not allow the operating system to power down the root hub. You can inspect power management capabilities via WMI / CIM:

Get-CimInstance -ClassName MSPower_DeviceEnable -Namespace root\wmi |
    Where-Object { $_.InstanceName -match "USB" } |
    Select-Object InstanceName, Enable

Finally, inspect the Windows System Event Log for any recent NDIS warning events (Event ID 10400 or 1014) following your changes:

Get-WinEvent -FilterHashtable @{
    LogName = 'System'
    ProviderName = @('Tcpip', 'e1rexpress', 'rt640x64', 'NetAdapterCx')
    StartTime = (Get-Date).AddHours(-1)
} -ErrorAction SilentlyContinue | Select-Object TimeCreated, Id, Message -First 5

With Selective Suspend disabled, the USB controller maintains steady power delivery, eliminating intermittent interface drops and ensuring persistent, low-latency network connectivity across all Windows 11 sessions.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.