I've made some progress with this issue using application.restart() with a watchdog, so basically my app re-starts after the PC wakes up from sleep mode. This works so long as my program is in a listening state with no active ANT data being received when the computer is put into sleep mode (so the ANT stick is sitting there listening in devicesearch with no other channels allocated). If the user puts the computer into sleep mode when there is active ANT data being received then the ANT stick driver is left in a state from which it can't recover when re-starting my application. It stays "busy". It won't let my program re-set it in this state, presumably because when Windows wakes up it gives my program a different ID so my program no longer "owns" the ANT driver (and that's before I have executed the restart). What it really needs is my app to be aware that the PC is about to sleep and to free-up the ANT driver before the PC goes into sleep mode, so this is really an MSDN question, not a thisisant question. Thanks Rob