Authored by Jim Bovee [MSFT]

Last update: April 17, 2014

Note: The registry workaround described in this blog is no longer required. A major Windows update published on 4/8/2014 reverts the USBSTOR.SYS driver behavior to 8.0. As a result, a storage device that uses BOT protocol will not be suspended when it's idle. So if you are having issues accessing your device after the device has been idle for sometime, please install this latest Windows update first. Here is the direct link to the update: http://support.microsoft.com/kb/2919355. Once the update is installed, you should see the timestamp on the %SystemRoot%\system32\drivers\usbstor.sys file to be 2/22/2014 or later.

In Windows 8.1, to conserve system power, some USB storage devices (external USB hard drives and USB flash drives) enter a low power state (suspended) when they are idle. To view the idle period:

1. Use the Search charm and type “power options”.

2. Click the first result.

3. Click Change Plan Settings of the currently selected power plan.

4. In the Edit Plan Settings dialog click Change advanced power settings.

5. Expand Hard disk and then Turn off hard disk after.

The Setting value indicates the system disk idle period. In this image the idle period is set to 20 minutes (default).

clip_image002[4]

For this system, if no file transfers occur within 20 minutes, the drive enters a suspend state and draws less power from the system.

For most USB storage devices and USB host controllers, the power-saving mechanism works without issues. However, a pre-existing problem in the USB drive or USB host controller might cause these problems after the specified idle period expires:

  • The device periodically disconnects and might reconnect leading to poor user experience.
  • If you try to access files stored on the drive, Windows Explorer becomes unresponsive for 1-2 minutes.

If you notice any of those problems, first check whether the firmware on the USB host controller or the USB storage device is out of date. If so, get the latest firmware from the system or device manufacturer. A firmware update might resolve the issue.

Otherwise, determine whether the problem occurs during the system disk idle time period (shown in Power Options). If it does, disable suspend on idle for this device as per the instructions given in the next two sections. The first section shows how to find the VID/PID of the device and apply the registry setting manually. Second section shows how to do that using a PowerShell script. Note, you can set the value to “Never” in the Power Options just an experiment to see if that fixes the issue, but the right long term solution is to set the registry setting as described below. This registry setting does not affect the other USB storage devices and results in conserving power.

To disable suspend on idle for this device:

1. Obtain the hardware ID of the USB storage device.

1. Make sure the device is plugged in.

2. Search for “device manager” in the Search charm, and open Device Manager.

3. In Device Manager, expand the Disk Drives and locate the device:

clip_image004[4]

4. Select the View > Devices by connection from the menu:

clip_image006[4]

5. Right-click the USB Mass Storage Device node under which the device appears, and select Properties.

6. On the Details tab, select Hardware Ids from the drop-down list.

jim6

7. Make a note of the 4 digits occurring after “VID_” and “PID_” and close Device Manager. In this example, VID is 0004 and PID is 0001.

2. Change the device setting in the registry.

1. Run Registry Editor (regedit.exe) as administrator by searching for “regedit” in the Search charm. Right-click the regedit icon, and select Run as administrator.

2. In Registry Editor, navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbstor.

clip_image008[4]

 

3. Right-click usbstor and create a key. The name must be VID and PID strings obtained previously. Leading 0’s are significant. For the device in this example the new key name is “00040001”.

4. Right-click the new key and create a DWORD entry named DeviceHackFlags. Set the value to 400 hexadecimal.

clip_image010[4]

5. Disconnect and reconnect the device.

If the workaround resolves the issue please respond with a comment containing the VID and PID for the device and the USB host controller to which it is connected (from top-level parent icon in step 4 of “Obtain Device Hardware ID” section). 

PowerShell script to disable suspend

To make it easier to find devices and apply the registry setting, we have recently added a PowerShell script to this blog. The script when run lists all the storage devices and gives you an option to pick a device to either enable or disable the suspend setting.

  1. Download the ToggleSuspend.ps1 to a local directory.
  2. Right click on Start button and select "Command Prompt (Admin) option to start a command prompt with Administrator privilege.
  3. Cd to the directory where you have the script saved.
  4. Run "Powershell -ExecutionPolicy Bypass -NoProfile -File ToggleSuspend.ps1”.  Remove the quotes when you copy paste. The script will display the VID/PID of the storage devices, friendly name of the device as seen in the device manager, and whether the "SuspendOnIdle" option is enable or disabled.
  5. By selecting the drive number from the list, you can toggle the state.

Please note for some devices, the script may not show the friendly name. This is a known limitation of the script.

Instructions for recording a verification trace only readable by Microsoft have been removed from this blog post. This trace is no longer needed because the script eliminates difficult, error-prone steps in applying the registry workaround, 

Device List

FYI: A list of Windows 8.1 certified devices which have passed selective suspend testing is available here.

 

Update:  Thanks to all for reporting the VID/PID of the devices that are impacted by selective suspend. Here is the compiled list as of Jan. 27, 2014:

* = Device is fixed by installing KB 2914219--no need to edit registry or use our script. We hope to release another KB to fix more devices, such as the ones not marked with (*).

USB\VID_0411&PID_01E7*

USB\VID_0411&PID_01EA*

USB\VID_0411&PID_01E5

USB\VID_0411&PID_0105

BUFFALO HD-PNTU3 (1TB)

Buffalo DriveStation HD-LB2.0TU2-UK (2GB)

Buffalo HD-LBV3.0TU3 (3GB)

Buffalo External HDD 500GB

USB\VID_2009&PID_5004*

datAshur

USB\VID_174C&PID_55AA*

