NOTE: This guide apparently only works up to Catalina and does not work on Big Sur.
I finally replaced my hard drive in my 2015 iMac 5k with a Samsung 860 SSD. Not an easy decision since you need to cut the Mac open. However, apart from the HD being way to slow, it is also very noisy: there is a hiss type of sound and rumble from the rotational mass. Unbearable in a quiet environment.
After installing the SSD, the speed and noise improvement are tremendous. But then, you hear the fan “idling” at 1200rpm resulting in quite a strong airflow and distracting noise no matter what your system load is. It seems that on my low spec iMac, the regular (Apple auto-controlled) rpms never get regulated above those 1200rpm, even when running Unreal 3D benchmarks. So the default 1200rpm can be seen as a static value: it doesn’t go above or below that no matter what you do to the system. I downloaded Macs Fan Control, but you can’t reduce rpm below the minimum 1200 (but you can go up to 2700). Luckily I found a way around that and reduced the minimum to 1000rpm, which is considerable less noisy! It makes all the difference to me.
What you need is a utility that is included in the smcFanControl tool. Its called smc and is also available separately on GitHub. From here on you must read the following first:
Warning
-------
This tool will allow you to write values to the SMC
which could irreversibly damage your computer.
Manipulating the fans could cause overheating and permanent damage.
USE THIS PROGRAM AT YOUR OWN RISK!
You can and will destroy stuff and I won’t take any responsibility, but here is what worked for me (assuming that you copied smcFanControl to Applications directory):
In the Terminal app type:
/Applications/smcFanControl.app/Contents/Resources/smc -k F0Mn -w 0fa0
This writes the for 1000 (0fa0) to the smc key F0Mn (minimum speed of fan 0). If you need further explanation, the GitHub repo provides a detailed readme.
After that, use Macs Fan Control to reduce the speed manually to 1000rpm. Reading out the smc info now looks like this:
/Applications/smcFanControl.app/Contents/Resources/smc -f
Total fans in system: 1
Fan #0:
Fan ID : Main
Actual speed : 999
Minimum speed: 1000
Maximum speed: 2700
Safe speed : 0
Target speed : 1000
Mode : forced
This results in almost complete silence in my environment. Yet, there is still considerable airflow and everything looks and feels great. What a relief!
Update 1:
Lowering the minimum speed below 1000rpm does not yield the desired results. It seems that the fan and its control logic can’t go well below that. By setting the minimum speed to 800rpm, the lowest ever achieved rpm that I got is around 960rpm.
Update 2:
After rebooting, the minimum fan speed got reset (by the system supposedly) to the original 1200rpm. However, after starting Macs Fan Control, it writes my desired target speed to smc so that still works! Great! Here is how that looks like:
/Applications/smcFanControl.app/Contents/Resources/smc -f
Total fans in system: 1
Fan #0:
Fan ID : Main
Actual speed : 959
Minimum speed: 1200
Maximum speed: 2700
Safe speed : 0
Target speed : 800
Mode : forced