How can I fix a device that doesn’t work after system resume?


Hi, this is Vivek Gupta again from the USB team. In my last post on whether devices get reset on system resume, I talked about how some devices might get negatively impacted by the behavioral changes in USB core stack in Windows7. To make it easier for users to fix such devices, we have extended the new Windows7 device stage troubleshooting functionality. Let us find out how to use the troubleshooter.


This USB Troubleshooter is built on the Windows Troubleshooting Platform. If a user is having a problem with a USB device after the system resumes from sleep, he or she can choose to troubleshoot the device through the Devices and Printers UI (Detailed steps provided at the end). This will invoke our USB Troubleshooter which will, based on some heuristics, put the device on the list of devices that need reset on resume. From that point on, whenever the system resumes from sleep, the device will be always be reset and should start working. It should be noted that the decision to apply the reset behavior on a device is based on a certain heuristic method. Therefore it is recommended that the user should troubleshoot a device only if he or she is actually experiencing problems with the device.


To launch USB Troubleshooter on a device, Open Devices and Printers by clicking the Start button and then, on the start menu, clicking Devices and Printers. Then right-click on the target USB device, and click Troubleshoot. USB Troubleshooter, along with any other applicable device troubleshooters, will automatically get downloaded and launched; wait for the Troubleshooter to finish. When it finishes, it will inform you if it applied the reset on resume behavior change on the device. Note that the system needs to be online and configured to get the latest online troubleshooters. By default, the system should already be configured in this manner. This can be verified by clicking the start button and then, on the start menu, searching and clicking Troubleshooting. On the bottom of the page, the checkbox to get the latest troubleshooters should be set.

Comments (10)

  1. ymhuang says:

    Great function for end user.  If this blog can post with some snapshot would be great. 🙂

  2. usb-composite says:

    Hi,

    I use a USB composite device that encapsulates Audio, RNDIS and video USB gadgets. Sleep and Resume works fine for this device, for Vista and XP. However, for WIN7 after resuming the PC from sleep the RNDIS gadget stops working. Plug-in and Plug-out usb cable solves this issue.

    I tried the USB troubleshooter method that you mentioned. however I do not see my WIN7 downloading the same. I have enabled the "look for latest troubelshooting tools" option and also confirmed that I can reach internet.

    Can you please help me with this. Can the USB troubleshooter tool be downloaded individually and executed?

  3. Josiah says:

    I have a touchscreen computer with the screen digitizer connected to the USB ROOT HUB. I am finding it hard to trouble shoot it because after resume, it appears as unknown device. Is there a way to reset it using a registry DWORD or something like that on resume?

  4. DukeNukem says:

    How can I force a device to do this.  The troubleshooter does not find the problem, but it clearly stops responding after a reboot.  The only way to get it back is to unplug and replug in the device (Saitek Evo Wireless Joystick).  I do not see a way to force this setting when Win7 thinks there is no problem.

    Thanks.

  5. T. Berry says:

    This isn't the answer most of you are looking for, however, there is an alternate method to "reset" the usb device. By going to the Windows Device Manager and expanding the Universial Serial Bus controllers you will see a list of USB Root Hubs. One on those hubs corresponds to the device that is not reawakening. With a little trial and error you can find the right device which is not working properly. Here is how you do it:

    1. Double-click the USB Root Hub you are going to troubleshoot in Device Manager

    2. Click on Advanced

    3. At the bottom of the USB Root Hub Properties window, you should see a tab labeled Reset Hub.

    4. Repeat this process on each hub until you find the correct device.

    5. After you reset the faulty hub your USB device should wake up.

  6. USB Blog says:

    A better solution to reset the device would be to disable/enable the device, either in Device Manager or programmatically via SetupDi.  The hub driver will reset the device on the restart.

  7. Valery says:

    I have an old keyboard plugged via PS2 -> USB adaptor into a Windows 7 PC.

    Every time it resumes from sleep, the keyboard is dead – even numlock / capslock LEDs freese in their prior state. Interesting, that the PC can be resumed from sleep mode by pressing a key on the keyboard though. Troubleshooter says everything's Ok.

    Is there a method to add the device to the reset-on-resume list manually ?

  8. David Walker says:

    The troubleshooter won't help me with setting my USB keyboard to be reset on resume from sleep.  Reason:  I havae to log in again after sleep, and if the keyboard is not responding, I have to unplug it and replug it before I can log on.

    So, by the time I get to the troubleshooter, the device is OK (or else I would not have been able to log on again).  So, the system thinks the device is fine.  

    How did the designers of this code think we were going to get around this issue?

  9. NessPJ says:

    The initial solution that was being posted (the USB Troubleshooter) sound great.

    But just like David Walker said i am stuck with the same problem for my keyboard.

    I would very much like to head from the USB (Core) Developers/Bloggers if there is a way to just invoke the device being listed as a "Reset on resume" device for W7.

    This would mean i could simply set this option for my mouse and keyboard solving all problems i ever had after a system resume.

    Developers please respond and come to our aid.

  10. Sebastien says:

    Is there a programmatic way to reset the root usb hub?

    I've tried using DevCon.exe from the Windows SDK but the problem is that it doesn't find the device. If i run 'devcon status …' it finds it but when i try 'devcon restart …' or 'devcon disable …' it does not find it.

    Is there still no fix for this issue??