Skip to main content
julia's space

Setting standby timeouts on USB external HDDs

If you research how to spin down hard disks, most results tell you something along the lines of:

# hdparm -S 120 /path/to/disk

This works fine for most (all?) SATA drives. hdparm(8)'s description of the -S flag is as follows:

-S

Put the drive into idle (low-power) mode, and also set the standby (spindown) time‐ out for the drive. This timeout value is used by the drive to determine how long to wait (with no disk activity) before turning off the spindle motor to save power. Under such circumstances, the drive may take as long as 30 seconds to respond to a subsequent disk access, though most drives are much quicker. The encoding of the timeout value is somewhat peculiar. A value of zero means "timeouts are disabled": the device will not automatically enter standby mode. Values from 1 to 240 specify multiples of 5 seconds, yielding timeouts from 5 seconds to 20 minutes. Values from 241 to 251 specify from 1 to 11 units of 30 minutes, yielding timeouts from 30 minutes to 5.5 hours. A value of 252 signifies a timeout of 21 minutes. A value of 253 sets a vendor-defined timeout period between 8 and 12 hours, and the value 254 is reserved. 255 is interpreted as 21 minutes plus 15 seconds. Note that some older drives may have very different interpretations of these values.

However, this does not work for USB hard drives. This is usually because USB drives uses UAS, or USB-attached SCSI. The appropriate tool to use for SCSI drives is sdparm.

As far as I have found, references online mention the --set SCT=<time> flag in order to set the standby timeout. (<time> here is in units of 100ms). But, for me, this errors.

The correct flag is --set SZCT=<time>. Why? It was changed...

sdparm 1.10 available, SCSI development list, 2020

Thus, the command to use is:

$ sdparm --set --save STANDBY_Z=1,SZCT=<time> /dev/path/to/disk

(--save saves the settings through power cycles, STANDBY_Z=1 enables the STANDBY_Z timer (if it wasn't already))

For documentation on what SZCT means, see §5.3.20 Power Condition mode page, SCSI Commands Reference Manual (Rev. J).