See if HDD is in Sleep Mode for Windows

The smartctl command-line utility of smartmontools offers exactly this functionality with the -n switch. From the man page:

-n POWERMODE, --nocheck=POWERMODE
[ATA only] Specifies if smartctl should exit before performing any checks when the device is in a low-power mode. It may be used to prevent a disk from being spun-up by smartctl.

It works from a non-elevated terminal even as the only option argument, which makes its use pretty straightforward for internal drives:

> smartctl.exe -n standby d:
smartctl 6.5 2016-05-07 r4318 [x86_64-w64-mingw32-win10] (sf-6.5-1)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

d:: Device is in STANDBY (OS) mode, exit(2)

whereas a spinning drive reports Device is in ACTIVE or IDLE mode

External drives and/or exotic controllers might be more tricky and require you to read up on the -d switch.


You could run DiskMon which would show all activity on each drive in your system. No entries would suggest that the disk is in sleep mode.

Limited testing here confirms that this would appear to be the case anyway. When trying to access a drive that isn't being listed in the current transactions, there is a delay before the drive shows up in the DiskMon window indicating that it has been spun down.

It's a bit crude I admit!


It's an inelegant solution, but try installing the windows version of hdparm. Then run hdparm.exe -C [drivename] from the directory it installed to (usually Program Files (x86) or the like). Using this method, I was able to tell whether my drives were active/idle, or in standby (sleeping and not spinning).

The drive name is a UNIX style device address which is mapped somehow to a Windows drive letter/physical device (/dev/hda is usually your primary drive, and then /dev/hdb and so on), but I'm not sure how to determine what UNIX device aliases are available under windows. You can make sure that a given /dev/hd_ alias corresponds to the correct drive by running hdparm.exe -i [drivename] on the alias, and checking the output to see if the drive parameters match up with what you expect.

It would be nice if there was a graphical and/or native-windows utility to get at this functionality, but I don't know of one.

It's still UNIX-ish, but you could also try playing around with the Windows version of smartmontools, and see if it offers similar functionality in a more usable package. I don't have any experience with that software, though.