First published on MSDN on Nov 08, 2013
Authored by MJ Bustamante [MSFT]
In Windows 8.1, to conserve power, Human Interface Devices (HID) that connect through USB, are suspended when no application or service is accessing the device. Suspending an idle device helps extend the battery life of mobile computers. However, when suspended, some devices stop charging while plugged into the computer, they might disconnect and then reconnect repeatedly or stop working altogether.
If you are experiencing these issues, try disabling the
Enhanced Power Management
setting by following the instructions given below. But before you do that, check first to see whether the device vendor has rolled out an update already.
Check for updates
To check whether an updated driver is available:
-
Bring up the
Search
charm by swiping into the screen from the right edge, or by moving your pointing device to the lower right corner of the screen.
-
Open the
Windows Update
by typing for “windows update” in the Search charm
.
-
Tap or click
Check for updates
to find latest updates for your computer.
-
Tap or click
Check now
.
-
If updates are found, tap or click
Install updates
.
-
Make sure the problem is resolved.
-
If not, try disabling the power management by following the instruction below.
Disable
Enhanced Power Management
In these instructions, we’ll use a HID-compliant game controller device as an example.
-
Connect the device to the computer.
-
Search for “device manager” in the Search charm, and open Device Manager.
-
Expand the
Human Interface Devices
node and select the device that is causing the issue. You will get a window like the one shown in the image below. Note that the device might be listed by name or as "USB Input Device." Also, there might be multiple "USB Input Device” nodes. Follow these steps to determine the problem device:
-
Disconnect the problem device from the computer.
-
Right-click each
USB Input Device
node, select
Properties
, and note the device description and details.
-
Reconnect the problem device.
-
Reexamine each
USB Input Device
node to determine the new device, which represents the problem device.
-
Select the
View
–>
Devices by connection
from the menu. You’ll see the parent USB device to which the problem device is connected. In this example, the game controller is connected to the Microsoft Sidewinder Freestyle Pro USB device.
-
Right-click the parent USB device that you found in the previous step and select
Properties
.
-
View the
Details
tab.
-
Under Property, select Device Instance Path, and then note the ID information. In this example, the ID is USB\VID_045E&PID_000E\6&61F43E3&0&2. This line is a combination of these IDs:
-
Vendor ID (VID)
-
Product ID (PID)
-
Instance ID
-
Open Registry Editor (regedit.exe) by searching for “regedit” in the Search charm.
-
Navigate to
HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Enum\ USB
.
-
Expand the USB folder.
-
Under the USB folder, open the folder with the name that matches the VID and PID that you noted in step 8. In this example, it’s
VID_045E&PID_000E
.
-
Under that VID&PID folder, find the folder that matches the Instance ID you noted in step 8. In this example, it’s
6&61F43E3&0&2.
-
Under the Instance ID key, select
Device Parameters
.
-
In the details pane, right-click the
EnhancedPowerManagementEnabled
entry and then click
Modify
.
-
Change the
Value
data to
0
and then click
OK
. See image below.
-
Exit Registry Editor.
-
Unplug and plug the device.
Important Note
: In order for the registry changes to be maintained, you must plug in your device into the same port it was plugged in when you made the registry changes.
The problem device should now recharge correctly or stop disconnecting.
If you have to enable the
Enhanced Power Management
setting again for the device after you install an updated driver, follow the same steps in this section except that, in step 10, change the
Value
data to
1
.
As a device maker, how can I provide this fix to my customers?
All you have to do is either create a new INF file or add to your existing INF File, the following snippet in the Install section of the INF:
[VendorDevice_Install.NT]
include = input.inf
needs = HID_Inst.NT
[VendorDevice_Install.NT.HW]
AddReg = VendorDevice_AddReg
[VendorDevice_AddReg]
HKR,,"EnhancedPowerManagementEnabled",0x00010001,0
[VendorDevice_Install.NT.Services]
include = input.inf
needs = HID_Inst.NT.Services
Note, this is not a complete INF. It only shows the sections needed to add the registry. After you have created the INF file and validated it, you can sign it and post it on Windows Update so users of your device can get the fix automatically.
Feedback
If the workaround resolves the issue, please respond with a comment describing specifically the problem you were experiencing (e.g. my USB device did not charge, or my USB game controller disconnected every few seconds, or stopped working). Please include a description of the device with the make and model, and the VID and PID of the device.