Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Yeah that would be cool!

hey how do you run this program? I downloaded but all i see is he source codes

and no actual app

You have to compile it.

It doesn't work for the 2009 Mac Pro.

The codes for the sensors and the fans are wrong and my digging hasn't found where to put them in, even if I DID know where they were!
 
You have to compile it.

It doesn't work for the 2009 Mac Pro.

The codes for the sensors and the fans are wrong and my digging hasn't found where to put them in, even if I DID know where they were!

I guess i am a bit non techie, cause i dont know how to compile it?
 
ok now I'm confused

whats the best fancontrol to have for a Mac Pro (8core xeon) ?

I have version 2.1.3.1 now

I think FanControl and smcFanControl are different products for different kinds of users. I think FC is better for non-technical non-aggressive users. Kids, Moms, non-owners, etc.

smcFC is better for tweakers. With it you build a set of preference settings. I have 13 in mine. 4 different ones for 3 different room temperatures each plus one called Temporary_Blast which is all fans one notch back from full throttle.

I have the temps, in the menu bar plus I use MenuMeters http://mac.softpedia.com/get/System-Utilities/MenuMeters.shtml changing a fan setting is completely manual. Just glance at the activity across the menu bar, click on the smcFC menubar gadget and select a new "Active Setting".

For me smcFC is superior but other like FC better. When I first looked into it 3 years ago FC had many stability issues as well. I dunno about the newest version.

EDIT: I just noticed I may have completely missed the nature of your question. :D
 
I guess i am a bit non techie, cause i dont know how to compile it?

You need Xcode.

Im working on it now, see what I can come up with, so far i've got for the fan codes:

F0Ac - PCI
F0Tg - PCI
F1Ac - Power Supply
F1Tg - Power Supply
F3Ac - Intake & Exhaust - Linked
F3Tg - Intake & Exhaust - Linked
F4Ac - Processor Fan
F4Tg - Processor Fan

But I can't see where in the source code to change this!

