Jump to content
Welcome to InsanelyMac Forum

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.


DSDT — What is it and how do I get it?

1 post in this topic

Recommended Posts



ACPI (Advanced Configuration and Power Interface) is an open industry specification co-developed by Hewlett-Packard, Intel, Microsoft, Phoenix, and Toshiba that defines hardware and software interfaces that enable OS-directed configuration and Power Management (OSPM) to enumerate and configure motherboard devices, and manage their power.


The tables allow description of system hardware in a platform-independent manner, and are presented as either fixed-formatted data structures or in AML. The main AML table is the DSDT (differentiated system description table)

The DSDT is the largest and most important table because this is where the motherboard devices are described. As the DSDT, along with other ACPI tables, is stored in the BIOS only on-board hardware is described. The goal is to bypass this often faulty table because of optimization for Windows by a custom one where the declarations are adjusted to the needs of Mac OS X in order to maximize compatibility.


Use for Hackintoshes

By loading an edited DSDT via the Chameleon boot loader instead of the factory one, the following things can be achieved:

  • faking device-ids via DSDT can replace legacy/injector kexts
  • updates may disable modified or legacy/injector kexts but cannot disable DSDT patches
  • DSDT edits can enable sleep, native speedstepping
  • extensive edits can boost the boot process

Do i really need it?

No, to get a functional Hackintosh you don't need a DSDT. But having one can make your system running more stable, lighter (editing this one table replace many extra files).

How to extract the DSDT

Mac OS X:
Be sure no custom/modified DSDT is injected yet.

Script by zhell.
Run in terminal. The script extracts all ACPI tables to /users/your username/ACPI
There are several tools like DSDTSE, Chameleon Wizard.


Clover bootloader - Using the GUI


In Clover GUI, press F4 button, and then boot your OS X normally.

When OS X is already initialized, mount/open the EFI partition, and you can find all your ACPI tables in /EFI/Clover/ACPI/origin/

Linux - via Terminal and Live-CD/DVD:

cat /proc/acpi/dsdt > dsdt.aml

AIDA64 or similar tools


.dsl / .aml — Compile and Decompile

When extracted from the system the DSDT and the other tables are in the ACPI Machine Language (File extension .aml).
To make edits, the DSDT needs to be decompiled (File extension .dsl).

The program for compiling and decompiling ACPI tables is called iASL. The latest version for Mac OS X can be downloaded here.

Compiling Errors:

Using newer iASL versions than the original DSDT was compiled with will often cause compiling errors. To fix the errors and adapt the new code guidelines also check this topic.

Editing DSDT

DSDT.dsl files can be edited with any text editor.

We will talk about DSDT patches in a later post in this topic but this can take some time because we want to give detailed explanations and background info to make the patches available for hopefully any hardware.

A good method is using Textmate and selecting C++ markup highlighting.


There are also utilities that include the iasl compiler like:

MaciASL - Is the most actual DSDT editor.


After you applyed the patches, you need save your DSDT as .aml - E.g: DSDT.aml

Why DSDT files by others can cause problems

Even small hardware differences will result in different tables and can cause problems. To be sure a that a modified DSDT is compatible with your system, compare the two files.

Following lines can cause problems:

