MacFan 0.62 Released!

  • Robert Gilliam
    Robert Gilliam

    MacFan 0.62 has been released! Release notes are included below and the changes are summarized here for your convenience:

    **Fixes another issue preventing MacFan from working on Windows XP.**

    **Now correctly marks sensors constantly reporting their maximum value as not valid and does not display them.**

    **/t and /temp now work in addition to /temperature for starting MacFan in temperature monitoring mode.**

    Mac/SMC Fan Control for Windows (+ Temp)
    aka MacFan

    Copyright (C) 2009 Robert Gilliam

    This program is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
    as published by the Free Software Foundation; either version 3
    of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.



    Start an administrator command prompt and navigate to the directory you extracted MacFan.exe to. Run MacFan like this:

    MacFan.exe <Desired RPM for Fan 1> <Desired RPM for Fan 2 (if applicable)>

    <Desired RPM for Fan 3 (if applicable)> <Desired RPM for Fan 4 (if applicable)>

    Run the program once with no arguments if you need to know how many fans are in your machine
    and the minimum and maximum speeds those fans can be set to.

    Of course, if you already know the acceptable ranges for your fans you can go ahead and run the
    program right away with the speeds you desire. For example, to set both fans in a MacBook Pro
    to 3000 rpm you would type:

    MacFan.exe 3000 3000

    For MacPro users, control of the Power Supply Fan is currently not working. Make sure you always
    pass 0 as the fourth argument in order to not attempt to control the power supply fan.
    Passing anything except 0 as the speed for your 4th fan could result in damage to your computer.
    Proper control of the power supply fan or removal of the 4th argument if it is not possible
    will be included in the next release. Example of running MacFan on a MacPro:

    MacFan.exe 1500 900 2000 0

    MacFan does not override Apple's built in temperature controls but simply raises the minimum speeds your fans can spin at.

    If your machine gets hot enough that Apple's built in temperature controls want to raise your fan speeds, they should still raise them
    to the same speed they would be at otherwise.

    In order to monitor temperatures, run MacFan with the /t or /temp or /temperature option. You can optionally specify a number after the temperature option ( example: MacFan /t 20 ) in order to refresh the display of temperatures every x seconds ( in this case, 20 seconds ).

    At the moment, temperatures take a long amount of time to read ( can be as much as 15 seconds on machines with many sensors ). I am focusing on speeding up this process for the next release.

    **Upcoming Features:**


    Working MacPro PSU fan control.

    I am also working on allowing the user to create rules that will govern automatic temperature control.

    **Change Log:**

    MacFan 0.1:

    Initial release. Supports all non-iMac Intel Macs for manual speed control of each individual fan through command prompt.

    MacFan 0.2:

    Supports every Intel Mac. MacFan reads fan information directly from the SMC for any computer not found in its internal database. Full functionality
    is provided and to guard against incorrect SMC minimum fan speed values as a result of using SMC Fan Control in Mac OS X and rebooting, not shutting down before booting Windows, a warning is displayed if the values seem too high for your computer.

    MacFan will now automatically terminate BootCamp.exe, KbdMgr.exe, and everest.exe on startup and restart them upon exit.

    MacFan 0.25:

    Fixes minor bug that displayed a BootCamp.exe stopped working dialog on Vista when BootCamp 3.0 drivers were installed.

    Shortens folder name to make it less of a hassle to run.

    MacFan 0.3:

    Fixes issue on MacBook Air and regular MacBook that could warn you that the SMC minimum values seem too high for your computer when they are default.

    Fixes internal database issue preventing detection of MacPro.

    Cleans up code for easier transition from ini file to registry in a future version.

    Adds 64 bit version to fix issue with closing 64 bit processes (KbdMgr.exe and Bootcamp.exe) on 64 bit systems.

    MacFan 0.4:

    Fixes issue on some machines that could cause DEP to close Bootcamp.exe when attempting to terminate it.
    Unfortunately, this workaround results in a duplicate bootcamp icon in your system tray until you mouse over it. Once you do so, it disappears.

    Fixes issue causing BootCamp.exe to not be properly reopened after MacFan closed it.

    MacFan 0.45:

    Fixes an issue where, if computer MacFan is being run on could not be found in database, minimum and maximum values would not be recorded to ini file and program would not be able to set fan speeds correctly.

    MacFan will now work as intended on machines not found in its database.

    MacFan 0.5:

    Fans are now identified by name as well as number.

    Basic version of temperature monitoring now implemented:

    Run MacFan with the /temperature or /temperatures option to display current temperatures of all active sensors. You can also run MacFan with a number after the /temperature option. This causes the temperature display to run indefinitely and refresh every x seconds. For example, MacFan /temperatures 20 causes temperatures to be refreshed every 20 seconds. At the moment, temperatures take a long amount of time to read ( can be as much as 15 seconds on machines with many sensors ). I am focusing on speeding up this process for the next release.

    Unfortunately, applications closed by MacFan are not reopened upon exit when running MacFan in temperature monitoring mode with a refresh interval specified. This is also on track to be fixed in the next release.

    MacFan 0.55:

    Temperature monitoring can now be cleanly closed by hitting 'q' or paused by hitting 'h'.

    Quitting MacFan by hitting 'q' works as it should and closes cleanly while reopening terminated programs.

    Pausing MacFan before changing temperatures using MacFan running in another command prompt eliminates the need to quit the temperature monitor when changing fan speeds. Once fan speeds have been changed by another instance of MacFan, simply hit 'h' again to resume monitoring. The first refresh after resuming will be out of date and will only show a small amount of temperatures, but will correct itself on the second refresh.

    Adds progress indicator to first run temperature identification.

    MacFan 0.6:

    Fixes issue preventing MacFan from working on Windows XP.

    Fixes issue preventing pausing of temperature monitoring from working on 32 bit machines.

    Improves pausing of temperature monitoring. Corrupt data is no longer displayed after resuming temperature monitoring.

    MacFan 0.61:

    Fixes another issue preventing MacFan from working on Windows XP.

    MacFan 0.62:

    Fixes another issue preventing MacFan from working on Windows XP.

    Now correctly marks sensors constantly reporting their maximum value as not valid and does not display them.

    /t and /temp now work in addition to /temperature for starting MacFan in temperature monitoring mode.

  • Trebuin

    Nice fixes :) 
    I'm using the iMac so that's probably why running bootcamp probably didn't do anything.  I'll double check this in a few hours running things separately and let you know what happens.  If I find everything still works, maybe we can put a machine id tag in the ini file that allows bootcamp to run if it is a certain machine. 

    Also, Thanks for mentioning the realtemp plugin for rivatuner.  I knew the default sensor for rivatuner was probably no good.  Let me know if you need any coding ideas.


  • Trebuin

    Well, I discovered that bootcamp.exe is associated with the new bootcamp 3.  That's what I'm running now. 

    Running bootcamp.exe after starting the temp readings has no bad effect on anything on the iMac.  The temps still read fine.  (tested by running cpu and gpu intensive programs)

    With this build (6.2) the 129C readings still appear on the iMac.  This is in reference to "Now correctly marks sensors constantly reporting their maximum value as not valid and does not display them." 

    /t and /temp works fine for me

    bug:  Starting bootcamp.exe after shuttting down your program and when your program monitors the temp causes a 5-10 second system pause…similar to a lockup, but it unlocks after that short period.

    I haven't duplicated this when staring bootcamp.exe while macfanx64 is still running.  I'll investigate this more later and give you a full report as well as a bug build.

    Finally, I would recommend placing a build number on your executables (both macfan and macfanx64).  I had to doublecheck the version I was running was up to date when I saw the 129 temps still appearing.  I would recommend YY.MM.DD.BLD# on version numbers but that's just me.

    Thanks again for all your hard work.  Let me know when you want me to promote this.  Too soon and your forum will probably be swamped with posts :).  Have a great night.

    Treb (BTW, I'm in Japan if you're wondering about the weird post times.)

  • Robert Gilliam
    Robert Gilliam

    Oh yes, you need to delete the MacFan registry key under HKLM\Software. Once MacFan reidentifies your sensors, it will exclude the 129 readings.

    I'll add a note saying as such onto the release notes for the next release.

    I experience that lockup as well after opening everest if I had closed MacFan. I'll see what I can do to figure that out, I'm not sure it is easily fixable if at all using the method I am using right now to access the SMC. However, this method is also too slow, so I'm investigating other possibilities which would fix this problem as well.

    Good to know that Bootcamp can be running fan on your machine. One question though: you do use bootcamp for brightness and volume control, correct? I don't have an intel iMac, I would assume so though. On my MacPro it really doesn't matter if bootcamp runs or not, because it does absolutely nothing. But if changing brightness and volume, for example, does not conflict and only reading backlight data from the SMC does, then I can add an exception to let bootcamp run for iMacs.

    The build number suggestion is very good, thanks. I'll add a version number that displays when you start the program  next version as well as in the file properties.

    Feel free to promote it whenever you feel it is polished enough! I have more features in store, yes, but the more people to give me feedback the better. I would rather improve the program as it is now before adding even more features as opposed to adding the features now and having more thnigs to fix later.

    Good night to you as well!

  • Robert Gilliam
    Robert Gilliam

    Now that I think of it, that lockup issue might be very easily fixable. Cross your fingers. If it is, I should have a fix out with a few extra others features tomorrow.

  • Trebuin

    Add a reg delete code to your program, here's an example in Win7 x64:

    reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v cdloader /f

    the first half
    "reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
    targets the directory.
    cdloader is the key to delete
    /v and /f allows it to do it without user interaction…I wrote that a while ago and hopefully what I have told you is accurate. 

    For the iMac, I use bootcamp for eject, brightness, and volume control.  I'll give it a more through testing using those commands while monitoring temperature. 

  • Robert Gilliam
    Robert Gilliam

    Eject, brightness and volume control should be fine; the only problem besides backlighting would be any automatic adjustments to the fans made by bootcamp. I'm still unsure if the Apple-provided automatic fan control is in the hardware or in the software on machines in which it works. If your fans ever spun up on their own, try and get them to do so while running temp monitoring + BootCamp. If they don't hard freeze, I'll add an exception.

    Its fairly easy to delete a reg key in c++, I'll have that out tomorrow too hopefully.

  • Trebuin

    Ahh…that explains some of this.  Here's the quick and dirty: for the iMac, there was no temp control in windows before and there probably isn't any temp control with bootcamp.exe, hence why I'm looking forward to user controlled fans based off of temp. 

    Also, I should have clarified my temp monitor issue, rivatuner reads the cpu fine, the gpu it read at 10C.  I added an offset to match what the diode reading is and they both increase at the same rate, which is good.  However, I'm still questioning the temp as it does not go really high even with an overclock and a stress test.  It also has a linear temp decrease which is weird.  I expected the temp to radically drop off after I stopped the stress test.  The CPU does that, but the GPU does not.  I have a screenshot.  Could you send me your email address to my name and I'll show you what I mean? 

    I'll test it

  • Robert Gilliam
    Robert Gilliam

    Rivatuner uses nvapi I believe to check your GPU temps so they should be accurate. Mine are for an 8800gt on a MacPro but I also do not havea any temperature readings for my GPU in MacFan. Rivatuner should be giving you the core temp, the only reason I can think of to explain a linear decrease is that you're actually seeing the heatsink, not a diode on the gpu. That would also explain why the temperature does not go very high. How many entries do you have in MacFan for your gpu?

  • Robert Gilliam
    Robert Gilliam

    Tried to email you this post in case you haven't checked the forums, but your name @ seems to not exist.

  • Trebuin

    Sorry about that, I just realized that I don't use my standard name, Use Trebuin and gmail.

  • Robert Gilliam
    Robert Gilliam

    Sorry for the delay, busy week. Just email your screenshot to, then I can help troubleshoot from there. Thanks.

  • Robert Gilliam
    Robert Gilliam

    Hello airorcedriver,

    Please accept my apologies for my extremely late response. I have had a chance to look at your email. Those temperature readings from Rivatuner do look very odd. The only explanation I can think of is that those are not the core temperature readings but rather ambient around the GPU or perhaps the PCB temperature. Rivatuner does not always display all the temperatures available from your GPU itself. I would suggest you checking out a program such as Everest by Lavalys and seeing what temperature readings it gives you such for your GPU. Unfortunately, I believe my program is reading all the SMC keys related to the GPU already, so there is no modification I can make there to get you the core temperature.

    Then again, there is the possibility that that is the correct core temperature and the ATI GPU you have simply runs very cool. Combined with possible poor airflow, I think that might result in something close to a linear falloff. In any case, check out Everest ( ) and let me know if you see any more GPU readings under the sensors tab!