OSR FX2 Remote wake up feature

Hi All,
I have been using the OSR FX2 board for the past month to understand the basics of USB controls/transfers/power management etc.
The board has a remote wake-up feature which does not come up with documentation to understand it better.
Also, I have a few questions about power management.

Here are the questions I have now:

• How do I push the board to D2/D3 state? How do I check if the board entered that state or not?
• How do I exercise the remote wake-up functionality of the board?
o Here is what I am trying to arrive at.
o I have connected the board to my laptop and let the laptop go to sleep.
o Once I press the remote wake-up button on the board, the laptop should be back from sleep.
o Please correct me if I am wrong in understanding the remote wakeup functionality.
• I was unable to set a power policy using WinUSB_SetPowerPolicy. As per https://www.osr.com/nt-insider/2009-issue2/using-winusb-user-mode-usb-device-communication/, the documentation for the API is indeed wrong. Also, as per the link, a registry key needs to be set to enable the feature. Can you guide me on the registry key and the values to be set?

Any help will be highly appreciated.

Thanks.

The D states (like D2 and D3) are software states. It is the DRIVER that decides when to put itself into D2 and D3. The USB power model is much simpler. A USB device is either active, powered, or suspended/. Those transitions come from above, not from the device.

https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/comparing-usb-device-states-to-wdm-device-states

1 Like

Your post mentions WinUSB… Are you using WinUSB, or are you trying to write a (WDF) driver?

Peter

@“Peter_Viscarola_(OSR)”- I am trying to use WinUSB.

@Tim_Roberts : I am trying to set power policy on the board using WinUSB API. But WinUSB_SetPowerPolicy is not usable. Looks like the documentation is incorrect for the API. That’s when I started wondering how to set the device to D2/D3 states.

The API is not usable for wait/wake, but the other stuff works. You can set the timeouts for putting the device into suspend. That’s all you can do. WinUSB will suspend the hardware and put itself into D3 when the timeout happens. It doesn’t do D1 or D2.

Thanks, @Tim_Roberts. If I get it right, if I have to use D3, remote wake-up, etc., I need to use a custom driver as opposed to WinUSB. Am I correct?

I could provide the timeout and see the board going to D2 state. So far so good. Is there a WinUSB API that does this instead of creating a driver?

I was able to make the power management tab appear under “device manager” as well.
I have set up my power management tab as
“Allow the computer to turn off this device to save power”
“Allo this device to wake the computer”
However, I was unable to see the remote wake-up functionality yet.
Any input here?

Thanks,
Chandra

The board supports remote wake (that’s what the little white button does)… and WinUSB supposedly does as well.

So, I’m not sure what you’re asking??

Peter

What is the functionality of remote wakeup?
How to check the functionality?

“Remote wake” is just the ability of the device to wake itself, or the system… as opposed to relying on some action from the host. So, you press the button on the FX2 board and the board either wakes itself from selective suspend, or wakes the system (if it was sleeping, and the driver supports this).

Thanks @“Peter_Viscarola_(OSR)”.
I am not seeing the remote wake feature working on the FX2 boad.

Here is how I am testing the feature:
-Connect the board to the host via USB.
-Make sure the device appears in the device manager.
-Now, push the host to sleep.
Press Windows icon
Press on Sleep

  • Wait for a couple of minutes.
  • Now press on the remote wakeup button on the board.
  • Expectation is the display of the host coming back. But not seeing that.

I have set up the registry key as shown in https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/automatic-installation-of-winusb.

I must be missing something here. Appreciate your help.

Thanks,
Chandra

Yeah… I don’t know, never having done this with WinUSB.

I did see that somebody posted a similar issue back in July.