When our USB device is awakened from suspend i.e. after D2 -> D0 transition, IOCTL_INTERNAL_USB_RESET_PORT result has USBD_PORT_CONNECTED set but USBD_PORT_ENABLED isn’t set as it should be. Surprisingly, there is no real problem with USB communication so it seems port is still enabled and something just forgot to set this flag.
The problem is 100% reproducible on several different machines and Vista builds (all post-RC1) here but only if there was OS suspend and resume (S0 -> Sx -> S0) before. After fresh reboot USBD_PORT_ENABLED is correctly set. After the first OS suspend the flag is never set after D2 -> D0. Port reset fixes it until the next device suspend.
We use this flag for ESD recovery and when not set, reset the port. Unfortunately, it takes about 1 - 2 sec which we can’t afford after every resume from D2 (which we use regularly). I guess it is unnecessary to say XP and w2k3 doesn’t show this problem at the same hardware…
Has anybody encountered this problem? I seems as some silly bug, one of many in the Vista USB stack :-/ Does it matter to use feedback tool to report such a problem? I have no reply and no status change for any of my reports from the last two months.
Best regards,
Michal Vodicka
UPEK, Inc.
[xxxxx@upek.com, http://www.upek.com]
To clarify myself:
- I meant IOCTL_INTERNAL_USB_GET_PORT_STATUS to get port status flags
- the problem can’t be reproduced until OS is suspended i.e. above IOCTL always returns USBD_PORT_ENABLED between boot and the first OS suspend. Device suspends don’t change it.
Best regards,
Michal Vodicka
UPEK, Inc.
[xxxxx@upek.com, http://www.upek.com]
From: xxxxx@lists.osr.com[SMTP:xxxxx@lists.osr.com] on behalf of Michal Vodicka[SMTP:xxxxx@upek.com]
Reply To: Windows System Software Devs Interest List
Sent: Thursday, October 26, 2006 10:18 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] USB port false disable at Vista after device resume from suspend
When our USB device is awakened from suspend i.e. after D2 -> D0 transition, IOCTL_INTERNAL_USB_RESET_PORT result has USBD_PORT_CONNECTED set but USBD_PORT_ENABLED isn’t set as it should be. Surprisingly, there is no real problem with USB communication so it seems port is still enabled and something just forgot to set this flag.
The problem is 100% reproducible on several different machines and Vista builds (all post-RC1) here but only if there was OS suspend and resume (S0 -> Sx -> S0) before. After fresh reboot USBD_PORT_ENABLED is correctly set. After the first OS suspend the flag is never set after D2 -> D0. Port reset fixes it until the next device suspend.
We use this flag for ESD recovery and when not set, reset the port. Unfortunately, it takes about 1 - 2 sec which we can’t afford after every resume from D2 (which we use regularly). I guess it is unnecessary to say XP and w2k3 doesn’t show this problem at the same hardware…
Has anybody encountered this problem? I seems as some silly bug, one of many in the Vista USB stack :-/ Does it matter to use feedback tool to report such a problem? I have no reply and no status change for any of my reports from the last two months.
Best regards,
Michal Vodicka
UPEK, Inc.
[xxxxx@upek.com, http://www.upek.com]
Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer