Jump to content
iLeopod

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

1 post in this topic

Recommended Posts

DSDT

Background:


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.

 

Wikipedia:
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

Windows:
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.

post-407466-0-72791300-1334228724_thumb.png

There are also utilities that include the iasl compiler like:
DSDTEditor
DSDTSE

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
Advertisement

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By DiddyKong
      Fully optimizing DSDT & SSDT for OS X Sierra POST INSTALL on a Dell345MT with a i7 - 920(first gen) 
       
      I have scoured the web, went to insanelymac chat on discord, no one replies to me but will reply to others, idk if my question is too advanced or too easy. 
       
      I know how this forum feels about 3rd party software, but that was just a crutch, I'm 100% vanilla now which is why I'm now posting for help because I eliminated the possibility having to do with 3rd party. Anyways, with that said I just have a couple things I want to be sure of.
       
      I used a n---bistro to get a App Store copy of Sierra, as I didn't know there were other ways of getting it now from a windows10 machine. anyways, I was able to build a vanilla usb. I couldn't figure the EFI out on my vanilla Sierra-usb, but the EFI on the usb-ni---bistro I had would boot my pre-install and post-install. so I was able to install Sierra. After a few days of figuring out how to remake a EFI and config, I broke my EFI.
       
      So back to my windows10 SSD and I found BootDiskUtility, and that made a EFI usb with the newest version of clover(r4895). So then swapped SSDs back to my OS X, plugged in the BDU-usb, after trial and error I got back into my Sierra. Now with the newest version of clover and no traces of ni---bistro anymore. Then copied the BDU-usb to my SSD EFI and was able to boot without a usb again!! YAY.
       
      Then starting working on fixing my web drivers for my gtx 1050 2gb. Installed the os update so i'm at 10.12.6, pulled my hair out figuring out the web drivers, eventually got them installed and the cuda fixed.
       
      Now all 3 of my screens work, yet windows can't sit 'between' screens, I just simply haven't looked for that fix yet as I want the sys itself running like a top first.
      My screen saver works, I don't get stuck in screensaver, I did once before, I believe lilu.kext and whatevergreen.kext fixed that.
      Now with all that I felt it was time to give my config.plist a diet cos it was bloated, I generated a config copied the clover settings check for check instead of coping text cos I'm trying to shrink it.
      Config.plist boots my system with DSDT-1FE7B5D7
       
      So that last thing on the list of optimizing I feel would be a 100% correct DSDT and SSDT cos then I could use a blank config.plist with my patched DSDT & SSDT correct
       
      but with the patching part that I think I understand how to do it now, but when I extract with F4 every file has RSDT in front of it, I have one that says RSDP.aml and RSDT.aml
      so would I just erase the RSDT from the beginning of each file then go from their, which would then leave me with a DSDT.aml and 17 SSDTs
       
      so if thats correct I would then decompile with iasl patch and compile and put the patched files into EFI/CLOVER/ACPI/Patched/
       
      also how do I know if everything is patched correctly? like if my CPU is fully working and not just sorta working that way when I start running software like photoshop, unity, 10 chrome tabs, my hackintosh doesn't crash
       
      Thanks to anyone that can help me out, I've been working on my system for about two weeks and this is basically the wall I finally can't seem to figure out how to pass

    • By MaLd0n
      ---INSTALLATION TUTORIAL---
       
      ---Original Post---
      https://olarila.com/forum/viewtopic.php?p=77102#p77102
       
      ---CLOVER FOLDER---
       
      CLOVER.zip
       
      --MOBO
      GigaByte Z390 M Gaming



      --PROCESSOR
      Intel Core i9-9900K


      --COOLER
      CoolerMaster MasterLiquid ML120R RGB


      --MEMORY
      Corsair Dominator Platinum 16GB (2 x 8GB)


      --GPU
      Sapphiretech Radeon RX 590 8 GB GDDR5


       
      --SSD
      Samsung 970 EVO NVMe M2 Flash Drive


      --POWER SUPPLY
      EVGA 750 N1, 750W


      --WIRELESS
      TP-Link Archer T9E


      --BLUETOOTH
      Orico BTA-403


      --CASE
      Thermaltake View 21 Tempered Glass Edition


      --DSDT Patches--
      -FIX ERRORS AND WARNINGS -FIX ACPI ERRORS -REMOVE UNUSED SCOPES / DEVICES -HIGH PRECISION EVENT TIMER -SATA SERIE 10 ID -DMAC -REMOVE 22K LINES, PROBLEMATIC and UNUSED -FIX K.P in REBOOT -NVRAM / REAL TIME CLOCK -SLPB -DARWIN / WINDOWS 2015 -XHCI -PLUGIN TYPE -HDAS to HDEF -HDEF -REAL TIME CLOCK -ARTC -IRQs -SBUS -MIKEY -BUS1 -MCHC -ALS0 -SHUTDOWN -UAR1 -LAN -FWHD -USBX -PMCR -PPMC -XSPI -GMM -IMEI -EC -PNLF -ARPT -GFX0 -NVME -DTGP -ACQUIRE MUT0 0XFFFF -OPERATION REGION GPIO -MUTEX MUT0 0x00 -EXTERNAL REFERENCES -UNKNOWNOBJ -HDMI / HDAU -FULL RENAMED DEVICES  
      --SCREENSHOTS--





























      --BruceX--
       
      --USB-C-- test with SanDisk Ultra USB-STICK 128gb


       
      -Credits and thanks to the old and new people in the community who developed patches, kexts and bootloaders!
      Slice, Kabyl, usr-sse2, jadran, Blackosx, dmazar, STLVNUB, pcj, apianti, JrCs, pene, FrodoKenny, skoczy, ycr.ru, Oscar09, xsmile, SoThOr, RehabMan, Download-Fritz, Zenit432, cecekpawon, Intel, Apple, Oracle, Chameleon Team, crazybirdy, Mieze, Mirone, Oldnapalm, netkas, Elconiglio, artut-pt, ErmaC, Pavo, Toleda, Master Chief and family, bcc9, The King, PMheart, Sherlocks, Micky1979, vit9696, vandroiy2013, Voodoo Team, Pike R. Alpha, lvs1974, Austere.J, CVad, Sampath007, onemanosx, erroruser, Jenny David, Olarila Facebook Community, Hackintosh Facebook Community and many others!
      We're all here to have fun and learn from each other!
    • By bradipi15
      Ciao ragazzi ho un problema strano... 
      Praticamente quando avvio il pc usando il dsdt, appena connetto la tavoletta grafica huion h640p, il pc si riavvia... 
      Se invece tolgo il dsdt, funziona tutto perfettamente... 
    • By bradipi15
      Ciao ragazzi, ho bisogno di un aiuto per verificare che ho fatto tutto giusto, perché penso che la mx150 non sia effettivamente disabilitata. Ho utilizzato un dsdt fatto da gengik84 per un pc simile al mio.. Al momento penso di avere solo due problemi : la mx150, appunto... E poi il trackpad riesco ad usarlo in modalità advanced da bios proprio grazie al dsdt, però il doppio tap per trascinare oggetti ecc non va... L'ho abilitato anche dal menu accessibilità.. 
      Grazie mille! 
       
    • By bbritton
      Hi
       
      I am trying to create a clean DSDT for my new hackintosh.  It is all working very well and I hope this will make things even better.
      I have a Gigabyte Z390 AORUS MASTER,
      I9-9900K
      32 gb Ram
      gigabyte vega 64 OC
       
      I extracted the DSDT and SSDT files using F4 in Clover.  I have supplied the resulting DSDT below.  THese are the four errors I get when trying to compile in MACIasl.  ALso I am using ACPI 5.1 in maciasl.
       
      12891, 6126, syntax error, unexpected PARSEOP_NAMESEG, expecting '('
      12900, 6126, syntax error, unexpected PARSEOP_CASE
      12904, 6126, syntax error, unexpected PARSEOP_NAMESEG, expecting '('
      12913, 6126, syntax error, unexpected PARSEOP_CASE, expecting $end and premature End-Of-File
       
      I am newbie to hackintosh so am learning as much as I can as i go.  I am not a programmer so the syntax errors I am not sure what to do with yet.  Any assistance would be appreciated.
       
      Thanks
       
      DSDT.dsl
      DSDT.aml
×