📌 7 de Abril, 2024

WD Red Power Management with hdparm

Informática · Linux

📌 7 de Abril, 2024

WD Red Power Management with hdparm

Informática · Linux

Did you get a WD Red drive and you can’t get it to standby or spin down? You aren’t alone and your drive isn’t broken nor it ignores hdparm as some people may think. I’ll show you how to properly set APM (Advanced Power Management) on Western Digital disks and share a few extra tips.

WD Red Plus drives go to standby (spindown) after 30 minutes of inactivity, without success. I read about WD not respecting hdparm commands. I even read about WD support saying they don’t support Linux.

@slaecker to homelab@lemmy.ml

This may appear to be the case, but it isn’t. Western Digital’s “Red” disks are one the best when it comes to power management, however you must be very carefully with the parameters you’re setting as they tend to require more than just setting the apm value.

The hdparm interface somehow varies a bit from the command line to the hdparm.conf file but luckily the Arch Wiki has a good page about it. Now the two important bits to be aware with WD disks are:

  • -B / apm → Values from 1 to 127 permit spin-down, whereas values from 128 to 254 do not. A value of 255 completely disables the feature;
  • -S / spindown_time → The value of 0 disables spindown, the values from 1 to 240 specify multiples of 5 seconds and values from 241 to 251 specify multiples of 30 minutes.

I’ve noticed that many WD Red drives come with apm=127 and spindown_time=0 or some variation that makes it so the drive never spins down. Most people also tend to focus only on the apm value and forget about spindown_time altogether or vice versa and then their drives never spin down predictably.

Here’s an example from one of my drives from hdparm.conf:

/dev/disk/by-uuid/xxxxxx {
    apm = 127
    spindown_time = 24
}

Same thing on the CLI:

hdparm -B 127 /dev/disk/by-uuid/xxxxxx
hdparm -S 24 /dev/disk/by-uuid/xxxxxx

The apm (-B) value can be queried with hdparm -B /dev/disk/by-uuid/xxxx, however the current value of spindown_time (-S) cannot be queried.

Tip: to apply changes made to hdparm.conf you can run udevadm trigger /dev/disk/by-uuid/xxxxxx or /usr/lib/pm-utils/power.d/95hdparm-apm resume.

Give a try to my example and you’ll see the drive spinning down in a few minutes.