Comment 6 for bug 1019468

Revision history for this message
Naƫl (nathanael-naeri) wrote :

Daniel:
> Any mac, that had the hard drive replaced with standard SATA drive,
> will experience this problem.

Only iMac models released after 10/2009 and discontinued in 10/2012 (21.5"/27" aluminium unibody models with an ODD).

Daniel's request, assuming it's still pending after all these years, was for macfanctld to be able to use the S.M.A.R.T.-reported drive temperature to drive the fans.

That only concerns the users of the iMac models mentioned above who have replaced their computer's original hard-disk drive. This series of iMacs is the last one to have three fans, for the CPU, HDD, and ODD. The HDD fan is used by Mac OS X for cooling the HDD, whose temperature is reported to the SMC by an HDD temperature sensor.

Prior to 10/2009 (iMac 17"/20"/24" 01/2006-10/2009), this sensor was affixed to the outside of the drive and could be moved to the new drive. After 10/2009 and until 10/2012 (iMac 21.5"/27" 10/2009-10/2012), it is located inside the drive and a cable must be connected to certain jumper pins for the SMC to read its value. The pins to connect to are manufacturer-dependent and not publicly documented, which makes it impossible to replace the original HDD with an HDD from another manufacturer.

If I understand correctly, when the sensor cable is not connected to the right pins, it does not report a valid temperature to the SMC, whose safety features kick in (whatever the OS) and make the HDD fan spin at maximal velocity, or perhaps all the fans, I'm not sure. This behavior is reported on many blogs and forums (for instance in the ubuntuforums thread mentioned by Daniel in comment 2).

Utilities have been developed for Mac OS X which set the HDD fan speed according to the S.M.A.R.T.-reported temperature instead of the SMC-reported one (Daniel mentioned two of them in comment 2). This works around the invalid drive temperature for users who have replaced their 10/2009-10/2012 iMac HDD with one from another manufacturer, or haven't connected the sensor cable to the right pins. Daniel asked for such a feature to be built into macfanctld.

For this to happen macfanctld would first need to be able to control more than two fans and set different fans to different speeds, so that it can drive the HDD fan independently from the CPU fan (as far as I know hard-disk drives typically run at 25-45 C, while processing units run at 55-75 C). This is a useless feature for Apple laptops and post-11/2012 iMacs, which only have CPU/GPU fans, but it could be a nice feature for pre-10/2012 iMacs, where the three fans effectively cool three different pieces of hardware which are distant enough to be at different temperatures.

It is worth noting that there are other possible causes for the HDD/iMac fans to run at full speed after replacing the drive, one of them being damage to the LCD temperature sensor cable when reassembling the iMac. The following links mention various possible causes:

http://www.hddfancontrol.com/imac-hard-drive-replacement-fan-noise-issue
https://discussions.apple.com/thread/3860372
https://discussions.apple.com/thread/3749402
http://blog.macsales.com/19617-diagnosing-2009-2010-imac-fan-speed-issues-after-upgrading-the-main-hard-drive
http://www.cnet.com/news/potentially-fix-imac-fan-blaring-after-hard-drive-upgrade

In my opinion this issue can be considered out of the scope of macfanctld, which is primarily about Apple laptops, not iMacs. It also looks like adding S.M.A.R.T. support would be a large modification relative to the size of this corner case (10/2009-10/2012 iMacs running Linux with a non-original drive). The uncertain nature of the problem's cause does not add any incentive for working on it.

I'm not sure the obvious workaround has been tried: excluding the HDD temperature sensor in macfanctld and letting macfanctld drive all the fans together according to the average, CPU, and GPU temperatures. Since the CPU/GPU temperature is always higher than the HDD temperature, the HDD fan will be driven fast enough to cool the HDD.

If I got things right, this won't work because the safety features of the SMC will still kick in, triggered by the invalid HDD temperature value. It could work if macfanctld disabled these features by using fanX_manual=1 and fanX_output instead of fanX_manual=0 and fanX_min. I suppose the previously mentioned Mac OS X utilities do something similar.