31 July 2010

Why the HP Mini 311 is a MacBook Pro and Not a MacBook Air

Launch System Profiler (you can click on Apple menu > About This Mac > More Info) and if you've installed using the HP Mini 311 Darwin Project release (current release) and if you haven't been customizing your own smbios.plist, you'll notice that it says your HP Mini 311 is a MacBookPro. A MacBookPro5,1 to be exact. It also comes complete with the MacBook Pro icon.

Mine looks like this but only because I've been mucking around with my fakesmc REV key and smbios.plist:
I'm currently testing different MacBook models.

What for?

For speedstep compatibility.

You see, since we have migrated to using vanilla AppleIntelCPUPowerManagement.kext instead of using a combination of kexts namely VoodooPowerMini.kext, SleepEnabler.kext, and Disabler.kext (NullCPUPowerManagement.kext), there have been noticeable changes. One that's particularly unsettling at first is that the Atom processor of the HP Mini 311 no longer seems to speedstep when checked in CPU-X.

What is SpeedStep anyway? It's a technology introduced by Intel for processors which "allows the system to dynamically adjust processor voltage and core frequency, which can result in decreased average power consumption and decreased average heat production." The Intel Atom N270 and N280 that our HP/Compaq Mini 311's are equipped with support this feature.

It's actually a tricky job, for a hackintosh system, to be able to ensure this feature is working. The Intel Atom CPU is not supported natively by Mac OS X; no real Mac has ever been made with an Atom chip after all. And to define the "steps" at which the CPU should set itself to at a given circumstance, we have to answer the following questions:
  1. What defined "speed points" are to be used?
  2. How much power does the CPU need to draw?
These pieces of information are integrated into the DSDT.aml which acts as the bridge to transfer this information from raw hardware in non OS X intelligible ACPI parlance into something understandable by Mac OS X's CPU Power Management set of instructions. These pieces of information needed for proper SpeedStep enabling are comprised of P-States.

I will not attempt to explain P-States or I risk being a stupid, trying hard, know it all. Plus I don't really understand it thoroughly myself so why bother a fated failed attempt at boring you? And it's not the main thrust of this post anyway so let's move on to why you have a MacBookPro5,1 instead of a MacBookAir2,1.

MacBookAir1,1 is thoroughly out of the question, not because it's an outdated Mac model (admit it that you also crave that bragging right for having the newest and the meanest rig out there in Geek-landia), but because it doesn't allow for vanilla power management to work on the HP Mini 311 and, I believe, in most other (or even all other) netbook and notebook hackintoshes alike. You get a Kernel Panic.

Now, MacBookAir2,1 does work. No KP as a matter of fact. And as a bonus, you also get Remote Disc automatically working and DVDPlayer that doesn't look for DVD drives. But, yes, there's a "but" - make it a big BUT (bootylicious? nah) your HP Mini 311 won't be able to SpeedStep. Given the 311's notoriously short battery life while running OS X, I'm sure you'd want to get all the help in conserving power that you can get your hands on.

MacBookPro5,1 on the other hand works really well. No KP at boot and SpeedStep is working as expected. But it's not detected in CPU-X you say. That is exactly correct. The thing is, from now on, as we use AppleIntelCPUPowerManagement, it's MSR Tools that we use for checking the reality of SpeedStep on our machines:
The MacBook6,1 also works fine. 

The MacBookPro7,1 is compatible as well.

How is this configured on the HP Mini 311 running Snow Leopard? 

Enter "smbios.plist". Here's my MSI Wind U100 disguising as a MacBook6,1 for an example, it's the same principle for the HP Mini 311 anyway:
The important plist keys to consider are
  1. SMfamily
  2. SMproductname
Back in the day, I used to be able to get MacTracker recognize my HP Mini 1001TU as a MacBook Air. But now, even though I put in genuine information (directly "borrowed" from the local Apple retail store's MacBook Pro's), MacTracker won't recognize the HP Mini 311 as anything but, well, nothing.

But hey, my Mini MacBook Pro is working nicely anyhow so what the heck, right? :D

Oh and I almost forgot (I've forgotten that it was Louis Guilloux who wrote "Le Sang noir", and forgotten a ton of other specifics so I flunked my MA quiz today - again), you might want to edit fakesmc.kext REV key in its info.plist to reflect the "SMC System (version)" appropriate for the MacBookPro5,1 onwards or MacBook6,1 you have ;-)


gurgle said...

Do you know if there is any way to get Speedstep working on the Mini 1000 with 10.6.3 or 10.6.4? It worked on 10.6.0 - 10.6.2 but is noticeably absent in the later versions.

Failing that, can you suggest the best way to revert to 10.6.2? The fan is just to annoying for me to put up with!


LeMaurien19 said...

Here's the deal. The reason the 311 has SpeedStep is because its DSDT.aml has the required HPET and P-States edits worked in. That coupled with the right Mac model and enabling AppleIntelCPUPowerManagement make SpeedStep working.

The Mini 1000's DSDT.aml is not updated. I've sought help from fellow hackintoshers but it just won't budge.

I'm not sure if there's a new VoodooPower(Mini).kext version. The last one I tried (included in 10.6.2 for the Mini 1000 installer), doesn't work for 10.6.4.