USB Selective Suspend

Roscoe Casita wrote:

Sorry for further confusion,… There are lots of people asking
questions that don’t make sense, and I’m doing my best to help them
understand.

There is also this overly broad statement on MSDN that people are
referencing:

http://msdn.microsoft.com/en-us/library/windows/hardware/jj131716(v=vs.85).aspx
http:

Please remember that the selective suspend device is ENTIRELY up to the
driver. This page is specifically referring to USB HID devices, which
use the stock USB HID driver. That driver happens to recognize the one
magic registry key installed by the INF changes they suggest.

> Lets start with that our device could run in several different modes,
> we want our device to support selective suspend in all modes (it does
> not work correctly currently, and we are making hardware changes)

How do you switch “modes”? Are these separate interfaces? That adds
yet another level of complexity, because each interface has its own
power management behavior. The whole composite device cannot go into
selective suspend unless ALL of the interfaces are in a low-power state.

> 1. USB-Keyboard: Currently this device is never put into selective
> suspend. Does WinUSB play a role in this? Other registry settings we
> should set so we are selectively suspended?

Do you understand what WinUSB is? WinUSB is a generic USB driver for
devices that do not have any other driver. If you have a HID device,
then you use the HID driver. WinUSB is not involved.

> 2. USB-IBM-OEM: Scanner Usage, Currently this is a HID class
> device, and does get selectively suspended, (Again, does WinUSB play
> a role in this as the settings show up under device properties?)

Again, a HID device uses the USB HID driver, not WinUSB.

> 3. USB-COM: Loading the usbser.sys for our device, we are not
> selectively suspended. How would we get our device to be selectively
> suspended?

Usbser has its own set of rules. I believe that as long as there is an
open handle, it will stay in D0. When the last open handle closes, it
should go to D2, which allows selective suspend.

However, for a composite device, none of the interfaces can go to
selective suspend unless they ALL do.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.</http:>