It should be easy! :(
 
You need Xcode.

Im working on it now, see what I can come up with, so far i've got for the fan codes:

F0Ac - PCI
F0Tg - PCI
F1Ac - Power Supply
F1Tg - Power Supply
F3Ac - Intake & Exhaust - Linked
F3Tg - Intake & Exhaust - Linked
F4Ac - Processor Fan
F4Tg - Processor Fan

But I can't see where in the source code to change this!

It should be easy! :(


Good luck, let me know how it goes!!
 
Concorde Rules,

Here are the Keys compiled into the most recent version Fan Control for Mac Pro...

They exist in smc.h


// key values
#define SMC_KEY_HEATSINK0_TEMP "TCAH"
#define SMC_KEY_HEATSINK1_TEMP "TCBH"

#define SMC_KEY_FAN0_RPM_MIN "F0Mn"
#define SMC_KEY_FAN1_RPM_MIN "F1Mn"
#define SMC_KEY_FAN2_RPM_MIN "F2Mn"
#define SMC_KEY_FAN3_RPM_MIN "F3Mn"
// the power supply fan doesnt respond to changes in minimun rpm like the others do.
// Use target rpm instead.
// Also, the PS fan needs to be put into forced mode inorder to respond to these commands.
#define SMC_KEY_FAN3_RPM_TGT "F3Tg"

#define SMC_KEY_FAN0_RPM_CUR "F0Ac"
#define SMC_KEY_FAN1_RPM_CUR "F1Ac"
#define SMC_KEY_FAN2_RPM_CUR "F2Ac"
#define SMC_KEY_FAN3_RPM_CUR "F3Ac"


F#Mn Keys are used to set the minimum fan speed and these are the values that are modified by Fan Control.

F#Tg Keys are used to set the Target fan speed. Only the Power Supply Fan uses this key because it doesnt respond to changes in minimum fan speed.

F#Ac Keys are used to report back the Actual fan speed.


F0x is the CPU Front fan
F1x is the PCIe Front fan
F2x is the CPU Exhaust rear fan
F3x is the Power Supply fan

------------------------------------------------

So... Based on your information the key definitions should be changed to the following...


// key values
#define SMC_KEY_HEATSINK0_TEMP "TCAH"
#define SMC_KEY_HEATSINK1_TEMP "TCBH"

#define SMC_KEY_FAN0_RPM_MIN "F4Mn"
#define SMC_KEY_FAN1_RPM_MIN "F0Mn"
#define SMC_KEY_FAN2_RPM_MIN "F3Mn"
#define SMC_KEY_FAN3_RPM_MIN "F1Mn"
// the power supply fan doesnt respond to changes in minimun rpm like the others do.
// Use target rpm instead.
// Also, the PS fan needs to be put into forced mode inorder to respond to these commands.
#define SMC_KEY_FAN3_RPM_TGT "F1Tg"

#define SMC_KEY_FAN0_RPM_CUR "F4Ac"
#define SMC_KEY_FAN1_RPM_CUR "F0Ac"
#define SMC_KEY_FAN2_RPM_CUR "F3Ac"
#define SMC_KEY_FAN3_RPM_CUR "F1Ac"

-----------------------------------------------------

The F0x and F3x keys may need to be swapped.

Either way i'd be very careful testing this out.
 
Edit: 91831

Ok the code you suggested worked... but didn't work lol

I've nearly cracked the CPU/Intake/Exhaust fans but I can't find ANY temperature codes that work apart from TCAH. Everything else = 0 or -127 :/

Also all my minimum fan speeds are wrong even tho when you start up they are correct IE CPU min is 800 and set at 800 in the file.

WTF from me there!

OK

F0Ac - PCI
F1Ac - Power Supply
F2Ac - Intake
F3Ac - Exhaust
F4Ac - Processor Fan

However adjusting 3 changes what 2 and 4 are doing.

*cries*

I give up :)
 
I think FanControl and smcFanControl are different products for different kinds of users. I think FC is better for non-technical non-aggressive users. Kids, Moms, non-owners, etc.

smcFC is better for tweakers. With it you build a set of preference settings. I have 13 in mine. 4 different ones for 3 different room temperatures each plus one called Temporary_Blast which is all fans one notch back from full throttle.

I completely disagree. Fan Control allows you to set the fans to come on automatically at lower temperatures, or whatever you choose.

There is nothing special about "tweaking" the fan speed and having different fan settings... it isn't really needed. The fans are there to cool your Mac. Only scenario I can think of is if noise was an issue, then you'd let the temperatures creep up so the fans are at a lower RPM, which can be done easily in Fan Control.

SMCFanControl you have to tell the fans to come on at the temperature (all you are doing is setting the minimum fan speed), which is pretty useless if like me, you'll be playing a game or something and then realise your MBP will probably cut out because the fans aren't coming on and you didn't tell SMCFanControl to up the speed.

Fan Control is automatic, you set it once, that's it, no need to worry anymore. It'll cool your Mac without you having to remember. I can't understand why you think SMCFanControl is superior other than the pointless ability to have "13 preferences".

A good example of why SMCFanControl isn't ideal is software like EyeTV - if I set it to record a TV show then automatically export it to my Apple TV afterwards while I'm away somewhere, I'd have to set the fans to whatever speed I desired before I had even left. So for however long the TV show is, the fans would be running unnecessarily, until the actual export (H.264 encode) of the video begins during export to the Apple TV.
 
By your description smcFC operates differently on your system than it does on mine.

The problem with Mac Pro (at least the 2006/2007 models) is that the firmware that is supposed to "automatically" up the fan speed at a certain temperature is busted for all intents and purposes. The fans never increase their speed. Maybe just before the thing bursts into flames (like MBP have been actually known to do) the fans will increase or something I dunno and I'm not about to try and find out either. ;)

So there's FanControl which is like you say "automatic" for brainless, inattentive or for unattended operation, and then there's smcFanControl which sets the fan speed manually. What one sets it to is what it will always be till they set it to something else. It won't go higher, and it won't go lower (on it's own) - ever. One sets the speeds in order to achieve the temp they want. And since Apple honestly doesn't seem to know the optimal temperatures for various components then a tweaker who does is much better off setting it himself.

EDIT: Actually after rereading both posts we're saying the same things here. I guess the "I completely disagree" part threw me off.

EDIT: EDIT: Also I can't remember specifically now what the problems were but in mid 2007 to about 2008 FC was terribly unstable on my system. I haven't retried it since then. If it's better now then that's kewl!


.
 
By your description smcFC operates differently on your system than it does on mine.

The problem with Mac Pro (at least the 2006/2007 models) is that the firmware that is supposed to "automatically" up the fan speed at a certain temperature is busted for all intents and purposes. The fans never increase their speed. Maybe just before the thing bursts into flames (like MBP have been actually known to do) the fans will increase or something I dunno and I'm not about to try and find out either. ;)

So there's FanControl which is like you say "automatic" for brainless, inattentive or for unattended operation, and then there's smcFanControl which sets the fan speed manually. What one sets it to is what it will always be till they set it to something else. It won't go higher, and it won't go lower (on it's own) - ever. One sets the speeds in order to achieve the temp they want. And since Apple honestly doesn't seem to know the optimal temperatures for various components then a tweaker who does is much better off setting it himself.

EDIT: Actually after rereading both posts we're saying the same things here. I guess the "I completely disagree" part threw me off.

EDIT: EDIT: Also I can't remember specifically now what the problems were but in mid 2007 to about 2008 FC was terribly unstable on my system. I haven't retried it since then. If it's better now then that's kewl!


.

Fan control allows for adjustment depending on room temps, load cases etc, you adjusting it by hand is a waste of time.

Its FAR superior to smcFanControl, and I have both installed on my MBP and just Fan Control on my MP.

MBP: 1000RPM up until 40C, then increases its way up to 6000RPM at 70C or over. Safari/MSN/Email load, the temps sit around 45-50C and 1800-2200RPM, would you bother doing that with smc? If you do then you have more free time than I do!

MP: It would be (when it works - currently 1200 up to 40C) 500RPM up until 40C then increase up to their relative maximums at 90C.

At 100% load it sits at 65-75C core temp and 1200-1500RPM for intake/exhaust and 1800-2000 for CPU fan.

smcFancontrol IMO is redundant app now, I just use it to display the temp and fan speeds on my MBP.

It won't go above your personal temperature, as if it increases the fan speeds increase, it levels out when it finds a equilibrium and every day this equilibrium is different!
 
MBP: 1000RPM up until 40C, then increases its way up to 6000RPM at 70C or over. Safari/MSN/Email load, the temps sit around 45-50C and 1800-2200RPM, would you bother doing that with smc?

Yes. This is what I've been doing for a little over two years now.


If you do then you have more free time than I do!

I'm not sure why you say that tho. It's just a simple menu selection. I know when the machine is working hard or not usually. So I glance up at the temperature reading in the menu bar and if it's over XX˚ I click and select a preset. Just a singular motion. Glance -> Click -> Done. Or Glance -> Done when it's within where I want it.

This might seem troublesome when reading about it here but it for sure takes less than 1 minute per day to actually do.

Also I already know how applications profile: HDD I/O, CPU Abuse, GPU Abuse, or any combination. So when for example, I start using Houdini I know the GPU is hit hard and select the preset with that fan accelerated. When I render everything is cool except the CPUs which are all pegged at 100% so I'll select the preset with the CPU fan accelerated a lot and the rear case fan increased slightly. As I remember it FanControl offers no such control.

If just the CPUs get hot does it just increase the CPU fans? and slightly increase the rear? If the drives show a particular temperature will just the drive fans increase? If the ambient case temp is more than X will the PSU and REAR fans kick in? And since all three of these should be increased (or decreased) at different temperatures are they individually assignable? If they are and it's working better now I wanna switch to FanControl. As I remember it tho it's noting so useful unfortunately. :(

We are talking about the same thing right? This: http://www.lobotomo.com/products/FanControl/ ??



MP: It would be (when it works - currently 1200 up to 40C) 500RPM up until 40C then increase up to their relative maximums at 90C.

Awe, so, it's still buggy?


At 100% load it sits at 65-75C core temp and 1200-1500RPM for intake/exhaust and 1800-2000 for CPU fan.

smcFancontrol IMO is redundant app now, I just use it to display the temp and fan speeds on my MBP.

It won't go above your personal temperature, as if it increases the fan speeds increase, it levels out when it finds a equilibrium and every day this equilibrium is different!


What temperature sensor? Which fans? I don't follow.

I want a utility that looks like this:

CPU sensor (averaged is fine) 00c ~ 30c = 500. ~ 1200 RPM on the CPU Fan.
CPU sensor (averaged is fine) 30c ~ 40c = 1200 ~ 1800 RPM on the CPU Fan.
CPU sensor (averaged is fine) 40c ~ 50c = 1800 ~ 2200 RPM on the CPU Fan.
CPU sensor (averaged is fine) 50c ~ 70c = 2200 ~ 3000 RPM on the CPU Fan.

HDD sensor (averaged is not fine) 00c ~ 25c = 500. ~ 1200 RPM on the CPU Fan.
HDD sensor (averaged is not fine) 25c ~ 30c = 1200 ~ 1800 RPM on the CPU Fan.
HDD sensor (averaged is not fine) 30c ~ 35c = 1800 ~ 2100 RPM on the CPU Fan.
HDD sensor (averaged is not fine) 35c ~ 40c = 2100 ~ 2500 RPM on the CPU Fan.
HDD sensor (averaged is not fine) 40c ~ 45c = 2500 ~ 2800 RPM on the CPU Fan.
HDD sensor (averaged is not fine) 45c ~ 50c = 2800 ~ 3000 RPM on the CPU Fan.
PCIe temperatures should also be considered and the hottest wins precedence as
the PCIe fans are the same ones responsible for the HDDs.

And then something similar but different for case ambience on the "Rear" and PSU
on the PSU fans.

Also if any one of these ranges consistently aren't getting the desired temperatures then I want to be notified and I want it to attempt to compensate via the rear or maybe the PSU fans within limits before increasing the specific fan area's fan any further.

IMO this is what Apple should have done in the 1st place. That they didn't (or can't) means I have to. I don't see FanControl as doing any of that. Am I wrong?


.
 
As for the app, yes it is still buggy! (My Mac Pro 2009 version that is, the MBP version is perfect) Because im not a proficient coder! Someone who knows exactly what they are doing would have fixed it by now. I don't have access to all the temp sensor codes for the HDs, GPU, PSU etc. And yes, that is the app I use on my Macbook Pro, and does the job perfectly. There is a extended version which does left and right separately but i found it pointless.

The version im trying to edit for my MP is a version that was first intended for the iMac, and i've changed it to three zones, PSU, PCI(HDs) and CPU.

The intake and exhaust are linked and the CPU fan is 142.5% of those speeds, so I just increase the F2Mn and the thing adjust accordingly to what I suppose apple thinks is a equal flow. Not going to argue with that! smcFanControl does the same thing so its not a 'bug'.

If the CPU increases in temp after 40C then yes, the fans start to increase. When the temps drop then the fan decreases to my set minimum. So they are never working harder or making more noise than is necessary!

For example now, ambient temps are up 4C from earlier, CPU intake/exhaust are up 200RPM and main CPU is up 350RPM. CPU core temps are up only 2C, thanks to the increase in fan speeds.

And yes that is how it works, except it does it better than that. It works out the *exact* fan speed to correlate with that temperature along the line, eventually it gets to a equilibrium. Drops in temps, decreases the speeds.

If you want it to increase quicker, you set the min temp and max temp start values for me 45C is minimum up to max at 80C, so it works out the RPM per degree and works it out from there.

The issue with what you outline there is what I experience in windows using Ati Tray Tools, the GPU hits say 60C where it changes from 35 to 40% fan speed, which is a audible change and the 40% fan speeds drops the temps back to less than 60C which changes the fan speed to 35%. And it does this *constanly* which is hellishly annoying! This has none of that, smooth changes of fan speeds of 100RPM at a time.

Intake/Exhaust/CPU controlled using the CPU core temp (hottest thing) in mine (earlier in the thread someone changed it to use the FB-DIMM temp sensors as they used to get HOT, DDR3 doesn't reach more than 50C in the 2009 MP under 100% load)

PCI/HD fan controlled using the HD (Although their temps hardly change in a MP TBH!) and the gfx card temp.

PSU fan controlled by its respective temperature sensors.

I don't have the coding skill to work this out.

Ideally i'd like a total re-write to allow for increased values if the computer has been idle for 30 mins, etc. But I dont think anyone has the time (I will in the summer to at-least learn) to get this working how I and many others want.

Apple have nothing to do with it IMO. They have set the fans to a speed which will ensure correct operation in all conditions (sometimes they get it wrong (yet my MP runs solidly at 95C load :confused:) its just us that want to reduce it. I for one as I have turbo boost and like things being cool (from my overclocking days).
 
B
The problem with Mac Pro (at least the 2006/2007 models) is that the firmware that is supposed to "automatically" up the fan speed at a certain temperature is busted for all intents and purposes. The fans never increase their speed. Maybe just before the thing bursts into flames (like MBP have been actually known to do) the fans will increase or something I dunno and I'm not about to try and find out either. ;)

Actually once the OS is up and running it controls the fans, not the firmware. All those fan control programs are simply telling the OS to increase the fan speed. Which in turn passes it on to the hardware.
 
Actually once the OS is up and running it controls the fans, not the firmware. All those fan control programs are simply telling the OS to increase the fan speed. Which in turn passes it on to the hardware.

Funny how the fans can come on without the OS being loaded eh ;)

It is the SMC chip that controls the fans, and when these fan programs are making changes, they are simply modifying the SMC's fan parameters. Haven't you noticed that if you make a change in OS X and boot into Windows via Boot Camp, the fan settings remain...?
 
As for the app, yes it is still buggy! (My Mac Pro 2009 version that is, the MBP version is perfect) Because im not a proficient coder! Someone who knows exactly what they are doing would have fixed it by now. I don't have access to all the temp sensor codes for the HDs, GPU, PSU etc. And yes, that is the app I use on my Macbook Pro, and does the job perfectly. There is a extended version which does left and right separately but i found it pointless.

OH! This is your program? Silly me. I didn't pay any respects. :( I thought you were just modding. So a belated Respek and thanks!


The version im trying to edit for my MP is a version that was first intended for the iMac, and i've changed it to three zones, PSU, PCI(HDs) and CPU.

Is this your program or are you just hacking it? (meant as a nice question)


The intake and exhaust are linked and the CPU fan is 142.5% of those speeds, so I just increase the F2Mn and the thing adjust accordingly to what I suppose apple thinks is a equal flow. Not going to argue with that! smcFanControl does the same thing so its not a 'bug'.

Well... It's a little more complex than that. Here check this out:
Hardware_Monitor_Fan_Speed.jpg
As you can see there are several rules and conditional relationships at play here.


If the CPU increases in temp after 40C then yes, the fans start to increase. When the temps drop then the fan decreases to my set minimum. So they are never working harder or making more noise than is necessary!

For example now, ambient temps are up 4C from earlier, CPU intake/exhaust are up 200RPM and main CPU is up 350RPM. CPU core temps are up only 2C, thanks to the increase in fan speeds.

And yes that is how it works, except it does it better than that. It works out the *exact* fan speed to correlate with that temperature along the line, eventually it gets to a equilibrium. Drops in temps, decreases the speeds.

Are you talking about Apple's default controls? If so mine doesn't do anything like that. They stay at the default minimum the entire time up until the CPU heatsink hits 65c to 70c. It might monitor PCI cards I can't easily test that but it doesn't consider HDD temps at all. Or if it does it's the same ridiculous 65c after irreparable damage has been done to the drives. :mad:


If you want it to increase quicker, you set the min temp and max temp start values for me 45C is minimum up to max at 80C, so it works out the RPM per degree and works it out from there.

The issue with what you outline there is what I experience in windows using Ati Tray Tools, the GPU hits say 60C where it changes from 35 to 40% fan speed, which is a audible change and the 40% fan speeds drops the temps back to less than 60C which changes the fan speed to 35%. And it does this *constanly* which is hellishly annoying! This has none of that, smooth changes of fan speeds of 100RPM at a time.

OK, I'm going to try FC again to see how it behaves in my machine.


Intake/Exhaust/CPU controlled using the CPU core temp (hottest thing) in mine (earlier in the thread someone changed it to use the FB-DIMM temp sensors as they used to get HOT, DDR3 doesn't reach more than 50C in the 2009 MP under 100% load)

They hit 80c and 90c in a Mac Pro from 2006 using the FB-DIMMs - and that's at the sensor point! :(


PCI/HD fan controlled using the HD (Although their temps hardly change in a MP TBH!) and the gfx card temp.

Mine change a lot! If I let Apple control the system with their defaults my drives stay at ~50c when the system is totally idle and hit 65c during a CPU-Only render operation. They don't eject enough heat from the system (from the CPUs) and the heat cooks the drives above. You can see this start to happen in the graph I included below. I refuse to let my drives go above 45c so you won't see any examples of that from me. :)


PSU fan controlled by its respective temperature sensors.

It's also tied to the CPU and Exhaust speeds. It actually lowers it's speed 25RPM at a time as the CPUs heat up and the CPU/EXH fans increase. I guess they think they're redirecting the airflow as to not pass by the HDDs or something. At least they applied some logic to it - too bad they didn't actually test it. :(


I don't have the coding skill to work this out.

Ideally i'd like a total re-write to allow for increased values if the computer has been idle for 30 mins, etc. But I dont think anyone has the time (I will in the summer to at-least learn) to get this working how I and many others want.

I want more control from it if it's anything like it used to be 18 months ago. It's too simple now and I can't understand the relationship between your displayed graph, the CPU fans, the Exhaust fans, and the HDD/PCI Fans. Nor what the heck Apple thinks they're doing with the PSU fan.


Apple have nothing to do with it IMO. They have set the fans to a speed which will ensure correct operation in all conditions (sometimes they get it wrong (yet my MP runs solidly at 95C load :confused:) its just us that want to reduce it. I for one as I have turbo boost and like things being cool (from my overclocking days).

Hahaha at this I just have to laugh. Apple has nothing set correctly. Their entire profile ensures a constantly HOT system, often overheated components, and a short life for my poor little Mac Pro. Is this planned obsolescence? I dunno. It could be I guess. It's certainly not "correct operations" nor an optimal cooling profile. IMHO, they spent 30min. thinking about what might be good settings and then didn't test it at all. Either that or they think MOT (Max Operating Temp) is the same thing as ROT (Recommended Operating Temp.). Either way, they blew total chunks on the cooling of the Mac Pros. I hear it's the same and worse on MB and MBPs.

MP can run at 90c ~ 100c because many of the components are server grade parts. Xeons can take a massive beating and maintain (and sometimes not too!). They may not meet some higher military specs. but they're damn good (usually). Memory in the '06 ~ '08 MPs are under the protection of a heatsink which smoothes out dispersion across the component modules. So it too can run hotter (at sensor point) than one would expect. I bet the '09 Mac Pros are crashier in overheated conditions if indeed they don't kick in their fans earlier. Of the standard components in previous Mac Pro models the HDDs and Optical drives are the most vulnerable and the most devastated to and by heat. HDDs are the most important to keep safe - for the obvious reasons!


Actually once the OS is up and running it controls the fans, not the firmware. All those fan control programs are simply telling the OS to increase the fan speed. Which in turn passes it on to the hardware.

Right. But the settings are in NVM / firmware AFAIK. So I'm saying that profile - not actually the code that's executed in order to apply it. Anyway it don't really matter as Apple's profile ("control") is broken for all intents and purposes - well unless the purpose is a short life span and then they're right on the mark. In the graph below you can see Apple's default profile being applied and the affects it has on the system components and then one of my profiles in comparison.
Hardware_Monitor_Fan-Temp_Relation.jpg
  • Apple's defaults are applied and a render using 100% on all 8-cores is started.
    No drive activity is initiated and none besides a 2 MB file project load occurs. The PCI Video card is also not stressed AT ALL and is operating under similar conditions to that of doing nothing but displaying the default desktop.

  • CPU heatsinks become 65c and 72c and Apple decides to increase the CPU fan 250 RPM (not an interval of 1000).
    The heat continues to rise and they up it another 500 RPM. And then another 250 RPM increase before they decide things are cooler.

    Well, the CPU Heatsinks are cooler yes. But almost everything else RAM, PSU, HDDs and PCI cards are not affected and still on the rise.

  • The render finishes and the CPU speeds return to typical idle rates.
    Notice how pretty much everything except RAM and CPU is remaining at the same temp and the HDDs are even continuing to increase temperature. The system will run hot like this at idle for about an hour before we see any noticeable temperature reductions from the other sensors. If another render is preformed in the interim some temps will actually go up higher and stay there while the rest of the system runs hot.

    This isn't the 1st time I've done this. If I let it go with a few more periodic renders the HDDs will be at 60C ~ 65c and never ever cool to below 50c. The Max operating temperature for these drives is 55c. :( Apple's default drive that came with the system profiles the same and with the same MOT - very bad.

    Also while there is no sensor located at the inner-most end of the PCIe boards (that I know of) I bet that because of the CPU's recent activities that this area of all connected cards is cooking right about now.

  • The Internal S.M.A.R.T. sensor in HDD1 is reporting 46c and a bell in my system starts ringing. Ding! :D
    My defaults for periodic rendering in springtime are applied manually using smcFanControl and immediately the system starts to come back within a sane temperature range for trouble-free, long-life, operation. YAY!

  • Things will still get a little cooler but this is about it. Good enough. So I load back up my 3D application (Lightwave 3D v9.6), and proceed to load back in the same scene and objects I did previously at point A above.

  • I begin rendering just as I did a few seconds after point A.
    However this time heat is being drawn AWAY from the CUPs and out of the system fast enough that my HDDs continue to cool down! Sweet! The CPUs reach about 45c max durring the render. And the 1 minute frames also render 3 to 5 seconds faster than they would if Apple were allowed to mess it up again with 70c ~ 75c CPU temperatures. This is tested and proven.

  • The render is finished. The PSU sensors are now detecting the highest heat in the system at 57c. The curve rate for their thermal exchange is different than Apple's method but are overall cooler than Apple's too. Too bad they won't allow me to control those as well. I think I've just proven I know how and am better suited to control the fans than Apple is!

    After the render the system soon returns to an idle temperature suitable for whatever my next task is. If that's video editing then I have a preset for video editing in springtime and will select that next if the "Periodic Render in Spring" is too loud or not needed.



Finally I ask these questions: How many watts do fans consume? 2 Watts? 5 maybe at full tilt? How much are fans to replace? $10? $15? How much are HDDs to replace? How about motherboards? Or video cards?

The noise is computer noise so I don't mind a bit. Heck, my air conditioner is 3 times louder. And in winter I use a kerosene stove with a standard room fan pointed 80˚ up at the ceiling to circulate the heat and warm the room evenly. It too makes more noise than any of my presets on the Mac Pro do (except for one I call "Temporary Blast"). Maybe if there were 5 or 10 Mac Pro in the room running all at once I would reconsider. Or not. :)

Currently I notice my Mac Pro's noises only 40 or 50 days during spring and another 40 or 50 in autumn. It's a nice friendly noise. I like it. :) Noise to me me is not an issue at all and by my reasoning shouldn't be for any Mac Pro user. iMac I can understand. It's like a piece of furniture or something. Furniture shouldn't make noise. ;)


.
 
Wow you use hardware monitor! I didn't deem it worth the expense, mainly because it picks up no other sensors apart from temperatures which is weird! Anyway...

Its a program I am editing from the open source code which can be easily downloaded.

Under 100% load:

Bay 1 (300Gb Velociraptor): 29C, bay temp 27C
Bay 2 (1TB WD Black): 33C, bay temp 28C
Bay 3 (1TB WD Black): 34C, bay temp 29C
Bay 4 (500Gb WD): 35C, bay temp 30C
GPU: No idea, nothing I have displays it!

Fan at 1200RPM (wish I could set it lower than that - but its a bug I can't iron out!). I don't know the sensor codes for them and until someone tells me the PCI (and PS for that matter) fan is dictated by the CPU temp!

PS supply temps 1 & 2: 26 and 33C respectively! Hardly worth any change there :p 1000RPM


Mem sticks: 32/33/33
CPU heatsink (currently what im using for temperatures): 46C.
Core temperatures: 70-74C
Heatsink diode: 62C

Ambient: 26C

I need someone to give me a list of sensor codes!!! :( the smc sensor scan shows nothing for temps :(

Plan is (if someone can find the time to help me with this)

Three separate zones, each having there own min speeds and min and max temp controls.
1. CPU area
Controlled by: CPU core temp/memory temp depending on which you fancy.
Controls: Intake, Exhaust, CPU fan (they are linked by the SMC and as above the CPUBOOSTA is 142.5% that of the Intake/Exhaust.
My Setup: 500RPM to 40C then max at 80C.

2. PCI area
Controlled by: Average of the HD temps and/or GPU temp
Controls: Single intake fan and (if possible - but highly unlikely) the GPU fan.
My Setup: 500RPM to 30C then max at 50C (Based on HDs temps)

3. Power supply
Controlled by: Highest of the two sensors in the PSU
Controls: Its own fans
My setup: 500RPM to 40C, max at 70C.


This however, is a lonnnggg way off. I could wright the logic for it by reading in and out of the SMC and adding a control panel is beyond me!

Edit: Woohoo! I've found loads of sensors!

I've now got: CPU heatsink, Memory sticks, Powersupply, Northbridge, Hard Disk Bays (not HDs themselves yet) and ambient!
I've also fixed the minimum fan speed settings! 500RPM min now!!!

/Gets back to Uni work
 
Wow you use hardware monitor! I didn't deem it worth the expense, mainly because it picks up no other sensors apart from temperatures which is weird! Anyway...

Oh my... heavens no. There are 473 data items to monitor and display - and 84 physical sensors just in my machine. Plus it does Xserve, remote machines, ant on and on. It's pretty elaborate! :) No, no. Not just temperatures! LOL.


Its a program I am editing from the open source code which can be easily downloaded.

Ah, I see. Well, still a worthy effort.


I need someone to give me a list of sensor codes!!! :( the smc sensor scan shows nothing for temps :(

I can give you the ones from my machine that Hardware Monitor will allow to be spilled:
Code:
artificial.cpuload.0:	Processor Load A (local computer)
artificial.cpuload.1:	Processor Load B (local computer)
artificial.cpuload.2:	Processor Load C (local computer)
artificial.cpuload.3:	Processor Load D (local computer)
artificial.cpuload.4:	Processor Load E (local computer)
artificial.cpuload.5:	Processor Load F (local computer)
artificial.cpuload.6:	Processor Load G (local computer)
artificial.cpuload.7:	Processor Load H (local computer)
artificial.cpuload.average:	Processor Load (average) (local computer)
artificial.os.processcount:	Number of Processes (local computer)
artificial.raidstatus.A553BEE6-95AF-4C2D-A626-DB0F4F2EFB19:	RAID Status A553BEE6-95AF-4C2D-A626-DB0F4F2EFB19 (local computer)
artificial.smartstatus.Maxtor 7V300F0-V60MAJ7G:	S.M.A.R.T. Status Maxtor 7V300F0 V60MAJ7G (local computer)
artificial.smartstatus.Maxtor 7V300F0-V60QP24G:	S.M.A.R.T. Status Maxtor 7V300F0 V60QP24G (local computer)
artificial.smartstatus.Maxtor 7V300F0-V60QWG9G:	S.M.A.R.T. Status Maxtor 7V300F0 V60QWG9G (local computer)
bresink.dts.0:	CPU Core 1 (local computer)
bresink.dts.1:	CPU Core 2 (local computer)
bresink.dts.2:	CPU Core 3 (local computer)
bresink.dts.3:	CPU Core 4 (local computer)
bresink.dts.4:	CPU Core 5 (local computer)
bresink.dts.5:	CPU Core 6 (local computer)
bresink.dts.6:	CPU Core 7 (local computer)
bresink.dts.7:	CPU Core 8 (local computer)
bresink.ia32.frequency:	CPU Clock Frequency (local computer)
gpusensor.NVDA.6:	Graphics Processor (local computer)
smart.Maxtor 7V300F0.V60MAJ7G:	SMART Disk Maxtor 7V300F0 (V60MAJ7G) (local computer)
smart.Maxtor 7V300F0.V60QP24G:	SMART Disk Maxtor 7V300F0 (V60QP24G) (local computer)
smart.Maxtor 7V300F0.V60QWG9G:	SMART Disk Maxtor 7V300F0 (V60QWG9G) (local computer)
smart.WDC WD10EACS-00ZJB0.WD-WCASJ0522351:	SMART Disk WDC WD10EACS-00ZJB0 (WD-WCASJ0522351) (local computer)
smc.current.DED:	CPU A (local computer)
smc.current.DEE:	CPU B (local computer)
smc.current.NUD:	Memory VRM Supply A (local computer)
smc.current.NUE:	Memory VRM Supply B (local computer)
smc.current.OE3:	Northbridge (local computer)
smc.current.qE3:	Power Supply 1 Line 1 (local computer)
smc.fan.CPU_MEM:	Fan CPU/Memory (local computer)
smc.fan.EXHAUST:	Exhaust Fan (local computer)
smc.fan.IO:	Fan Expansion Slots (local computer)
smc.fan.PS:	Power Supply Fan (local computer)
smc.power.DED:	CPU A (local computer)
smc.power.DEE:	CPU B (local computer)
smc.power.NUD:	Memory VRM Supply A (local computer)
smc.power.NUE:	Memory VRM Supply B (local computer)
smc.power.OE3:	Northbridge (local computer)
smc.power.qE3:	Power Supply 1 Line 1 (local computer)
smc.temperature.BR3:	Ambient Air (local computer)
smc.temperature.DJD:	CPU A Heatsink (local computer)
smc.temperature.DJE:	CPU B Heatsink (local computer)
smc.temperature.IR3:	Hard Drive Bay 1 (local computer)
smc.temperature.IR4:	Hard Drive Bay 2 (local computer)
smc.temperature.IR5:	Hard Drive Bay 3 (local computer)
smc.temperature.IR6:	Hard Drive Bay 4 (local computer)
smc.temperature.NR3:	Memory Riser Card A Position 1 (local computer)
smc.temperature.NR4:	Memory Riser Card A Position 2 (local computer)
smc.temperature.NR5:	Memory Riser Card A Position 3 (local computer)
smc.temperature.NU3:	Memory Module A1 (local computer)
smc.temperature.NU4:	Memory Module A2 (local computer)
smc.temperature.NU5:	Memory Module A3 (local computer)
smc.temperature.NU6:	Memory Module A4 (local computer)
smc.temperature.NU;:	Memory Module B1 (local computer)
smc.temperature.NU<:	Memory Module B2 (local computer)
smc.temperature.NUD:	Memory Module B3 (local computer)
smc.temperature.NUE:	Memory Module B4 (local computer)
smc.temperature.OJ3:	Northbridge Heat Sink (local computer)
smc.temperature.TE3:	Expansion Slots (local computer)
smc.temperature.qE3:	Power Supply Location 1 (local computer)
smc.temperature.qE4:	Power Supply Location 2 (local computer)
smc.voltage.DED:	CPU A (local computer)
smc.voltage.DEE:	CPU B (local computer)
smc.voltage.NUD:	Memory VRM Supply A (local computer)
smc.voltage.NUE:	Memory VRM Supply B (local computer)
smc.voltage.OE3:	Northbridge (local computer)
smc.voltage.qE3:	Power Supply 1 Line 1 (local computer)


Plan is (if someone can find the time to help me with this)

Three separate zones, each having there own min speeds and min and max temp controls.
1. CPU area
Controlled by: CPU core temp/memory temp depending on which you fancy.
Controls: Intake, Exhaust, CPU fan (they are linked by the SMC and as above the CPUBOOSTA is 142.5% that of the Intake/Exhaust.
My Setup: 500RPM to 40C then max at 80C.

2. PCI area
Controlled by: Average of the HD temps and/or GPU temp
Controls: Single intake fan and (if possible - but highly unlikely) the GPU fan.
My Setup: 500RPM to 30C then max at 50C (Based on HDs temps)

3. Power supply
Controlled by: Highest of the two sensors in the PSU
Controls: Its own fans
My setup: 500RPM to 40C, max at 70C.

Sounds good I guess. I wanna try it when it's done. :)


This however, is a lonnnggg way off. I could wright the logic for it by reading in and out of the SMC and adding a control panel is beyond me!

Use the GUI builder in the dev tools. I found it pretty easy. Didn't even need to read docs. :D
 
Concord,

I take it you found the min and max values coded in the file MFDefinitions.h

If you havent done so you may want to use the following settings...
#define MFMinRpm 500
#define MFMaxRpm 3000

The fans in the early MP top out at around 2800RPM. Setting MFMaxRpm to 3000 will allow the FC prefs panel to more accurately scale the selected fan speeds.


The following routine in MFDaemon.m is where the meat of the calculations repeatedly occurs.

There are 3 basic parts to it.

1 Read the temperatures you are interested in and determine what value you want to use for the new temp.
2 Compare the new temp to the current thresholds and determine what you want the new TargetRpm to be while making sure you dont change the RPM too rapidly.
3 Set the fans using the new targetRpm.

----------------------------------------

// control loop called by NSTimer
- (void)timer:(NSTimer *)aTimer
{
double temp;
double t0, t1;
int targetRpm;
int step;

SMCOpen();

// read the 2 heatsink temps
t0 = SMCGetTemperature(SMC_KEY_HEATSINK0_TEMP);
t1 = SMCGetTemperature(SMC_KEY_HEATSINK1_TEMP);

// get the max temp and use it
temp = t0;
if( t1> temp ) temp = t1;


if (temp < lowerThreshold) { targetRpm = baseRpm; }
else if (temp > upperThreshold) { targetRpm = maxRpm; }
else { targetRpm = baseRpm + (temp - lowerThreshold) / (upperThreshold - lowerThreshold) * (maxRpm - baseRpm); }

// adjust fan speed in reasonable steps - no need to be too dynamic
if (currentRpm == 0) { step = targetRpm; }
else {
step = (targetRpm - currentRpm) / 6;
if (abs(step) < 20) { step = targetRpm - currentRpm; }
}
targetRpm = currentRpm = currentRpm + step;

SMCSetFanRpm(SMC_KEY_FAN0_RPM_MIN, targetRpm); // CPU/Memory Intake Front fan
SMCSetFanRpm(SMC_KEY_FAN1_RPM_MIN, targetRpm); // PCIe expansion area front fan
SMCSetFanRpm(SMC_KEY_FAN2_RPM_MIN, targetRpm + 200); // CPU/Memory Exhaust back fan
SMCSetFanRpm(SMC_KEY_FAN3_RPM_TGT, targetRpm + 200); // Power Supply Exhaust back fan

SMCClose();

// save preferences
if (needWrite) {
[self storePreferences];
needWrite = NO;
}
}
 
davepk,

In this code, how would I make it so that it changes in 10RPM steps instead of 100RPM steps?

100RPM is enough to make it oscillate! :(

Code:
    // ----- compute the desired/target CPU fan speed

    // determine the desired/target RPM indicated by the preference settings
    if (CPUtemp < lowerTempThreshold) {
        CPUfanTargetRPM = CPUfanBaseRPM;
    } else if (CPUtemp > upperTempThreshold) {
        CPUfanTargetRPM = MFMaxCPUfanRPM;
    } else {
        CPUfanTargetRPM = CPUfanBaseRPM +
                          ((floor(CPUtemp + 0.5) - lowerTempThreshold) /
                          (upperTempThreshold - lowerTempThreshold) *
                          (MFMaxCPUfanRPM - CPUfanBaseRPM));
    }
    if (MFDebugCPU) NSLog (@"CPUtemp = %f\n", CPUtemp);
    if (MFDebugCPU) NSLog (@"rounded CPUtemp = %f\n", floor(CPUtemp + 0.5));
    if (MFDebugCPU) NSLog (@"ideal CPUfanTargetRPM = %d\n", CPUfanTargetRPM);
    if (MFDebugCPU) NSLog (@"CPUfanRPM = %d\n", CPUfanRPM);

    // correct the fan speed if we don't have a fan-speed value/reading from smc
    if (CPUfanRPM == 0) {
        CPUfanRPM = CPUfanTargetRPM;
        if (MFDebugCPU) NSLog (@"corrected CPUfanRPM = %d\n", CPUfanRPM);
    } /*else { // pretend fan speed is aligned to nearest MFRPMspeedStep boundary
        alignmentRPM = (CPUfanRPM % MFRPMspeedStep);
        CPUfanRPM = CPUfanRPM - alignmentRPM;
        if (alignmentRPM > (MFRPMspeedStep / 2)) CPUfanRPM = CPUfanRPM + MFRPMspeedStep;
        if (MFDebugCPU) NSLog (@"aligned CPUfanRPM = %d\n", CPUfanRPM);
    } */

    // determine difference between fan's desired/target RPM and the current RPM
    adjustmentRPM = (CPUfanTargetRPM - CPUfanRPM);
    if (abs(adjustmentRPM) < (MFRPMspeedStep / 4)) {
        adjustmentRPM = 0; // current speed's within 1/2 of an RPM step, leave it
    } else { // ensure the +/- difference is not greater than the maximum allowed
        if (adjustmentRPM < -MFMaxRPMspeedStep) adjustmentRPM = -MFMaxRPMspeedStep;
        if (adjustmentRPM > MFMaxRPMspeedStep) adjustmentRPM = MFMaxRPMspeedStep;
    }
    if (MFDebugCPU) NSLog (@"adjustmentRPM = %d\n", adjustmentRPM);

    // compute the new desired/target RPM
    CPUfanTargetRPM = CPUfanRPM + adjustmentRPM;
    if (MFDebugCPU) NSLog (@"next CPUfanTargetRPM = %d\n", CPUfanTargetRPM);

    // set the desired/target RPM to the nearest MFRPMspeedStep-RPM boundary
    alignmentRPM = (CPUfanTargetRPM % MFRPMspeedStep);
    CPUfanTargetRPM = CPUfanTargetRPM - alignmentRPM;
    if (alignmentRPM > (MFRPMspeedStep / 4)) CPUfanTargetRPM = CPUfanTargetRPM + MFRPMspeedStep;
    if (MFDebugCPU) NSLog (@"%d RPM-aligned next CPUfanTargetRPM = %d\n", MFRPMspeedStep, CPUfanTargetRPM);

    // when decreasing speed, don't target below the set "slowest fan speed" and
    // when increasing speeds, don't target above the maximum safe fan speed
    if (MFDebugCPU) NSLog (@"CPUfanBaseRPM = %d\n", CPUfanBaseRPM);
    if ((adjustmentRPM < 1) && (CPUfanTargetRPM < CPUfanBaseRPM)) CPUfanTargetRPM = CPUfanBaseRPM;
    if (CPUfanTargetRPM > MFMaxCPUfanRPM) CPUfanTargetRPM = MFMaxCPUfanRPM;
    if (MFDebugCPU) NSLog (@"final next CPUfanTargetRPM = %d\n\n", CPUfanTargetRPM);

Or is it in the MDefinitions?

Code:
// NOTEs
// - the UI/slider increments should be set to ensure that the fan settings are
//   are in MFRPMspeedStep increments
#define MFRPMspeedStep     25
#define MFMaxRPMspeedStep  300

Cheers!
 
Its been awhile since i've watched how RPM values change as reported by an application like Hardware Monitor.

But, I seem to recall that reported RPMs changed in 100 RPM increments.

It looks like the FPE2 (Floating Point Emulation) 2 byte format, and the way the SMC utilizes it, doesnt have the resolution to do anything other than 100RPM increments.

That being said, MFRPMspeedStep looks like the value you want to change.
You can try decreasing the value to see if that helps with the oscillation but i suspect that increasing the value will result in less oscillation.

If that doesnt do it then i would comment out the whole alignmentRPM code block as follows. Chances are its not really needed and its likely not doing correctly what it purports to do because its trying to align to the wrong boundry.
/**
// set the desired/target RPM to the nearest MFRPMspeedStep-RPM boundary
alignmentRPM = (CPUfanTargetRPM % MFRPMspeedStep);
CPUfanTargetRPM = CPUfanTargetRPM - alignmentRPM;
if (alignmentRPM > (MFRPMspeedStep / 4)) CPUfanTargetRPM = CPUfanTargetRPM + MFRPMspeedStep;
if (MFDebugCPU) NSLog (@"%d RPM-aligned next CPUfanTargetRPM = %d\n", MFRPMspeedStep, CPUfanTargetRPM);
**/
 
I think FanControl and smcFanControl are different products for different kinds of users. I think FC is better for non-technical non-aggressive users. Kids, Moms, non-owners, etc.

smcFC is better for tweakers. With it you build a set of preference settings. I have 13 in mine. 4 different ones for 3 different room temperatures each plus one called Temporary_Blast which is all fans one notch back from full throttle.

I have the temps, in the menu bar plus I use MenuMeters http://mac.softpedia.com/get/System-Utilities/MenuMeters.shtml changing a fan setting is completely manual. Just glance at the activity across the menu bar, click on the smcFC menubar gadget and select a new "Active Setting".

For me smcFC is superior but other like FC better. When I first looked into it 3 years ago FC had many stability issues as well. I dunno about the newest version.

EDIT: I just noticed I may have completely missed the nature of your question. :D

Not sure if you missed the original purpose of this thread but you answered a lot of questions for me as I am looking at both products and was leaning to SMC as something better fitted for the way I do things and your answer firmly convinced me I am headed in the right direction. Most of my issues are graphics overheating playing wow--only time graphics have frozen. So I think I will try SMC--thanks.
 
New version?

Just thanking the poster for his custom version. Sadly, running it with the Mac Pro early 2009 results in 0.0 degrees being reported for the CPUs and GPU. Any chance of an update?
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.