Jump to content

[Guide] AIO Guides For Hackintosh

Recommended Posts

How to check your CPU’s speedstep


DPCI Manager


Open DPCI Manager, click P States, enter your password and hit OK at any errors prompted, then you can check your CPU’s speedstep. You will have to wait for a few minutes to see all possible steps, >3 is fine.



Piker's AppleCPUPowerManagementInfo

This is a kext exists solely for the purpose of checking speedstep, you can run the kext without having to install it by following these steps:


Step 1: Download the?kext here, unzip and put the kext on your desktop


Step 2: Repair the kext’s permission and load it by type these commands in Terminal:

cd ~/Desktop/
sudo chown -R root:wheel ./AppleIntelCPUPowerManagementInfo.kext
sudo chmod -R 755 ./AppleIntelCPUPowerManagementInfo.kext
sudo kextload ./AppleIntelCPUPowerManagementInfo.kext

Step 3: Open Console, select All Messages and type AICPUPM in the Filter box, wait for a few minutes



Step 4:?When the steps won’t increase any further, unload the kext by typing this command in Terminal:

sudo kextunload AppleIntelCPUPowerManagementInfo.kext

Share this post

Link to post
Share on other sites

Sync time between Windows and OS X


After dualbooting or multibooting successfully, the time information between OS X and Windows will not match each other. To fix this:

  • Boot into OS X, set the timezone and time correctly

  • Boot into Windows, do not attempt to update time by using “Adjust Date/Time”. Open Registry Editor

  • Locate?HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation. Right click in the blank space of the right pane, select New > DWORD (32-bit) value, name it RealTimeIsUniversal. Double click the newly created file and change the value to 1. Save and reboot into OS X
  • Wait 1-2 minutes, then reboot into Windows. Now the time information between the 2 OS is matched

Share this post

Link to post
Share on other sites

How to fix iCloud/iMessage/Facetime on your Hackintosh


In order for these services to work, you need to do the following things:


Working NVRAM

For Chameleon: You need FileNVRAM.dylib installed in /Extra/modules. Download it?here. Note that there are 2 versions: 1.1.2 and 1.1.3, you should try both.

For Clover UEFI: You need EmuVariableUEFI-64.efi installed in /EFI/Clover/drivers64UEFI and selected “Install RC scripts to target partition” when installing the bootloader


Set your Ethernet to en0

You need an ethernet device that is recognized by OS X and set it to en0. Use DPCI Manager to check it ( inside Hackintosh Vietnam Tool )



By default all network devices ( such as ethernet, wireless, smartphone’s Hotspot ), will be set to en0, en1, en2, … by which device is recognized first. You need to reset the network configuration in order to set ethernet to en0:


Go to /Library/Preferences/SystemConfiguration/ and delete these files/folders:

  • CaptiveNetworkSupport

  • Com.apple.airport.preferences.plist

  • Com.apple.eapolclient.configuration.plist

  • NetworkInterfaces.plist

Go to System Preferences > Network, select all available connections and hit the Minus button to delete them, then hit Apply. Reboot


Go to System Preferences > Network, hit the Plus button to add the devices back, but be sure to add Ethernet first


Open DPCI Manager to check if the Ethernet is set to en0

Note that is you are using Macbook Air SMBios, setting Wireless card to en0 will work just like setting Ethernet to en0


3. Verify your system with Apple system


You can use one of following methods:


3.1 Use Information from a system with working iMessage/Facetime


Original method is written by?fusion71au. This is my simplified guide:


1/ First you need imessage_debug?http://www.insanelym...imessage-debug/?or you can run in HVT (Tools > iMessage Debug).


2/ Find a hackintosh or real Mac system with working iMessage/FaceTime. Run the tool on that machine and save the txt file.


3/ You will need BoardSerialNumber and ROM from the output txt file to inject your system. For example, if in txt file you have:

BoardSerialNumber: CK148614DB6F940D2
ROM: 61d6761129f2

  • For Chameleon, type the following commands in terminal:

sudo nvram 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM=%61%d6%76%11%29%f2

