Jump to content

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

DSDT FAQ ACPI

  • Please log in to reply
No replies to this topic

#1
iLeopod

iLeopod

    InsanelyMac Sage

  • Members
  • PipPipPipPipPipPip
  • 435 posts
  • Gender:Male
  • Location:Germany
  • Interests:ileopod.wordpress.com

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.

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.

Attached File  dsdt.png   59.25KB   251 downloads

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

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







Also tagged with one or more of these keywords: DSDT, FAQ, ACPI


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

© 2014 InsanelyMac  |   News  |   Forum  |   Downloads  |   OSx86 Wiki  |   Mac Netbook  |   PHP hosting by CatN  |   Designed by Ed Gain  |   Logo by irfan  |   Privacy Policy