Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo
MacFan 0.65 has been released! Release notes are included below and the changes are summarized here for your convenience:
MacFan now longer uses an ini file. All data stored there is now stored in the registry. In order to upgrade from an earlier version of MacFan that uses an ini file, make sure your fans are spinning at default speeds by putting your computer to sleep or shutting it down before you run the new version of MacFan. Note: restarting does not reset your fans to default speeds.
Temperature monitor now also monitors current fan speeds.
Fixes issue where a message would not be display if refresh was delayed.
Fixes issue where the system could lock up for a few seconds after quitting temperature monitoring and resuming an application that accesses the SMC.
Now double checks temperature sensors that are displayed when keys are being read from the registry. If they are invalid ( return a negative value, a 0 value or a value above 129 degrees celsius ), marks them as invalid in the registry and rereads keys from registry.
Temperature sensors are now refreshed as soon as the information is available. Previously, the first value would not be displayed until after the last value was gathered, which could result in information as much as 15 seconds out of date on a MacPro.
Mac/SMC Fan Control for Windows (+ Temp)
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 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 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.
USE OF THIS PROGRAM IS AT YOUR OWN RISK. I AM NOT RESPONSIBLE FOR ANY DAMAGE CAUSED TO YOUR COMPUTER THROUGH THE USE OF THIS TOOL. AS STATED ABOVE, THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY.
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.
Working MacPro PSU fan control.
I am also working on allowing the user to create rules that will govern automatic temperature control.
Initial release. Supports all non-iMac Intel Macs for manual speed control of each individual fan through command prompt.
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.
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.
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.
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.
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.
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.
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.
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.
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.
MacFan now longer uses an ini file. All data stored there is now stored in the registry.
The suspend feature of temperature monitoring has been temporarily disabled. It conflicted with the previous fix.
You now have to type return after inputting a quit command during temperature monitoring. Instead of typing 'q' to quit, you now have to type 'q' and then hit return/enter.
Version number, build number and build date are now displayed when the program starts after all other information.
I am not sure the lockup issue mentioned in the release notes is fixed. If you experience it with this version, please let me know.
Ok, I managed to remember my login, so I'm airforcedriver/Trebuin.
Now on to .65:
Good: Fan Speed settings seem to work just fine.
1: Running with /t or /t # produces the following:
Invalid temperature sensor found: PCI Slot 1 Position 1… upgrade from a version…temp sensor deleted…
This just continues for well over 5 minutes. I checked the registry keys and they look fine, but this line continuously pops up.
2: Reproduced system lockup of a few seconds. This occurs only if I stop the program and then start bootcamp. I have to manually start bootcamp due to the line in #1. If I start bootcamp before terminating your program, lockup does not occur.
For the error in #1, I'm using the same iMac I have reported before. Let me know if there's anything else I can do to help you.
Stable Version Stats:
Fan operations: v 0.65
Temp Sensor: v 0.61
Thanks for your hard work
Not a good error there for #1, I will look into that as soon as possible. Should be easy to find the bug with the version information you gave me, thanks. I know the temp monitoring in the later version handles the invalid values from the unused RAM slot sensors just fine, odd.
As for #2, I'm out of ideas to fix that. It has to do with the way inpout32 accesses the SMC conflicting with the way any Apple software accesses it, near as I can figure. Seeing as I just wrote the wrapper for inpout32, not the actual driver, I'm afraid I can't think of a way to fix it.
Thanks for your feedback, it is much appreciated as always!