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:
include = input.inf
needs = HID_Inst.NT
AddReg = VendorDevice_AddReg
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.
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.