Idling Drives to reduce temp


Does any one have any ideas of how to reduce drive temp. I have 4 drives in Raid 5 and for much of the time the system is ideal but still the temps are >= to 50 degrees. I don’t want to have the fan running 100% all the time nor do i want to have the drives running >50 degrees for long periods of time.

As part of the install and config script it would be nice to have pin down / idle setting, this would be a big power save and control temp as well as prolonging the life of the disks.

However i guess first it need to detect the 4 HDD correctly and then a script could be installed using something like hdpram with the config file providing a time out for each of the 4 drives

A way for this would be to be able to set the HDPARM setting for the four drives attached to the hat at each boot

Just the basic setting like Advance power management, spin-down time and acoustic. simple script in to check what drives are attached to the hat, if they support features and if so apply the setting in the config file.

This would be a great way to save a bit of power but also reduce the heat while the drives are not being accessed. which as i guess a lot of people are using this as small media server would be a lot of the time.

Thanks for your advice. I’ll improve it.

1 Like

Hi just to say in the end i set in the hdparm.conf file to below. This drastically reduced the Temps (i have the full metal case for SATA HAT. and with out the power management it was reaching about 60c with all fans on full at idle. with it on i just have the top fan at 25% and its hardly warm to the touch.

If you can find a way to check what is supported, APM, spindown, acoustic (my drive does not support this) and then allow values to be set in the hat config switch it would be great.

I would also suggest having a global disable switch HDD power management some people might be using their own methods or services to manage it.

EDIT (If its part of the boot up script i suppose there is no need to edit the hdpram.conf file and just check what drives are attached to the ATAT HAT and run the commands. In this way of the HDD are swapped out or change there is no config file to clean up.

I used the direct mapping “/dev/sdb” but it would be better to use the serial numbers, and as i say cheek at each boot that its only the drives attached to the HAT it applies to.

/dev/sd[bcde] {
apm = 127
keep_features_over_reset = on
spindown_time = 242


Wow, thank you for your help. That should help a lot.

Unfortunately, hdparm didn’t work out for me. I had to use hd-idle instead. Sharing my notes below.

My /etc/hdparm.conf had a series of directives like so, one per sda, sdb, sdc, and sdd:

/dev/sda {
    apm = 2
    spindown_time = 6

This is the second-lowest possible APM setting. In theory, this should put the drives to sleep after 30 seconds. I confirmed that the settings were applied correctly on startup, and I even tried to run the equivalent commands manually. The result was consistently the same: nothing happened after 30 seconds, and then, the drives went to sleep after 5 minutes of inactivity. I really didn’t like that I couldn’t track down why that was happening. It felt like the spindown_time was having no effect, and that I was actually relying on some manufacturer settings associated with apm = 2. Also, I’ve seen drives report themselves as standby while still spinning. Forcing them to sleep with hdparm -Y worked, but then, they dropped off the /dev list. Overall, I just didn’t trust hdparm to work as intended.

So I switched to hd-idle instead:

I’ve been provisioning my mini-NAS with Ansible. Here are the relevant tasks for reference:

This example reliably puts the drives to sleep after 60 seconds of inactivity, regardless of APM setting. For actual use, I’ll increase that timeout to 5 or 10 minutes. Hope this helps someone!

Edit: I measured average idle temperature over the course of a few hours:

  • Before: 48.16 °C (3.1 hours)
  • After: 45.65 °C (2.1 hours)

I also took noise measurements with my phone. My top fan sucks air into the enclosure. I measured about 1" above the top intake and 1" from the bottom side vent:

  • Before: 43 dBA top, 48 dBA side
  • After: 42 dBA top, 44 dBA side

So a nice, minor improvement.

instead of using hdparm, just use hardware level spin down timer instead…

using similar instructions from how u update the JMS561 firmware, use the command below to set hardware spindown timer (in min)…

sudo ./JMS561FwUpdate -d /dev/sda -t 60