So, you got Mac OS X running on your favourite PC and you want to optimise performance? A bit of fine-tuning might be possible with FakeSMC kext and SMBIOS plist. Your Hackintosh needs to be running on native CPU power management of course (with P & C States set in Chameleon boot plist), not under null management.
Our R&D top man Mario (aka. Bronxteck) recently played around on the matter. Moving away from our EDP-provided FakeSMC, he used one of the latest FakeSMC versions and started editing it according to Apple’s latest SMC list. Having noted some CPU + graphics performance issues under Mountain Lion on his D630 nVidia (Intel T9300 2.5GHz FSB800 CPU, nVidia Quadro NVS 135M GPU), Mario was initially looking at pushing up the GPU clocking to fix video juttering and getting SpeedStep to run better.
I joined him in the testing phase and we were able to obtain native SpeedStep operation + improved GPU clocking (and therefore improved graphics/video performance) on our respective D630 nVidia (ML 10.8.3) which, by chance, run on the same Penryn T9300 CPU. Our tests were only conducted under ML, i.e. in 64bit mode.
By default, EDP uses FakeSMC v4.0 and MB3,1/MBP3,1 SMBIOS for the D630 laptops. Mario and I had already changed SMBIOS from MBP3,1 to MBP4,1 using Chameleon Wizard, but after thorough testing, video/graphics performance was found not to be 100% optimal and some juttering could be observed when watching video or switching rapidly between desktop screens through key-strokes such as Ctrl-UP, Ctrl-DOWN or Ctrl-LEFT. Looking at Apple’s latest support page for EFI and SMC Firmware updates for Intel-based Macs that provides version details, Mario installed FakeSMC v5.1.59 and edited the kext plist to try different SMC versions. In addition, Mario was not entirely satisfied with EDP’s emulated SpeedStep facility (VoodooPState kext + PStateMenu app) which was required to obtain CPU throttling: without it, the T9300 CPU would only run at its lowest multiplier/frequency (x3 / 600MHz!) and with it, he found frequency changes a bit lagging.
After some trials, we found that editing FakeSMC plist to use SMC versions of MBP5,1 and loading MBP5,1 SMBIOS plist gave us excellent graphics/video performance with nVidia GPU core/memory clocking efficiently between 275/300 and 400/594MHz during video playouts, thereby rendering an extremely smooth video and leading to an excellent quality of experience. As an added bonus, we also found that SpeedStep was now natively operating and that CPU stepping appeared much more rapid than with emulated SpeedStep. Mario also reckons the battery lasts a little longer.
Naturally, emulated SpeedStep has to be removed in order to verify native SpeedStep operation, so if you have emulated SpeedStep installed, remove VoodooPState.kext from /Extra/Extensions (remember this will require a subsequent myFix (full) to rebuild kext cache) and remove PStateMenu.plist from /Library/LaunchAgents. The same applies to IntelCPUMonitor kext which goes with older FakeSMC version (v4.0 for instance) and now has to be removed. Note that systems based on Intel 945GM/PM chipset must keep VoodooTSCSync kext, whilst other systems can get rid of it.
All in all, this has made for a substantial performance optimisation of our D630 nVidia Hackintoshes and something really worthy of a trial on other systems.
Here are details of things to do:
1/ make a precautionary backup of your existing FakeSMC kext (found at usual location in /E/E folder)
2/ download a copy of FakeSMC kext v5.1.59 (64bit only) to your desktop
3/ download a copy of Plist Editor Pro
4/ lookup for the Apple Mac model that best matches your own Hackintosh at EveryMac.com (you may also look at the various profiles available in the Chameleon Wizard SMBIOS tab)
5/ in Apple’s EFI and SMC list, identify the SMC version most likely to match your system specifications and take good note of it. This is the information required to be used subsequently.
6/ open up the FakeSMC kext package and, using Plist Editor Pro, open up the Contents/info.plist file
7/ in the upper part of the editor, open down IOKitPersonalities->SMC Device Emulator->Configuration->Keys
8/ At the bottom of the Keys list, open down REV, RVBF and RVUF. By default, FakeSMC is using SMC version 1.30f3 which is displayed in Data field as 01300F00 0003.
9/ in order to modify FakeSMC to a different SMC version, all of these 3 keys have to be modified. This is done by double clicking on the 6bytes value and replacing it by the targeted SMC value.
10/ Once this is done, close Plist Editor Pro, move or copy the modified FakeSMC kext to /E/E, run myFix (full) to repair permissions and rebuild cache. Then, with Chameleon Wizard, change your SMBIOS plist to the new targeted version.
11/ download HWMonitor tool v2.3.7 and run it (close and remove any other or previous version you might have been using). This particular version supports the enhanced features of the newer FakeSMC kext such as GPU/memory frequencies, thereby providing improved monitoring capabilities. Click on the associated menu bar icon and configure it to display your desired items (eg: CPU T°, GPU T°, GPU/mem frequency) and to run automatically.
12/ Your Hackintosh can now be rebooted. BIOS IDA settings may be re-enabled, depending on CPU model.
In the case of our D630 laptops with T9300 CPU and nVidia Quadro NVS 135M, Mario and I tried the SMC version listed for the 15″ MacBookPro5,1 -> 1.33f8 (SMC 1.2). This translated to 6bytes Data 01330F00 0008. On reboot, video play out was extremely smooth (even whilst doing desktop screens swaps) and GPU core/memory frequencies could be seen switching between 275/300 and 400/594MHz. The frequencies showed idling at 168/100MHz. These basically matched the expected/documented specifications of the nVidia Quadro NVS 135M whereas, when using the MPB4,1 profile, the GPU frequencies did not seem to go beyond 275/300MHz.
On removing emulated SpeedStep (by removing VoodooPState kext from /E/E and PStateMenu plist from /L/LaunchAgents), HWMonitor also allowed us to see that SpeedStep was natively running as CPU clock stepping could clearly be observed. We even noticed that IDA could be re-enabled in the BIOS without impacting the FSB. Perfect! The only little bug I noticed with HWMonitor 2.3.7 is that reported GPU/memory frequencies tend to get stuck at highest values after a while. However, the reported GPU T° tends to indicate that it is not the case…
Using same MBP5,1 settings, similar results were observed on D830 nVidia 135M with T7250/T7500 CPUs under ML 10.8.3. Compared to the D630, the differences were lower GPU memory frequencies (whilst GPU core clockings were identical) and no IDA support with that CPU family (re-enabling IDA caused FSB to drop from 200 to 182MHz, thereby lowering all CPU clockings by approximately 10%).
So, to your keyboards lads and good tuning! And, once again, thank you Mario for the research work.
NB: most of this derives from Prasys’ own work.
EDIT: Kozlek has updated these FakeSMC kexts & plugins since this article was 1st published. One major change for us is the ability to compile the code in 32bit mode and apply this tuning to our Hackintoshes that run 32bit kernel only: I’m now getting native SpeedStep on a D630 Intel X3100 with a 2.2GHz T7500 under Lion 10.7.5 (no IDA support).
EDIT #2: Aug 2013 New tests were conducted with Kozlek’s FakeSMC v5.2.678 in 32/64bit mode. All Ok on numerous systems that we’ve tested. Don’t hesitate to use and try by yourself. More recent versions of HWMonitor also provide more information, so I’d recommend to use HWMonitor 5.2.678 too.
Tests were also done with 5.2.755, but not all systems seemed to support that version.