Dear All,
Same problem here (changed failed drive from Seagate to another Seagate) and noise. I thing I managed to make quick'n'dirty fix using these two apps and a script (see below). BTW, looks like a guy in UK sells that solution for £20 piece at http://www.hddfancontrol.com/.
Well, you need two apps (free):
If you like to follow, you need:
- Install both apps in Applications/Utilities
- Put somewhere (e.g. in ~/bin) the script from http://science24.com/pielasze/mac/hdd_temp2fan
- Put somewhere (e.g. in ~/bin) crontab file from http://science24.com/pielasze/mac/crontab
- Open Terminac, "cd ~/bin" and issue command "crontab crontab", which sets the script to run every minute
- Check whether the crontab is set OK ("crontab -l")
The script reads HDD temperature every minute and adjusts HDD fan accordingly. After few minutes fan speed should converge to a reasonable RPMs. Also, if needed, the cooling will be increased automatically.
Crontab (point 4) must be set just once, it will keep running the script permanently, also after reboot.
Caveats:
- RPM scaling is arbitrary. I set linear dependence through from 1000RPM at 40C and 4000RPM at 60C. This may be wrong (works for me, however). Set it youtself in the script. You may make your disk quieter or cooler, at you option. No warranty of any kind
- If you clear your crontab somehow (e.g. "crontab -r") the toy will stop to control fan without warning
Hope this helps. Below the script:
#!/bin/bash
#
# Get current HDD temperature. You need TemperatureMonitor by Marcel Bresink (thanks!)
# from http://www.bresink.de/osx/TemperatureMonitor.html
# Needs to be installed in Applications/Utilities
#
HDD_TEMP=`/Applications/Utilities/TemperatureMonitor.app/Contents/MacOS/tempmoni tor -c -l -a | grep "SMART Disk" | sed "s/.*: *//" | sed "s/ C$//"`
#
# Assume 40C is normal temperature. Anything over that is overheat
#
OVERHEAT=$(($HDD_TEMP - 40))
if [ "$OVERHEAT" -le 0 ]; then OVERHEAT=0; fi
#
# Scale the overheat to fan's RPM. Run 1000RPM at 40C, scale to 4000PRM at 70C
# Disclaimer: set yourself whatever you think is safe and/or reasonable. No claims, please.
#
RPM=$((1000 + $OVERHEAT * 100))
RPM4HEX=`printf "%04x" $(($RPM * 4))`
#echo "TEMP=$HDD_TEMP OVERHEAT=$OVERHEAT RPM=$RPM RPM4HEX=$RPM4HEX"
#
# Set target PRM using smcFanControl by Hendrik Holtmann (thanks!)
# e.g. from http://www.macupdate.com/app/mac/23049/smcfancontrol
# Needs to be installed in Applications/Utilities
#
/Applications/Utilities/smcFanControl.app/Contents/Resources/smc -k F1Mx -w $RPM4HEX
And the crontab file:
SHELL=/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin
#min hour mday month wday command
* * * * * ~/bin/hdd_temp2fan