USB\VID_174C&PID_5136

USB\VID_174D&PID_5106

USB\VID_0BDA&PID_0184

USB\VID_18E3&PID_9106

Fantom Drive, USB 3.0, model: GF3BM1000U

Sabrent 2.5" SATA Hard Drive To USB 3.0 Enclosure

StarTech SAT2510B12U3

Fantom Compact 4 TB USB Hard Drive, model: GF3B4000U

Media Card Reader (Built into Dell XPS 8100)

USB\VID_04C5&PID_120E*

USB\VID_0480&PID_A006

USB\VID_04BB&PID_013E

USB\VID_0939&PID_0B16

USB\VID_0DC4&PID_020A

USB\VID_0930&PID_0B1A

Fujitu HDD (1TB)

Toshiba Canvio Basic USB 3.0

IOData HDPV-UT

Toshiba Stor.E  2TB

ICY BOX

Toshiba STORE.E ALU 1 TB (USB 3.0)

USB\VID_4971&PID_1012

USB\VID_4971&PID_1013

USB\VID_4971&PID_1014*

USB\VID_4971&PID_1015*

USB\VID_4971&PID_CE17*

USB\VID_1BCF&PID_0C31

Hitachi Touro USB 3.0 HDD

 

 

 

 

Hitachi HDS721010CLA332 USB Device

USB\VID_125F&PID_A03A*

USB\VID_125F&PID_A15A

ADATA Nobility NH03

ADATA HD710 1TB

USB\VID_0951&PID_162B

Kingston DataTraveler HyperX 3.0 USB  Device 256GB (DTHX30/256GB)

USB\VID_059F&PID_1018*

USB\VID_058F&PID_6362

LaCie 2TB USB Drive

Media Card Reader (Built into Dell XPS 8500)

USB\VID_1520&PID_0551*

multi-drive enclosure connected

USB\VID_152D&PID_2336*

USB\VID_152D&PID_2339*

USB\VID_152D&PID_2352*

USB\VID_152D&PID_2509*

USB\VID_152D&PID_0539

USB\VID_152D&PID_0551

USB\VID_152D&PID_2329

RaidSonic ICYBOX IB3221StU-B External Case  (JMicron Technology Corp 20336 Controller)

Sans Digital TR4U+B

Vantect NexStar HXR4

Fantec QB-35US3R with 4x2 TB

Digitus USB 3 External HDD Enclosure 2.5

Mediasonic H82-SU3S2 ProBox

EAGLE ET-CS2MSU2-BK 2.5" Black USB 2.0 Mesh External Enclosure

USB\VID_04E8&PID_6012*

USB\VID_04E8&PID_6013

USB\VID_04E8&PID_6860

Samsung 1T

Samsung G3 Station 1TB

Samsung i9500

USB\VID_0BC1&VID_A0A4

USB\VID_0BC2&PID_A0A1

USB\VID_0BC2&PID_A0A4

USB\VID_0BC2&PID_A0A5

USB\VID_0BC2&PID_5071*

USB\VID_0BC2&PID_2312*

USB\VID_0BC2&PID_2332

USB\VID_0BC2&PID_2340

USB\VID_0BC2&PID_3300*

USB\VID_0BC2&PID_3000

USB\VID_0BC2&PID_3001

USB\VID_0BC2&PID_3008*

USB\VID_0BC2&PID_3010*

USB\VID_0BC2&PID_3312*

USB\VID_0BC2&PID_3320*

USB\VID_0BC2&PID_3332*

USB\VID_0BC2&PID_3372

USB\VID_0BC2&PID_50B5

USB\VID_0BC2&PID_3330

USB\VID_0BC2&PID_5031

Seagate Drives

USB\VID_0984&PID_0310*

USB\VID_0984&PID_0315*

USB\VID_0984&PID_0340*

USB\VID_0984&PID_1400*

USB\VID_0984&PID_1405*

USB\VID_0984&PID_1406*

USB\VID_0984&PID_0095*

USB\VID_0984&PID_0092*

USB\VID_0984&PID_0317*

USB\VID_0984&PID_0316*

USB\VID_0984&PID_1403*

Apricorn Padlock 3.0

Apricorn Padlock DT 3.0

Apricorn Aegis BIO

Apricorn Fortress

Apricorn Padlock SSD

Apricorn FIPS Padlock DT

Apricorn Padlock Pro

iStorage diskAshur

iStorage diskAshur DT

iStorage diskAshur FIPS 

DiskGenie USB Device

USB\VID_18A5&PID_0400*

USB\VID_18A5&PID_021B*

USB\VID_18A5&PID_0216*

Verbatim Store 'n' Save SuperSpeed 3TB

Verbatim Quad-interface External HDD

Verbatim 1TB-USB 2.0-Drive  

USB\VID_1058&PID_1021*

USB\VID_1058&PID_1140*

USB\VID_1058&PID_0730*

USB\VID_1058&PID_0741*

USB\VID_1058&PID_0748*

USB\VID_1058&PID_1123

Western Digital

 

 

 

 

WD My Book 3.0 1 TB

USB\VID_0928&PID_0010 Zalman VE-200SE enclosure
USB\VID_0781&PID_5406 SanDisk Micro Cruzer (USB flash drive)
USB\VID_0D49&PID_7310 Maxtor OneTouch
USB\VID_12D1&PID_1003 Huawei MMC Storage USB Device

USB\VID_054C&PID_05C0

USB\VID_054C&PID_07BA

Sony HDD-1TB

Sony HDD-2TB

USB\VID_19B9&PID_3455 Drobo 5D

* = (explained at top of table)