I've been reading around this subject for a while as a pet peeve of mine is noisy computers.
My normal workstations are entirely passively cooled and silence is bliss, but I do still use my cMPs when I need machines with a bit more power or more cores for testing virtual environments and the noise of my 5,1s has always annoyed me.
I don't mind them making a little noise when they're really working, but in low utilisation and idle states I still get annoyed by them even with all fans on minimum.
So I started reading all the various threads on replacing stock fans with quieter ones (Noctua or Gelid being my preference) and there's seemingly a few people that have done this, although the Apple-specific PWM implementation* always seems to be the gotcha. I'm posting this as a bit of a compendium of info from other threads and my own testing for those that might be interested.
* Apple Mac Pros don't use PC style PWM to control their fans, instead of a square wave switched input on pin 4 at different duty cycles (PC style) they use an analogue variable voltage.
First a history lesson on fan pinouts
Old school fans, also known as 2-pin fans
1 - GND
2 - VCC** (normally 12V)
These fans run at constant RPM based on the input voltage (12V) and provide no tacho reading so the system cannot tell what the RPM is. A lot of old PCs and old PowerMacs used these fans, cooling is basically configured for 'worst case scenario' with all fans running all the time, when the system is idle then it's cool and noisy, when it's loaded its hot and noisy (and hopefully doesn't ever reach 'overheat'.
** note on VCC...
Input voltages other than 12V can be used and the fan will run slower or faster accordingly. If the voltage is too lo the fan may stop, if too high it may burn out.
PC fans with tacho, also known as 3-pin fans
1 - GND
2 - VCC (normally 12V)
3 - Sense/Tacho
These fans run at constant RPM based on the input voltage (12V), they also provide a sense/tacho reading on an additional pin which the system can read to report on fan speed, fan failure and with some systems they will be able to vary voltage on the VCC pin on the motherboard to vary fan speed. This is not PWM, but does allow motherboards to vary fan speed in response to thermal conditions, and the tacho allows them to receive feedback on the fan status.
PC PWM fans, also known as 4-pin fans
1 - GND
2 - VCC (normally 12V)
3 - Sense/Tacho
4 - PWM control signal
These fans run at variable RPM based a PWM signal on pin 4, like 3-pin fans they provide a sense/tacho reading on pin3 which the system can read to report on fan speed and fan failure it also acts as feedback to adjust the PWN signal. With these fans VCC is constant and the RPM of the fan is controlled by an internal motor driver circuit which responds to the PWM signal, a switched 25kHz square wave where the duty cycle of the wave dictates fan speed.
A point here which will be relevant later, is that just like 2 and 3 pin fans, the fan draws the bulk of it's current to run the motor from VCC on pin 2.
Apple Mac Pro fans, also known as "Damn you Apple and your proprietary nonsense!" fans
1 - GND
2 - VCC (12V)
3 - Sense/Tacho
4 - Apple RPM control,
These fans run at variable RPM based on the control signal on pin 4, like 3-pin fans they provide a sense/tacho reading on pin3 which the system can read to report on fan speed and fan failure it also acts as feedback to adjust the control signal. Unlike PWM fans the control signal which is used to drive the motor is an analogue voltage variable from 0V to ?V (I need to get a new multimeter to confirm the max but I suspect it might be 12V based on reports from others). the 12V on VCC is constant and used to drive the fan control circuitry and the motor at min speed.
Back to that point above, I need to test this myself (when the new multimeter turns up) but it appears from reading other sources that the fan draws the bulk of it's current to run the motor from Control on pin 4, more on this later!
So you can see the issue plainly, if you plug in a PC PWM fan to a Mac Pro header the PWM signal will not work, and the fan will run at full speed due to 12V on VCC pin. It will however report RPM back to the SMC so at least you can see the fan speed in your software of choice.
Most people I've read about seem to adopt one of four approaches:
1. Use PC fans plugged into the Mac Pro headers and let them run at full speed
2. Use PC fans plugged into the Mac Pro headers and use inline fixed resistors to run < full speed
3. Use PC fans plugged into the Mac Pro headers and use inline variable resistors to run at manual controlled speed
4. Use PC fans and conversion/adaptor boards to convert Apple control signal to PC PWM signal
Options 1 & 2 are simple and if you choose your fans or resistors carefully can result in lower noise, but there's no variable RPM so no way to adapt to changing thermals so you have to plan for either never running the machine at full load for extended periods, or making sure your cooling is sufficient for 'worst case scenario' and just put up with whatever the noise level is.
Option 3 is a little better as you have manual control over the fans, level of annoyance will be dictated by where the controls are physically located and how often you need to tune RPM to workload. Which fine if you're sat next to the box all day ;-)
Option 4 is a great option as you can use unmodified fans and have full automatic control of the fans. It is however very hard to achieve, many have looked into this but I've not (yet) seen a single case of someone confirming they've got it working 100%, and certainly no easy off-the-shelf solution I've seen. It also leaves you with the problem of where to stash the converter board(s).
Now, I'll refer you back to the pinouts above, there is a 5th option, and it's a workable solution if you choose your fan models with care.
Option 5!
Use 3-pin PC fans, plugged into the Mac Pro headers but with a few pins swapped.
If you take a normal 3-pin PC fan, pop the pins out of the connector and replace them into the 4 pin connector from a Mac Pro fan but arrange the wires from the fan like this:
Mac Pro output | Pin | Fan input |
GND | 1 | GND |
VCC (12V) | 2 | * empty * |
Sense/Tacho | 3 | Sense/Tacho |
Control voltage | 4 | VCC |
What you end up with is a 3-pin PC fan, being driven off the analogue variable voltage from the Mac Pro Control pin 4.
This is the exact same type of control you get on motherboards that can vary the speed of 3-pin fans, and is the same as using step down resistors (fixed or adjustable) but it has the added benefit of still letting the SMC do automatic control.
So this DOES give automatic fan control that the SMC can manage, and as long as a few conditions are met works 100%. If those conditions are not met then you can still get ~80-90% of the way there and fan control software can get you the other 10%, see below for details.
So there must be a gotcha with this too right? Well yes... but easy to deal with.
Issue 1
The Mac Pro control voltage can be very low, even 0V, below a certain voltage (about 3V IMEbut some are lower) most fans can't operate so this will cause the fan to stop, the SMC obviously doesn't like this so will pulse the control voltage to get the fan to restart so you'll just hear your fans momentarily stop and restart all the time at idle.
You can deal with this with a hardware mod or in software. In software just set the minimum speed of the fans to a high enough level that the voltage on pin 4 is sufficient to drive the fan. You can either do this by trial and error watching the RPM pulsing, or get your multimeter out and work it out, but that's it. Set minimum speed in Macs Fan control, or iStat or whatever you use and it will still vary UP from there as necessary. If you choose your model of fan wisely (medium/high RPM at 12V) you can get a minimum speed close or equal to the minimum of the original Apple fans and with your adjusted fan curves it'll be cool and quieter.
To fix this in hardware you need to make sure that there is a minimum voltage applied to the VCC pin on the fan regardless of output on Control pin 4 of the board. You can do this by taking VCC pin2 from the board and connecting it to the fan *in addition to the Control pin 4*. You will need to use an inline resistor to drop the 12V VCC input to whatever the minimum Voltage your fan needs to run. You should probably also use a diode in line *before the connection from VCC pin on the board* to prevent any input back to the board. If you do this then the fan will always have an applied voltage so cannot stop, the SMC will be happy and Control voltage will be at a minimum until thermal conditions dictate it need to be increased, this will then increase the Voltage to the fan and it will run faster just as it should.
EDIT - No longer worth worrying about as long as you use decent fans. I tested about a dozen today off the Mac Pro board header running with pin swap described above. It seems the SMC has target RPMs set for minimum value, rather than target voltages. Which means if you plug any fan in when it will try to run it at the default RPM (examples: 500RPM on the exhaust, 600RPM on the intake) and will just increase the voltage until it sees the RPM it wants.
What this means is that as long as you choose fans that can run at the minimum RPMs without stalling then you won't get the pulsing. What this also means is that once it starts ramping up once the voltage gets to 12V and stops increasin the SMC can have no further effect. So it pays to use fans that will run at high RPM @12V, yet will still run at the minimum RPM the SMC targets.
See further update post down the page for more info and examples.
ADDITIONAL EDIT - Resistors and diodes now confirmed as a workable solution by
@KeesMacPro and myself today, see page 4!!
Issue 2, possibly?
Until I get my new multimeter I can't confirm what the max voltage seen on Control pin 4 is, there is a very small chance it's high enough to damage some fans, however all the fans I've tested have run fine at max RPM with no issue so I suspect it is indeed 12V as I've read elsewhere.
EDIT - Not an issue! I tested every PC fan I could lay my hands on in the house (about 20) and fed them various voltages, confirmed max RPM at 12V (as expected) and RPM did NOT increase beyond that even when fed with 20V so can be 99.99% sure that the fans have over-voltage protection built in and limit 12V to the motor. Sure you might be able to fry it by feeding >20V but that's not gonna happen.
ADDITIONAL EDIT - Max output on VControl pin is 12.3V, so NO risk of damaging fans.
Issue 3, maybe?
Until I get my new multimeter I can't confirm whether the standard Mac Pro fans draw most of their current off VCC pin 2 or Control pin 4. If it's from pin 4 then this is not an issue at all. If it's pin 2 then there is a very small chance that at high RPM pin 4 may not be able to provide sufficient current. I do not think this is the case is in my own testing (with several different fans) I was able to successfully run them up to max RPM without issue so I suspect what I've read is true.
EDIT - Not concerned about this any more but will still check when multimeter arrives, see post furhter down, but after running several fans off the Mac Pro headers via the V Control pin no issues seen.
So in summary, with a simple pin swap you can use PC 3-pin fans and get automatic fan control, you may need to set a minimum speed in software to keep them ticking over at idle, but with care fan choice this isn’t necessary. This requires NO soldering, NO converter boards and is totally reversible.
I'll be back to update and amend the outstanding questions once I've got my hand on a multimeter again!