This year we started seeing a problem with the hard drives failing inside our 2009, 2010 and 2011 iMacs here at the newspaper. The computers still work fine otherwise and since it is pretty easy to replace them (it can easily be accomplished in under ten minutes without removing the display) that is what we’ve been doing.
The only downside is that the OEM hard drives ship with specific Apple firmware that ties into the thermal management system. Installing a new hard drive or SSD results in the fans running at full blast. Thankfully software exists to work around this and I automated the installation and configuration with Munki, read on to see how.
There are a variety of applications out there that allow the fan speed inside a Mac to be controlled. After evaluating several I settled on SSD Fan Control by Exirion. It hasn’t been updated since 2013 but still works great under macOS Sierra and has the bonus of being completely free.
Installing the application on targeted computers is easy with Munki using a group manifest that can be set as an included manifest for the computers that need it. (Read this excellent article by Alan Siu for details on this method of manifest management.)
SSD Fan Control can read the temperature reported by the hard drive and use it to control the fans, adjusting them as needed. This allows the use of a replacement hard drive or SSD without the fans going crazy. However by default the program runs in “Auto” mode for the hard drive which isn’t what we need. While it is easy enough to manually change the mode of operation from “Auto” to “SMART” in the GUI, this won’t scale well or allow the easy re-imaging of these computers in the future.
Since this manual configuration change survives a reboot the application is obviously writing the setting to disk somewhere, but I couldn’t find the preference in any of the usual locations. The handy FSMonitor by Matthias Keiser allowed me to easily pinpoint that SSD Fan Control is storing it’s configuration at: /Library/StartupItems/SSDFanControl/config
The next wrinkle is that this config file is not a standard plist that can be easily changed with a defaults write or managed with a configuration profile. Instead it is storing settings in some format I’m not familiar with. In a text editor it displays as “¿¿¿¿‹¿¿¿‹¿-¿F¿-¿F¿” and in a hex editor as “02010000 DC050200 DC052D00 46002D00 4600”.
Thankfully some quick testing showed that a config file with the desired settings can be copied to a different computer and they will be honored without even having to open the application. With that established I created a package to deploy the config file in the right location with the right privileges and imported it into Munki as an update_for SSD Fan Control. An installs array with an md5checksum will make sure the proper configuration gets reinstalled if a user were to ever change settings in the application GUI.
Hopefully we won’t have too many more hard drives that need to be replaced before these older iMacs get retired and replaced with new models featuring SSDs, but if we do getting the fans under control will be simple.