CPU Detection in Snow Leopard, Chameleon RC3-ddj0.3, EP45-EXTREME Pack

Firstly Chameleon RC3 with PC_EFI 10.3 ddj0.3. My compilation of this boot-loader includes both Chameleon RC3, PC_EFI 10.3 from netkas and the CD drivers included from PC_EFI 10.2…which netkas excluded from the 10.3 release. The source and binary is available:

Chameleon-2.0-RC3-r658-PCEFIV10.3-ddj0.3-src

Secondly, my new version of the kext pack for a Gigabyte GA-EP45-EXTREME is available. This includes the CPU Injector that I will go into next. This pack includes EFI strings and DSDT for a GA-EP45-EXTREME with two video cards plugged in. However, it may also work with just one card….in which case it’s “two-card ready”. This also includes the Bonjour fix.

GA-EP45-EXTREME_SL_Pack_0.3

Recently I’ve been trying to make my hackintosh as Mac-like as possible. One thing that always bugged me was the OSX would detect my CPU as Unknown, even though I had an Intel processor. There are several “hacks” out there on the web that tell you to edit the About This Mac strings or the System Profiler strings, however, these are purely cosmetic, the actual operating system still thinks your CPU is Unknown. Proof of this is the Microsoft Silverlight installer. Without hacking the installer, the installer will not detect your CPU and will fail to install. This cures such problems by injecting a “cpu-type” into IORegistry.

The geeky stuff: I did this by adapting the NVinject source and injecting values into the IORegistry. The exact value is a property called “cpu-type” under “IOService:/AppleACPIPlatformExpert/cpus”. From my research, I believe this can actually be done by injecting values into the SMBIOS (at least I think so), however, my few attempts at modifying Chameleon RC3 failed. If anyone from the Chameleon team is reading this, then maybe they can shed some light on the situation… If Chameleon supports injecting a “ProcessorType” SMWORD into Table Structure 131, OSX should pick up on this value and automatically insert it into the IORegistry and there would be no need for this injector. See: http://opensource.apple.com/source/AppleSM…AppleSMBIOS.cpp for details (search for cpuType and cpu-type)

But for now, here’s the injector to make it all work… CPUInjector.kext

To get this to work you will need to modify the Info.plist inside the kext.

You will need to open/edit Info.plist and look for the following block

<key>entriesToAdd</key>
<dict>
<key>cpu-type</key>
<data>AQU=</data>
</dict>

You need to modify the text in between the <data></data> tags depending on which processor you have.
These values are as follows (The table is incomplete, they might not work, please experiment)
CPU String <data></data> cpu-type Hex Comments
Intel Core Solo ?? ??
Intel Core Duo ?? ??
Intel Core 2 Solo ?? ??
Intel Core 2 Duo AQM= 0103 Use this for Core2 Duo CPUs
Single-Core Intel Xeon ?? ??
Dual-Core Intel Xeon ?? ??
Quad-Core Intel Xeon AQU= 0105 Use this for Core2 Quad and Quad Extreme CPUs
PowerPC ?? ??
PowerPC 601 ?? ??
PowerPC 602 ?? ??
PowerPC 603 ?? ??
PowerPC 603e ?? ??
PowerPC 603ev ?? ??
PowerPC 604 ?? ??
PowerPC 604e ?? ??
PowerPC 620 ?? ??
PowerPC G3 ?? ??
PowerPC 750 ?? ??
PowerPC G4 ?? ??
PowerPC 7400 ?? ??
PowerPC 7450 ?? ??
PowerPC G5 ?? ??
PowerPC 970 ?? ??

You can also experiment with the values by using this converter: http://home2.paulschou.net/tools/xlate/
For example, typing 0105 into the hex box will give you AQU= I have seen cpu-type 0101 (AQE=) around also, however, I don’t know what CPU it is for.

If you have a Core i7 machine, and you get this to work…you can also add:
<key>interconnect-speed</key>
<data>gA6kXQEAAAA=</data>

This will show the Interconnect Speed in System Profiler.

Examples:
Core2 Duo CPUs
<key>entriesToAdd</key>
<dict>
<key>cpu-type</key>
<data>AQM=</data>
</dict>

Core2 Quad/Quad Extreme CPUs (Will show as Quad Core Xeon, Apple don’t sell Core2 Quad CPUs!)
<key>entriesToAdd</key>
<dict>
<key>cpu-type</key>
<data>AQU=</data>
</dict>

Core i5/i7 CPUs (Will show as Quad Core Xeon, Apple don’t sell i7 CPUs!)
<key>entriesToAdd</key>
<dict>
<key>cpu-type</key>
<data>AQU=</data>
<key>interconnect-speed</key>
<data>gA6kXQEAAAA=</data>
</dict>

DOWNLOAD 1.1

SOURCE 1.1

PROOF PIC

,

 

6 Comments

  • bob haskins says:

    looks like something’s missing here – you’re just repeating “AQU=” for each example…

  • bob haskins says:

    ah nevermind, i see what you mean :) my fault, thanks for the kext!

  • Pete K says:

    Modified the CPU type to AQM, installed the kext , and it works first time. Impressive!

    I see that there’s a modified version of chameleon which does the same thing, but having just got my Snow install working nicely, this is a better fix for me.
    Thanks

  • DrEcho says:

    Modify like this : ?

    cpu-type

    AQU= 0105

    or like this ?

    cpu-type
    AQU= 0105

    thanks

  • morf says:


    DrEcho:

    Modify like this : ?
    cpu-type
    AQU= 0105
    or like this ?
    cpu-type
    AQU= 0105
    thanks

    No hexadecimal.

 

Leave a comment