NDIS 6.3 - InstantGo Developer Notes

Network Device Interface Specification (NDIS) 6.3, included with Windows 8 and newer Microsoft Operating Systems implement new power management capabilities especially for devices such as tablets and 2 in 1 systems..

The following engineering notes (Stuart Lynne) addresses a particular feature known 
variously as:
  • InstantGo
  • AOAC (Always On / Always Connected)
  • Connected Standby
InstantGo capable devices (aka Windows on Tablets) are designed to minimize power consumption and extend battery life. If Windows determines that a connected device is not being actively used it will attempt to suspend it.

Once suspended if there is network traffic that needs the network link then the USB connection needs to be resumed. This can be done by the host OS and (to be confirmed) by the device using Remote Wakeup.

To properly interact with InstantGo a new device should support Remote Wakeup with the following properties:
  • set the Remote Wakeup bit in the bmAttributes field in the configuration descriptor
  • if suspended and network frames are available to send to the host the device should first use the Remote Wakeup indication to get the host to resume the bus

For legacy devices and to transition support there will be three levels of support. The first two being available in USBLAN for Windows v2.4.8.
  1. Legacy Device - no Remote Wakeup
  2. Legacy Device - Remote Wakeup set but cannot resume for traffic
  3. Remote Wakeup compliant Device - can use Remote Wakeup when traffic available

Legacy Device - no Remote Wakeup

Devices that do not implement remote wakeup (not set in bmAttributes) will work correctly while the tablet is active. If the tablet goes into low power mode the device should not be suspended and may require to be replugged to regain network connectivity.

Network connectivity will remain. Power consumption will be higher because the USB Device and Bus remain powered.

What I am currently seeing is that Windows treats the device correctly while it is active. I.e. the screen is on and the system is available for use.

Once the system goes into InstantOn mode (screen blank, low power mode) the system starts using the SET_POWER OID to change to D3 power state (suspend) and then immediately to D0 (resume). This is repeated every five seconds.


Legacy Device - Remote Wakeup set but cannot resume for traffic

Devices that can set Remote Wakeup in bmAttributes can use a setting to prevent being suspended. N.B. this means that even when the tablet is in low power mode the USB bus will be active and consuming power.

Network connectivity will remain. Power consumption will be higher because the USB Device and Bus remain powered.

What I am seeing is that the IdleNotificationHandler is being called during normal operation (screen on etc) with ForceIdle set to false when there is no traffic. That is being returned with a BUSY status and works well.

Once the system goes into InstantOn mode (screen blank) the IdleNotificationHandler is being called with ForceIdle set to true. The driver is not supposed to return BUSY status to that but doing so appears to work (no apparent bad effects.)


Remote Wakeup compliant Device - can use Remote Wakeup when traffic available

This will be available in USBLAN for Windows v2.4.9.
In this mode devices can (and will be) suspended for if the connection is idle (> 10 seconds?). The host should resume the bus if the host has traffic for the device. The device can use the Remote Wakeup facility to request that the host resume the bus when it has network traffic.

Network connectivity will remain (possibly with some latency to resume the USB Bus connection for the device). Power consumption will be lower because the USB Device has been suspended.

Contact us for more information


Favourites