I put together this quick guide on controlling the fan speed on affected Mac models where the HDD fan spins at full speed once the HDD temperature sensor is disconnected.
If anyone call help me identify all the models that are affected by this, I would be appreciative. I know that my 2010 iMac is one of them.
I figure this SSD Tweaking Guide would be the best place to post it for reference.
---------
Controlling the fan speed in Mac models after an SSD upgrade.
Steps:
- Download the app smcFanControl
- Install smcFanControl into your Applications folder
- Open Automator
- Create "New Application"
- Go to Utilities > "Run Shell Script" and delete the word "Cat"
- Copy the following code into the Shell Script:
-
Code:
/applications/smcfancontrol.app/Contents/resources/smc -k F1Mx -w 1770
- Test the Shell Script by clicking on "Run" and your fan should stop running at full speed
- Save the application to your SSD as "maxfanadjustment"
- Open System Preferences, go to Users & Groups, the tab for Login Items
- Click the "+" to add a new application and navigate to the Automator file you just created and add it.
What the above process will do is correct the out-of-control fan after the installation of the SSD and removal of the HDD. Apple uses a HDD temperature sensor which connects to the HDD's jumper block. Since SSD's don't have a jumper block, the computer think's there is a problem with the HDD and runs the fan at max speed.
You can run the Automator application any time the fan is out-of-control and by placing it in the Login Items it will automatically run it when you start the computer. If it's not in Login Items, you will have to manually run it because this isn't a persistent fix.
Now, if you're like me, you rarely shutdown your Mac and instead only put it to sleep. I've found that upon wakeup of the Mac, this Automator script needs to be run again because the computer "forgets" about it.
I found a neat little app in the Mac App Store called
Scenario, which costs $4.99 US. It can set up actions to be performed upon events, such as "Computer wakes from sleep".
Upon installation, it creates a Script folder where you can put Automator scripts for it to run. Copy the script you made earlier and put it in the "Wake scripts" folder.
Now when your computer is awakened it will run this script for you and you won't need to run it manually.
*There is one event that will cause the fan to spin out-of-control that so far requires you to run the script manually. That is "Wake for network access" which is found in System Preferences > Energy Saver.
I have found that when I put the Mac to sleep and then later use the Apple TV to access my iTunes library, which uses the Wake for network access protocol, the fan spins up to max. I haven't figured out a way to get the script to run upon this event yet, so what I've done is set my Mac to never sleep, but to put the display to sleep after 15 minutes.
Updated information:
I don't know why I didn't think of this at the time, but I believe I found a better way to keep the fan under control.
I took a bad hard drive and removed it's controller board which has the jumper pins on it and put that inside the iMac. I connected the HDD sensor wire to the jumper pins, just as it was when the original HDD was inside the machine and operating. Only this time, it's just the controller board with no power. I used a small piece of 2-sided 3M tape to keep it from moving around and stuck the controller board to the SSD.
I have removed
smcFanControl from my start up items along with the app
Scenario and my
AppleScript that I used to control the fan speed during various system events.
I've restarted the machine a couple of times, put it to sleep and woken it up (which is the part where I couldn't control the fan with software), put it back to sleep and accessed the iTunes library to play a video on the Apple TV and so far everything is working and under control.
I figured that Apple was only measuring the temperature of the HDD via the jumper pins themselves and not actually reading any temperature data being sent by the HDD or its controller.
Basically, I just added a dummy load to the sensor and as far as it knows, there is a functioning HDD attached to it.
I'm running through all my start/restart/sleep/network access tests a second time now, but I think I got it.