Memory 8GB, DDR3
USB 2 USB 3.0, 1 USB 2.0
Chipset Intel HM77
Graphics Intel HD Graphics 4000
Audio Realtek AL269 (code 269vc)
Others ExpressCard/34, SD card reader
What is currently working:
USB3
HD4000 fully working /AGPM (VGA not tested)
Audio with AppleHDA & HDMI output
Powermanagement
Battery status with AppleSmartBattery.kext from Rehabman.
ExpressCard,SD Card reader not tested.
Step by step how to:
(based on the one I did for x220)
1) Bios setup
2) Creation of the boot disk.
3) Install from the boot disk.
4) Several reboots with the boot disk as boot loader.
5) Finishing (Kexts install + DSDT patch + Kexts (CpuPowerManagement & RTC) patch + Chameleon install + SSDT creation + Multibeast for wired card) & reboot without the boot disk. Please note that all kexts have to be installed in /System/Library/Extensions !
1)BIOS setup:
USB 3 ports will not work up to the installation of USBXHCIGeneric.kext.
For the installation phase USB3 has to be disabled in the bios.
Recommended: Disable the Virtualization technology
2) Creation of the boot disk:
Use the following link, all steps are really detailed. Of Course replace all LION references to MOUNTAIN LION references and format your Stick with MRB as partition scheme if you are going to install ML in // with windows.
Download OSInstall(MBR)+OSInstall.mpkg(10.8.x.GM).zip and apply instructions step 5 only here.
This is mandatory for two points: remove hardware check during the installation process & allow installation with MBR disk.
Use this Extra folder into which one I have added FakeSMC. This will avoid some bugs as FakeSMC emulates your laptop as a real mac and help for hardware detection.
This set of kexts files will also enable PS2 mouse / keyboard and cancel the CPUPowerManagement.
Install Chameleon on the usb boot disk, use the one provided in this link under: Post Install\Softs & scripts\
Copy the content of this archive at the root of your USB boot disk and put it the content of this zip-file which contain all you need for the post install.
Content:
- Chameleon install --> bootloader.
- Multibeast (MultiBeast 5.4.3) ---> which contains kexts driver for wired card & USB3.
- Kext Utility --> Creation of the kernel cache and driver installation tool.
- Chameleon Wizard --> Used to define the boot loader options.
- DSDT Editor --> To patch your DSDT
- SSDT creation utility.
- Set of kexts (AppleSmartBattery.kext, PS2 Ultranav, AppleHDA, FakeSMC and their plugins).
- AppleCpuPowerManagement patch script & AppleRTC patch script.
- DSDT (AppleHDA, battery, HD4000… fixes) & SMBIOS (used for Hardware definition for MacBookPro10,2)
Download OS X Combo Update 10.8.4 or latest and put the archive in post install folder.
Keep in mind that this USB boot disk will help you in case of problem with your mackintosh install. For example after putting a bad kexts or doing an update which leads to a Kernel Panic (KP).
ALWAYS keep this USB boot disk as it in a safe place.
3) Installation:
Boot on your USB boot disk (use the usb port at the left & closest to the LCD).
Select you langage.
Click on Utilities & Select Disk Util.
Format / partition your futur Hackintosh disk. Select option and select MBR as partition scheme if you need a dual install with windows.
Start the Install & reboot.
4) Several reboots with the boot disk as boot loader:
Let the USB boot disk plugged into the USB port located at left top (the closest one of the screen at the left).
Immediately after boot loader screen appears, select your freshly install as disk to be booted on.
Doing this will boot your new hackintosh install with all important kexts present on you boot disk (AppleCpuManagement disabled & PS2 Mouse / Keyboard activated)
Update the installation to the last OS X version:
-Open Post Install folder & double click on OSXUpdCombo10.8.X.dmg.
-Reboot with the usb boot disk as described step 4).
Install Packages HWSensors, select all options & reboot with the usb boot disk.
5) Finishing:
Open finder and open the folder "Post Install" located at the root of USB boot disk.
Install Chameleon without option (they will be defined with Chameleon wizard later). Just select a theme to be display at first stage of the boot loader and do not forget to select your hackintosh disk as disk destination.
Install Kext Utility, Chameleon Wizard, DSDT Editor into Applications folder.
Copy Extra folder from USB Boot disk /Post install/ to mackintosh disk /Extra. My DSDT can be used at first step , nevertheless I recommend you to create your own DSDT.aml.
Create your own SSDT.aml.
Go to Post Install/Scripts &..../ssdtPRgen-2013-08-09/ double click on ssdtPRGen
Copy iasl to /usr/local/bin
Open a terminal. Go to Post Install/Scripts &..../ssdtPRgen-2013-08-09/
sudo ./ssdtPRGen.sh
copy the ssdt_pr.aml located on the desktop to /Extra/SSDT.aml
The SSDT has a strong influence the CPU behavior. Create yours !
Keep your terminal open and patch RTC with the following command:
- cd /System/Library/Extensions/AppleRTC.kext/Contents/MacOS/
- sudo perl -pi -e 's|\x75\x30\x89\xd8|\xeb\x30\x89\xd8|' AppleRTC (for Mountain Lion)
- sudo perl -pi -e 's|\x75\x2e\x0f\xb6|\xeb\x2e\x0f\xb6|' AppleRTC (for Yosemite)
Keep your terminal open and patch your AppleIntelCpuPowermanagement Kext :
- cd /Volumes/name of your boot disk/Post Install/xxxxx/AICPMPatch/
- sudo perl AICPMPatch.pl /System/Library/Extensions/AppleIntelCPUPowerManagement.kext/Contents/MacOS/AppleIntelCPUPowerManagement --patch
Go to Post Install\Softs & scripts\Multibeast...\
Start Multibeast & select the following options:
Lunch Kext Utility, enter your password and wait for finishing. The kernel cache is created. Go into the folder /Post Install/Kexts. Select all kexts one by one and drag & drop them into Kext Utility interface. This will install theses kexts and recreate the Kernel Cache (used to fast up to boot process). Do it one after one.
DSDT patches to be applied to create your own:
1) DTGP Method (use for almost all patches)
Code: Select all
Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, Buffer (0x10)
{
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
/* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
}))
{
If (LEqual (Arg1, One))
{
If (LEqual (Arg2, Zero))
{
Store (Buffer (One)
{
0x03
}, Arg4)
Return (One)
}
If (LEqual (Arg2, One))
{
Return (One)
}
}
}
Store (Buffer (One)
{
0x00
}, Arg4)
Return (Zero)
}
Code: Select all
Device (PNLF)
{
Name (_HID, EisaId ("APP0002"))
Name (_CID, "backlight")
Name (_UID, 0x0A)
Name (_STA, 0x0B)
}
Code: Select all
Device (HPET)
{
Name (_HID, EisaId ("PNP0103"))
Name (ATT3, ResourceTemplate ()
{
IRQNoFlags ()
{0}
IRQNoFlags ()
{8}
Memory32Fixed (ReadWrite,
0xFED00000, // Address Base
0x00000400, // Address Length
)
})
Name (ATT4, ResourceTemplate ()
{
})
Method (_STA, 0, NotSerialized)
{
Return (0x0F)
}
Method (_CRS, 0, NotSerialized)
{
Return (ATT3)
}
}
To be added just before Device (VID) (have a look to my DSDT to know exactly where)
Code: Select all
Device (IGPU)
{
Name (_ADR, 0x00020000)
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"device-id",
Buffer (0x04)
{
0x66, 0x01, 0x00, 0x00
},
"AAPL,ig-platform-id",
Buffer (0x04)
{
0x03, 0x00, 0x66, 0x01
},
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
Code: Select all
Device (HDEF)
{
Name (_ADR, 0x001B0000)
Name (_S3D, 0x03)
Name (RID, Zero)
Name (_PRW, Package (0x02)
{
0x0D,
0x04
})
Method (_PSW, 1, NotSerialized)
{
Noop
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x06)
{
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
},
"layout-id",
Buffer (0x04)
{
0x1C, 0x00, 0x00, 0x00
},
"PinConfigurations",
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}
}
You have first to apply this patch.
And correct your DSDT with the following content (what you should have somewhere in your DSDT / have a look to mine for comparison):
Code: Select all
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0xA0),
BRC0, 8,
BRC1, 8,
BFC0, 8,
BFC1, 8,
SBAE, 16,
SBRS, 16,
BAC0, 8,
BAC1, 8,
BVO0, 8,
BVO1, 8,
SBAF, 16,
SBBS, 16
}
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0xA0),
, 15,
SBCM, 1,
SBMD, 16,
SBCC, 16
}
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0xA0),
BDC0, 8,
BDC1, 8,
BDV0, 8,
BDV1, 8,
SBOM, 16,
SBSI, 16,
SBDT, 16,
BSN0, 8,
BSN1, 8
}
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0xA0),
SBCH, 32
}
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0xA0),
SBMN, 128
}
Field (ECOR, ByteAcc, NoLock, Preserve)
{
Offset (0xA0),
SBDN, 128
}
Mutex (BATM, 0x07)
Method (GBIF, 3, NotSerialized)
{
Acquire (BATM, 0xFFFF)
If (Arg2)
{
Or (Arg0, One, HIID)
Store (SBCM, Local7)
XOr (Local7, One, Index (Arg1, Zero))
Store (Arg0, HIID)
If (Local7)
{
Multiply (B1B2 (BFC0, BFC1), 0x0A, Local1)
}
Else
{
Store (B1B2 (BFC0, BFC1), Local1)
}
Store (Local1, Index (Arg1, 0x02))
Or (Arg0, 0x02, HIID)
If (Local7)
{
Multiply (B1B2 (BDC0, BDC1), 0x0A, Local0)
}
Else
{
Store (B1B2 (BDC0, BDC1), Local0)
}
Store (Local0, Index (Arg1, One))
Divide (Local1, 0x14, Local2, Index (Arg1, 0x05))
If (Local7)
{
Store (0xC8, Index (Arg1, 0x06))
}
Else
{
If (B1B2 (BDV0, BDV1))
{
Divide (0x00030D40, B1B2 (BDV0, BDV1), Local2, Index (Arg1, 0x06))
}
Else
{
Store (Zero, Index (Arg1, 0x06))
}
}
Store (B1B2 (BDV0, BDV1), Index (Arg1, 0x04))
Store (B1B2 (BSN0, BSN1), Local0)
Name (SERN, Buffer (0x06)
{
" "
})
Store (0x04, Local2)
While (Local0)
{
Divide (Local0, 0x0A, Local1, Local0)
Add (Local1, 0x30, Index (SERN, Local2))
Decrement (Local2)
}
Store (SERN, Index (Arg1, 0x0A))
If (Zero)
{
Or (Arg0, 0x06, HIID)
Store (SBDN, Index (Arg1, 0x09))
Or (Arg0, 0x04, HIID)
Name (BTYP, Buffer (0x05)
{
0x00, 0x00, 0x00, 0x00, 0x00
})
Store (SBCH, BTYP)
Store (BTYP, Index (Arg1, 0x0B))
Or (Arg0, 0x05, HIID)
Store (SBMN, Index (Arg1, 0x0C))
}
}
Else
{
Store (Ones, Index (Arg1, One))
Store (Zero, Index (Arg1, 0x05))
Store (Zero, Index (Arg1, 0x06))
Store (Ones, Index (Arg1, 0x02))
}
Release (BATM)
Return (Arg1)
}
Method (GBST, 4, NotSerialized)
{
Acquire (BATM, 0xFFFF)
If (And (Arg1, 0x20))
{
Store (0x02, Local0)
}
Else
{
If (And (Arg1, 0x40))
{
Store (One, Local0)
}
Else
{
Store (Zero, Local0)
}
}
If (And (Arg1, 0x0F)) {}
Else
{
Or (Local0, 0x04, Local0)
}
If (LEqual (And (Arg1, 0x0F), 0x0F))
{
Store (0x04, Local0)
Store (Zero, Local1)
Store (Zero, Local2)
Store (Zero, Local3)
}
Else
{
Store (Arg0, HIID)
Store (B1B2 (BVO0, BVO1), Local3)
If (Arg2)
{
Multiply (B1B2 (BRC0, BRC1), 0x0A, Local2)
}
Else
{
Store (B1B2 (BRC0, BRC1), Local2)
}
Store (B1B2 (BAC0, BAC1), Local1)
If (LGreaterEqual (Local1, 0x8000))
{
If (And (Local0, One))
{
Subtract (0x00010000, Local1, Local1)
}
Else
{
Store (Zero, Local1)
}
}
Else
{
If (LNot (And (Local0, 0x02)))
{
Store (Zero, Local1)
}
}
If (Arg2)
{
Multiply (Local3, Local1, Local1)
Divide (Local1, 0x03E8, Local7, Local1)
}
}
Store (Local0, Index (Arg3, Zero))
Store (Local1, Index (Arg3, One))
Store (Local2, Index (Arg3, 0x02))
Store (Local3, Index (Arg3, 0x03))
Release (BATM)
Return (Arg3)
}
To be created/found
Reboot without USB boot disk.
Enable USB3 in the bios.
Enable Virtualization.
Update 1
AppleSmartBatteryManager without debug info.
Click here.
Update 2
Guide updated from differents experiences
Pics added.
Links/Packages updated.
Update 3
Get the bluetooth working.
Go to /S/L/E/
right click on IOBluetoothFamily.kext
Go to Content/Plugins
Right click on Broadcom...kext
Open Info.plist
Go to the section IOKitPersonalities.
Scroll down to the last entry (That was Microsoft or USB... before modification.
Rename the entry to x230 for example. Modify the idProduct & idVendor to the one you can see below.
Copy the kext IO80211Family.kext to your desktop. Use Kext Utility to install it.
Reboot.
If you get a pop-up with no keyboard detected. This is not a bug. This is option to unstick into Bluetooth preferences in case of do not have any keryboard or bluetooth mouse.
Update 4: OS X Combo Update 10.8.5
Download the combo update.
Launch Kext Utility
Drag and drop Nullcpupowermanagement & the last GenericUSBxhci.
Copy the binary xhcdump to /usr/local/bin
Start the Combo Update.
Reboot with -x
Start Multibeast and reinstall AppleACPIPlatform 10.8.1 Rollback.
Patch AppleIntelCpuManagement & IOBluetoothFamily.kext as described above.
Remove the kext /S/L/E/Nullcpupowermanagement.kext
Start Kext Utility. Drag and drop patched version of AppleHDA & AppleSmartBatteryManager.
Reboot without any option.
Update 5:OS X Mountain Lion 10.8.5 Supplemental Update
Install from AppStore.
Reboot.
Install AppleHDA patched with Kext Utility
Reboot
Update 6:AppleHDA all functionnalities
Install this kext.
And update your DSDT with:
Code: Select all
Device (HDEF)
{
Name (_ADR, 0x001B0000)
OperationRegion (HDAR, PCI_Config, 0x4C, 0x10)
Field (HDAR, WordAcc, NoLock, Preserve)
{
DCKA, 1,
Offset (0x01),
DCKM, 1,
, 6,
DCKS, 1,
Offset (0x08),
, 15,
PMES, 1
}
Method (_DSM, 4, NotSerialized)
{
Store (Package (0x08)
{
"built-in",
Buffer (One)
{
0x00
},
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
},
"layout-id",
Buffer (0x04)
{
0x01, 0x00, 0x00, 0x00
},
"PinConfigurations",
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
}