OperationRegion (BIOS, SystemMemory, xx(some hex value)xx
OperationRegion (^LPCR, SystemMemory, xx(some hex value)xx

If these values are different in your DSDT, replace the hex values on the other modified DSDT with those from your own.

Verifying that the custom DSDT is loaded:

First be sure your file is named DSDT.aml and placed in /DSDT.aml or /Extra/DSDT.aml.
You made / have a custom DSDT and see no changes and your not sure that the DSDT is used and injected by the boot-loader.

Here are some ways to check the loading of a DSDT:


Use bdmesg.

bdmesg ships with the Chameleon boot loader and goes in /usr/bin. bdmesg can be run from Terminal after startup so that you may examine what Chameleon is doing while it boots your Hackintosh.

Excerpt from bdmesg output, last line shows DSDT.aml loading:

Loading Darwin 10.7
Loading kernel cache /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache
Read HFS+ file: [hd(0,2)/System/Library/Caches/com.apple.kext.caches/Startup/kernelcache] 4096 bytes.
Read HFS+ file: [hd(0,2)/System/Library/Caches/com.apple.kext.caches/Startup/kernelcache] 18150026 bytes.
Read HFS+ file: [hd(0,1)/Extra/DSDT.aml] 22762 bytes.

Extract your DSDT on OS X. If you get your modified DSDT, that means it's loaded.

Resources for DSDT tweaking

ACPI Specification
Our DSDT forum
Original Apple System Dumps for reference

1.0 first draft by iLeopod 28.03.2012
2.0 edited version with contributions by Gringo Vermelho
3.0 editing completely broke formatting, all code stripped from post. Minor fixes to spelling and grammar

Edited by Allan
Updated 04/29

Share this post

Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By onlyJRevenge
      Buonasera ragazzi,
      grazie all'aiuto di questo forum, sono riuscito qualche mese fa a configurare il mio portatile e ne sono pienamente soddisfatto. Ora mi è sorto un dubbio, per poter utilizzare la porta HDMI esterna per collegare il portatile ad un monitor cosa dovrei fare? Ho letto che c'è la possibilità che questo non possa essere possibile, per via del fatto che ho disabilitato la GTX950M e di conseguenza essa portava il segnale "all'esterno". A voi cosa risulta? Riuscireste a darmi una mano?
      Grazie anticipatamente.
    • By kylon

      Cloud ACPI Editor
      Beta 2 coming soon..
      Cloud ACPI Editor is simple Web Editor to create and edit ACPI tables.
      It uses session variables to store the files.
      No changes will be lost on page reload.
      You can host it at home and add custom iASL binaries (see README).
      *This is still a WIP - expect bugs*
      Feel free to reply if you find broken stuff or you have a question!
      Create a new file Load .dsl and .aml files Load multiple files Edit files Compile Show compiler output Settings  Missing/Issues:
      Namespace (Tree) generator Patches Menu Code is not optimized Syntax Highlight Other stuff  
      Sources: here
    • By Pink Waters
      Hi guys, I have my dsdt.aml extracted from windows.
      I compiled just fine no errors, but when I try to add audio in it following this guide I get a lot of errors

      I am running High Sierra
      my audio is ALC889

      The errors are attached

    • By uzmi
      Para los usb 3 de mi placa uso un inyector USB_Series8_Injector.kext modificado para mis puertos.
      Deseo eliminar dicho inyector poniendo los datos de los puertos en el DSDT directamente pero no se si es posible ni como hacerlo.
      Tengo dos instalaciones en dos discos con 10.13.3 
      Uno con un DSDT basado en el que crea Clover y luego modificado para mi equipo.
      Otro con un DSDT basado en el de Pikeralpha y luego modificado para mi equipo
      ¿Podrían echarme una mano?
      Dejo el inyector o un SSDT-UIAC con los datos de los puertos.
      Muchas gracias.
    • By quattrofx
      Hi to all,
      I just wont to give inough informations on one place for all the people with same Hardware with
      costimization steps witch i have done. I have fast perfect working High Sierra 10.13.3 on my PC but
      still needs to be actualized thru the DSDT, because it ist the only way to get all the hardware 
      properly working.
      Gigabyte Z370 Aorus Ultra Gaming - BIOS F7h
      Intel i7-8700K (4.8GHz)
      Gigabyte GTX 1080 G1 Gaming  8G
      DDR4 64GB PC 3000 CL15 G.Skill KIT (4x16GB) 64GVR Ripjaws V
      Dual-Band PCI-e Adapter TP-Link TL-WDN4800
      Firewire PCI-e Digitus (Texas Instruments Chipset)
      Bluetooth 4.0 USB Dongle ASUS BT400 (Broadcom)
      PSU: LC-Power Metatron Prophecy 2 LC8750II V2.2, 750 Watt
      2 x NVMe SSD 960 Evo 500GB (Win10Pro & High Sierra 10.13.3)
      1 x SSD Crucial 500GB (Sierra 10.12.6)
      1 x 4TB Segate Barracuda SATA 3 (Multimedia)
      Tripple-boot Win10Pro, Sierra 10.12.6 & High Sierra 10.13.3
      Bios Settings:
      1.       M.I.T. → Advanced Memory Settings  Extreme Memory Profile(X.M.P.) : Profile1
      2.       BIOS → Fast Boot : Disabled
      3.       BIOS → LAN PXE Boot Option ROM : Disabled
      4.       BIOS → Storage Boot Option Control : UEFI
      5.       Peripherals → Trusted Computing → Security Device Support : Disable
      6.       Peripherals → Network Stack Configuration → Network Stack : Disabled
      7.       Peripherals → USB Configuration → Legacy USB Support : Auto
      8.       Peripherals → USB Configuration → XHCI Hand-off : Enabled
      9.       Chipset → Vt-d : Enabled
      10.   Chipset → Wake on LAN Enable : Disabled
      11.   Chipset → IOAPIC 24-119 Entries : Enabled
      Dedicated graphics card:
      1.      Peripherals → Initial Display Output : PCIe 1 Slot
      2.      Chipset → Integrated Graphics : Enabled
      Chipset → DVMT Pre-Allocated :128M   
      Wake for Ethernet Network access - Unchecked
      Enable Power Nap - Unchecked
      First step:
      I have a perfect Sierra 10.12.6 working on my HP Z800 witch i use to clone to one SSD
      Second step:
      Delete old EFI on cloned SSD and put the new one from here:
      Adjusted Kexts and Config.plist for my Rig:
      Kext Folder:
      FakeSMC.kext + Sensors Kexts
      Thread step:
      connected new cloned SSD on the SATA port and Sierra started up and working.
      Fourth step:
      regulary updated to HighSierra 10.13.3 running installer from App folder.
      Fifth step:
      Cloned Sierra SSD to NVMe SSD 960 Evo 500GB
      Made changes to BIOS & Config.plist to become hardware encoding acceleration  in FCPX and HEVC support:
      BIOS Gigabyte:
      §  Chipset → Integrated Graphics : Enabled
      §  Chipset → DVMT Pre-Allocated :128
      §  Peripherals → Initial Display Output : PCIe 1 Slot
      1.       Inject Kexts is set to Yes
      2.       In Boot Under Custom flags added:
      Nvidia users: shikigva=60
      3.       Kaby Lake & Coffee Lake Users:
      In Devices Using Nvidia 
      - Set ig-platform-id to: 0x59120003
      DSDT Patching:
      1.       HECI -> IMEI Patch
      1.       Comment: change HECI to IMEI
      2.       Find* [Hex]: 48454349
      3.       Replace [Hex]: 494d4549
      2.       GFX0 -> IGPU Patch
      1.       Comment: change GFX0 to IGPU
      2.       Find* [Hex]: 47465830
      3.       Replace* [Hex] : 49475055
      3.        PEGP -> GFX0 Patch
      1.       Comment: change PEGP to GFX0
      2.       Find* [Hex]: 50454750
      3.       Replace [Hex]: 47465830
      I think that in my Config.plist (used EFI from here https://hackintosher.com/guides/high-sierra-install-full-guide/  and edited by me)
      are the double entries, but i am not shure and i dont wont to make a mess myself.
      It is beter to leave it to the profis like Maldon!
      Maldon, i have attached my Send me iMac_4FX.zip file generated with RunMe.app
      Can you post the list of maded Patches for this RIG please.
      THX in advance
      Send me iMac_4FX.zip