New page for all downloads/bug reports is here.
INFO:We have switched to Google Code. Downloads from this post have been removed. Info on this page may be outdated. Everyone's encouraged to use the google code page instead.
N/2 bus ratio support giving most users <1GHz pstates. Undervolting support, sse2 rtcfix kernel support, direct ctl change, Pstate override, default pstate, bug fixes.
Kernels on which it will work: any.
Thanks to the help of people over on #xnu-chat, an experimental Intel SpeedStep driver is now available which doesn't require a speedstep kernel (ie. it should work well with sleep kernels and allow you to resume/sleep). It will work on any Intel processor which supports speedstep (including older Pentium M). However, timing might be unstable on older processors (being fixed), so Core or higher is highly recommended. Note that it will not magically give sleep/resume ability to your speedstep kernel. Please switch to a sleep or vanilla kernel. NO AMD SUPPORT.
We need more testing before it can be termed a working kext. Please download the attached zip, unzip it and do in Terminal:
sudo kextload IntelEnhancedSpeedStep.kext
You don't need to put it in /System/Library/Extensions for testing.
Then use any SpeedStep GUI. Two of them are attached, use whatever you like.
Once you are satisfied, put it in /S/L/E and it should load everytime you boot up.
Here is more specific info about how to install the kext and use the SpeedStep app
If you experience problems with GUI apps, simply close it and use the terminal to test.
A lot of people are reporting problems with the speedstep.app and cputhrottler2beta apps. These were NOT created by me and this is not what we are testing. So please, close those apps and try manually throttling using terminal. An updated SpeedStep.app is in the works, tuxx will provide more info on it. A beta is uploaded but NO support yet until it's finished.
To see which frequencies are available:
sysctl kern.cputhrottle_freqsTo switch frequency:
sudo sysctl -w kern.cputhrottle_curfreq=YYYY(replace YYYY with what you want from the list you got. You can also set a single digit number directly which is the frequency (pstate) number: 0 is highest speed, 1 is next lowest etc.
What to test -
1) That you can actually switch CPU speed
2) Whether your timing is stable (ie. OSX UI/animations should be smooth, not stuttering in audio)
3) Test whether you can still sleep and then resume - if your sleep/resume worked before
> Make sure you unload ACPICPUThrottle.kext and/or AppleIntelCPUPowerManagement.kext before loading this! <
To get debug log messages, type this in Terminal:
sudo dmesg | grep IntelEnhancedSpeedStepIf it doesn't work for you, paste on pastebin the output of the above command, and of
sysctl machdep.cpu && uname -a, then post the URL here. To get information about the current freq/voltage and available freq/voltage, type
sysctl -a | grep throttle
From all the bug reports and debug logs, I have come to the conclusion: ACPI SUCKS.
So I have halted debugging ACPI autodetect of p-states. It is good enough now for 80% of users. For the remaining 20%, please create your P-states manually in steps of 2xFSB.
Next up: support for <1Ghz speed on supported kernels, and auto-throttle.
New features/fixes :
- fix a bug which displayed incorrect current frequency value when using n/2 bus ratio
- fixed certain issues with <1ghz support
- N/2 bus ratio support, should provide <1GHz pstates to most people. Note that if you have sse2, this will be enabled ONLY if you are using a kernel which supports <1ghz properly. Currently the only such kernel is my kernel 9.4 which is not released yet. :-)
- Excessive debug messages are now removed. Should fix stuttering while changing frequency
- Added extra IODelay after switching pstate so that sysctl displays the new values. This should make people happier.
- Minor internal fixes.
- Better kernel feature detection. Better clock recalibration.
- Kernel feature autodetection, override via Info.plist key "KernelFeatures" in IOKitPersonalities. Set to -1 for autodetect (only works with new kernels which are NOT out yet), 0 = no speedstep,1ghz+, 1=speedstep kernel,1ghz+, 2=speedstep kernel,less than 1ghz support.
- No more phantom PStates (e.g 2401 mhz)
- Default Pstate during bootup/load, set DefaultPState key in Info.plist, -1=no default, 0=pstate0 is default etc.
- Doesn't allow <1 ghz throttling unless patched kernel supports it (vanilla/sleep kernels dont)
- Added delay for latency while switching pstate - should fix people not being able to switch frequencies consistently
- Undervolting! New sysctl key kern.cputhrottle_curvolt to change the current voltage. Setting will be remembered for that pstate.
- Added sysctl key kern.cputhrottle_ctl for direct changing of fid/vid: only for testing!! Settings will not be remembered
- Load PState table from kext's info.plist! For those who get "There was an error getting Pstate table from ACPI". To use this, open the kext's Info.plist in property list editor. Expand IOKitPersonalities/IntelEnhancedSpeedStep and you will see PStateTableDisabled. It is an array of arrays. Each element is one pstate. Each pstate has 2 elements, first is the frequency in MHz and 2nd is voltage in mV. If you change the name of the array to PStateTable, it will be loaded by the kext instead of autodetecting via ACPI. NO error checking so make sure it's valid for your CPU.