sudo nvram 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB=CK148614DB6F940D2

  • For Clover, inject the?BoardSerialNumber?to?SMBIOS > BoardSerialNumber?and?ROM?to?RT Variables > ROM.?(

Note: You can also inject BoardSerialNumber to RT Variables > BoardSerialNumber, but it's deprecated and not recommended.






3.2 Add credit card

Open Appstore or iTunes on your Hackintosh, login to your account and add your credit cards. After that you can login to iCloud/iMessage/Facetime. You can remove your credits card after successfully activating the services.


3.3 Call Apple Support

If you don't have a valid credit card or it even does not work for you, you can call Apple Support. This is Miztorr's guide:


First, you’re gonna need a real serial number, not a fake one, and I actually found a post explaining just how to do that, for more information just visit this?link, try rebooting when done.


If you get iMessage to work after rebooting, then congratulations! You got iMessage working! If not, read on.


Second, you’re gonna need to call Apple support, you can call them on the number corresponding to your country or you can simply use Skype or magicJack to call them on their US customer support number, ?more info?here. In my case, the answer machine picked up the phone, asking me to provide it with the device’s model and serial number, just ignore and it should redirect you to the director of the call centre or another person at Apple support.


Now, he’ll ask you to describe the issue, tell him the following:




I’m calling because I’m having problems with activating iMessage on my [insert Mac model], it’s asking me to call Apple support and provide them with some customer code.


They will probably ask you to provide them with your name, a callback number (if you’re calling from outside the US you don’t have to, just tell them), the serial number and your Apple ID.


Once you’re done, all you have to do is quit out of iMessage/FaceTime and open it again, and you should be able to login and use it normally.



Share this post

Link to post
Share on other sites

DSDT/SSDT: Basic knowledge

What is DSDT/SSDT?
The Advanced Configuration and Power Interface (ACPI) defines a large number of tables that provide the interface between an ACPI-compliant operating system and system firmware. These allow description of system hardware in a platform-independent manner in ACPI Machine Language (AML). The DSDT (Differentiated System Description Table) is the main table in the ACPI part of a computer's BIOS, defines most of main devices in system. The SSDT (Secondary System Description Table) has same structure with DSDT, but it's usually smaller and defines some specific devices.
By default, bootloaders will get all OEM tables from BIOS/UEFI and transfer it to OSes.


Why do we have to patch DSDT/SSDT on hackintosh?
Unlike Windows or Linux, OS X has an incomplete ACPI implementation which supports only a subset of DSDT in Mac models only. On Hackintosh system, some devices are not defined compatible with OS X, and they can't work correctly.



Patching the DSDT allows the user to better support their hardware.

Most bootloaders allow user to replace the OEM table in BIOS/UEFI by tables defined in .aml files.


Dumping original DSDT/SSDT from your system

Before patching your DSDT/SSDT you need to get them under the AML format ( ACPI Machine Language ). There are many ways to get them:


Run RW-Everything, go to Access > ACPI Tables, select DSDT tab, Save as Binary, choose All File (*.*) in “Save as type” section add .aml extension to the file.
Repeat with all remaining SSDT tables


Run these commands:

cd ~/Desktopsudo apt-get updatesudo apt-get install acpidumpsudo acpidump > acpidump.outsudo acpixtract -a acpidump.out

Linux will dump all available DSDT/SSDT tables to your Desktop. You just need to look for the DSDT and SSDTs, rename the extension from .dat to .aml (AML) and save it onto your USB.

OS X (Only Clover bootloader)

At Clover entry menu, hit F4, then boot into OS X, all available ACPI table will be dumped into /EFI/Clover/ACPI/origin/

Decompile original DSDT/SSDT

All DSDT and SSDT tables can’t be edited directly, we need to recompile it to a .dsl text format in order to edit. Since DSDT and SSDTs have a connection with each others, you need to have all of them to recompile
Download latest iasl ( Intel’s compiler and decoder ), unzip and copy the iasl file to Desktop,copy all DSDT/SSDTs in .aml extension to Desktop. Open Terminal and run these commands:

cd ~/Desktop./iasl -da *.aml

All DSDT/SSDTs will be decompiled in .dsl text format.

Note that if the above commands gives you error, it’s because of some SSDT tables have duplicate names. Check the log and delete the SSDT which gives the error.

Add edited DSDT/SSDTs to the bootloader

After editing and compiling it from .dsl to .aml, you can get the bootloader to use them by putting them in the right directory:

Chameleon: /Extra
Clover: /EFI/Clover/ACPI/patched

Note: If you have multiple SSDT that is needed to be loaded, rename them as: SSDT.aml, SSDT-1.aml, SSDT-2.aml, … and so on.

Bootloader will “drop” all original DSDT from the system to load the edited ones when booting up. For dropping SSDT, you need to select DropSSDT=True ( Chameleon ) or Drop OEM SSDT=True ( Clover )?

Share this post

Link to post
Share on other sites

DSDT/SSDT: Edit with MacIASL


After?dumping and decompiling DSDT/SSDTs to .dsl text format, you need to use MacIASL to edit them and compile them into .aml format.

MacIASL’s main features:

  • Automatically dumping and decompiling system’s ACPI tables: File > New from ACPI > choose table
  • Show bugs in tables with Compile button
  • Apply patches
  • Compile into .aml format: File > Save as > File format: ACPI Machine Language Binary

Adding DSDT repos:


There are many DSDT patch repos on the internet, you just need to add its address to MacIASL in order to access them ( require internet connection ). To add a repo, select MacIASL > Preferences > Source > click the “ + “ button, add the name and URL to the repo.


Here are some useful repos:

  • PJALM Desktop patch:
  • HP Probook patch:
  • Laptop patch:


Fix errors after decompiling

You may get errors when compiling the decompiled DSDT/SSDT DSL files. This happens because of these:


Use the incorrect ACPI version to compile

Some systems use ACPI 4.0 while some use ACPI 5.0 which leads to errors ( i.e use ACPI 5.0 to compile a 4.0 DSDT ). To determine which ACPI version is compatible with your DSDT, try compiling with both, then use the one that give you less errors.


To switch ACPI 4.0/5.0 with MacIASL, go to Preferences and select the version you want, then compile again.


Missing information when compiling


They're common problem on systems with multiple SSDTs , especially Haswell systems. A DSDT/SSDT file can use the Object/Methods which are defined in other DSDT/SSDT files, and decompiler can't recognize right function structure if you only decompile 1 file at a time. You have to decompile dsdt/ssdt with reference to other dsdt/ssdt files. Follow?this guide to decompile them


Some common DSDT/SSDT errors


Syntax errors

Some syntax errors like? _PLD, TNOT, FPED, etc… can be patched by using patches in Rehabman’s DSDT repo



Incorrect syntax identification


Some syntax can’t be identified when compiling, because they do not exist in any DSDT/SSDT, which can cause some errors related to function structure:



In the above image, the error is in those lines:

Return (MDBG)Arg0

Why does this happen? The correct structure for MDBG is a method with 1 argument, but it's not defined in any .aml files, so the IASL just GUESS it as a VARIABLE instead of METHOD. We can fix it by changing it to correct structure:

Return (MDBG(Arg0))

However, you can just remove both lines and it's still fine, and even better! Why? As I explained, the cause of the error is that the MDBG method is found in any DSDT/SSDT, and any call to that MDBG in real time will FAIL, which leads to functions containing MDBG will FAIL too!


Incorrect OperationRegion structure


This error is the result of above errors, which lead to wrong decompiled structure of OperationRegion:



We have to reconstruct it:

OperationRegion (VAR1, VAR2, VAR3, VAR4)Field (VAR1, VAR2, VAR3, VAR4){?????? ....}

For example, to fix the error in above image:

OperationRegion (HRPE, SystemMemory, \_GPE.MMTB, 0x04)Field (HRPE, DWordAcc, Lock, Preserve){?????? VDPC,?? 32}

Forget about warnings and remarks, they won't affect much.

Share this post

Link to post
Share on other sites

DSDT/SSDT: Some popular DSDT patches


Here are some popular patches that can be applied on most systems:

- Extract and decompile OEM DSDT
- Fix all errors by MacIASL
- Add RehabMan Laptop patch Repo

To apply one patch, click patch button in MacIASL, select the corresponding patches on the left column then press Apply. You may need to use Compile button to check for errors.

Intel Graphics Patches [2.01] -> [2.07]

Inject ig-platform-id, dual-link, hda-gfx to Intel HD graphics devices in DSDT. After using the patch, you don't need to use boot flag at boot anymore.

Basic brightness fix [2.09]

Add basic brightness device to system.

Advanced Brightness fix [2.10] -> [2.11]

These are brightness fixes for HD3000/HD4000/HD4400/HD4600, and use with RehabMan's ACPIBacklight.kext. It fixes the uneven brightness problem of those Intel HD, enable smooth transition, fade effect when turn on/off display.

Before applying those fixes, you have to rename GFX0 device to IGPU.

Rename GFX0 to IGPU [2.12] -> [2.13]

Rename IntelHD device in DSDT from GFX0, VID to standard OS X name: IGPU. It will load AGPM (Apple Graphics Power Management) to enable power management and speedstep for those onboard graphics.

Note that those DSDT patches sometimes can rename wrong external graphics devices and create compile errors. If you have this problem, try to identify Intel HD device in DSDT and rename them manually. GFX0 or VID for Intel HD is usually direct child of PCI device, while external graphics devices is usually grandchild of PCI0.
For example:

\_SB_.PCI0.GFX0.TCHE -> IntelHD, rename to \_SB.PCI0.IGPU.TCHE\_SB_.PCI0.RP05.PEGP.GFX0 -> Not IntelHD, don't rename\_SB_.PCI0.PEGP.GFX0 -> Not IntelHD, don't rename

USB (EHCI) Patches [3.1] -> [3.4]

Inject apple power information to USB 2.0 and USB 3.0 ports in DSDT, it will help OS X to manage power of those devices, and can fix sleep problems related to USB devices.

IRQ Fix [7.01]

Remove IRQ in some devices to prevent IRQ conflicting, which can cause some devices like FireWire, USB, Audio not working.

SMBUS [7.02]

Name smbus device to SMBUS, fix some warning message.

RTC FIx [7.03]

Reduce the length of RTC device, prevent OS X writing values to device. It can fix CMOS reset problem on sleep, shutdown, restart.

Shutdown Fix v2 [7.05]

Remove all original call statements when you shutdown, it can help some system to shutdown completely.

HPET Fix [7.06]

Ensure all functions in HPET devices to return value successfully, it can help some system which can't load HPET properly in OS X.

OS Check Fix [7.07]

Some system limit the function of devices if the current booting OS X is old. The fix will make your system think OS X is Windows Vista, and enable some advanced funtions.

AC Adapter Fix [7.08]

Help loading AppleACPIACAdapter to manage AC.

Add MCHC [7.09]

Same as SMBUS patch

Fix _WAK Arg0 v2 [7.11]

Set Arg0 = 3 when calling _WAK function. It can help fixing unstable wake from sleep in OS X.

Fix PNOT/PPNT [7.13]

PNOT/PPNT functions can contains some CPU call in OEM SSDT. If those OEM SSDT tables are dropped by bootloader, it can make those PNOT/PPNT fail, and functions calling PNOT/PPNT fail too. The patch will clear the content of those PNOT/PPNT and help other function operate correctly.

Add IMEI [7.14]

Same as SMBUS patch

Audio Layout 12 [8.1]

Set layout id to Audio device to load patched AppleHDA. You can replace 12 number in the patch to your desired layout id before applying the patch.
For example, default is layout 12

"layout-id", Buffer() { 12, 0x00, 0x00, 0x00 },\n

If you want to use layout 28:

"layout-id", Buffer() { 28, 0x00, 0x00, 0x00 },\n

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.


Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.