Contribute
Register

Clover DSDT Fixes

tonymacx86

Administrator
Staff member
Joined
Nov 17, 2009
Messages
7,367
Motherboard
Z370N WIFI
CPU
i7 8700K
Graphics
HD 630
Mac
  1. MacBook Air
Classic Mac
  1. Apple
  2. PowerBook
Mobile Phone
  1. iOS
cloverbeast.png
Clover has built in settings to patch the system's DSDT at boot time without manually patching. All that is necessary is to flip on or off each DSDT fix option in config.plist. Extremely handy for testing and patching systems with tricky and troublesome BIOS. The following is a full list of available DSDT fixes as described in the Clover documentation and Wiki.

ACPI/DSDT/Fixes
AddDTGP_0001
AddHDMI_8000000
AddIMEI_80000
AddMCHC_0008
AddPNLF_1000000
DeleteUnused_400000
FakeLPC_0020
FIX_ACST_4000000
FIX_ADP1_800000
FIX_DARWIN_10000
FIX_INTELGFX_100000
FIX_RTC_20000
FIX_S3D_2000000
FiX_TMR_40000
FiX_WAK_200000
FixAirport_4000
FixDarwin_0002
FixDisplay_0100
FixFirewire_0800
FixHDA_8000
FixHPET_0010
FixIDE_0200
FixIPIC_0040
FixLAN_2000
FixRegions_10000000
FixSATA_0400
FixSBUS_0080
FixShutdown_0004
FixUSB_1000
NewWay_80000000

Other:
Devices/UseIntelHDMI

Old Way fixes:
Clover's older method of DSDT fixing is for the following fixes and requires no extra settings:
AddDTGP_0001, AddMCHC_0008, FakeLPC_0020, FixAirport_4000, FixDarwin_0002, FixDisplay_0100, FixFirewire_0800, FixHDA_8000, FixHPET_0010, FixIDE_0200, FixIPIC_0040, FixLAN_2000, FixSATA_0400, FixSBUS_0080, FixShutdown_0004, FixUSB_1000

New Way fixes:
Clover's new method of DSDT fixing requires the NewWay_80000000 to be switched on for the following fixes: AddHDMI_8000000, AddIMEI_80000, AddPNLF_1000000, DeleteUnused_400000, FIX_ACST_4000000, FIX_ADP1_800000, FIX_DARWIN_10000, FIX_INTELGFX_100000, FIX_RTC_20000, FIX_S3D_2000000, FIX_TMR_40000, FIX_WAK_200000, FixRegions_10000000



ACPI/DSDT/Fixes/AddDTGP_0001
<key>AddDTGP_0001</key>
<true/>

Clover Wiki: For injecting device properties you can - apart from DeviceProperties - use a variant involving method _DSM (Device Specific Method), which is written into the DSDT table. _DSM is widely used since OS X 10.5. It contains properties for a device and makes use of the method DTGP, which is universal for all devices. This fix simply adds the DTGP method for later use with other fixes. It has no significance on its own. Inserts Method (DTGP) into DSDT. It is required for _DSM methods, so if you use some other DSDT fix to inject device properties then you must enable this. No sense to use this method without other fixes.

Explanation: Generic code used to inject other fixes into DSDT.

Code: Adds the following to DSDT:
Code:
    Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
        {
            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)
    }
}


ACPI/DSDT/Fixes/AddHDMI_8000000
<key>AddHDMI_8000000</key>
<true/>

Clover Wiki: Adds the HDAU device if absent, with some default properties.

Explanation: Provides HDMI fixes for NVIDIA and AMD cards? Doesn’t do anything on 6 series. (Not sure on this one)


ACPI/DSDT/Fixes/AddIMEI_80000
<key>AddIMEI_80000</key>
<true/>

Clover Wiki: This device is used for IntelHDxxxx graphics. This is required when using the FakeID->IMEI bit. It does nothing on Core 2 systems.



ACPI/DSDT/Fixes/AddMCHC_0008
<key>AddMCHC_0008</key>
<true/>

Clover Wiki: Adds device MCHC to DSDT. For my board H61M this is obligatory, else KP. Old way also included AddIMEI_80000.



ACPI/DSDT/Fixes/AddPNLF_1000000
<key>AddPNLF_1000000</key>
<true/>

Clover Wiki: The device PNLF is necessary to have brightness control. This patch is also a good influence for proper Sleep/Wake.



ACPI/DSDT/Fixes/DeleteUnused_400000
<key>DeleteUnused_40000</key>
<true/>

Clover Wiki: Deletes devices like Floppy drive, LPT port and others from the DSDT.



ACPI/DSDT/Fixes/FakeLPC_0020
<key>FakeLPC_0020</key>
<true/>

Clover Wiki: Changes the device-id for the LPC chipset device. Needed in very rare cases for non-standard (for Apple) chipsets, like ICH9.



ACPI/DSDT/Fixes/FIX_ACST_4000000
<key>FIX_ACST_4000000</key>
<true/>

Clover Wiki: Name ACST is used differently by Apple and ASUS. For ASUS it's the AC adapter state, but for Apple it's a replacement for _CST, c-states table. To avoid conflict it is necessary to rename such function to something else.



ACPI/DSDT/Fixes/FIX_ADP1_800000
<key>FIX_ADP1_800000</key>
<true/>

Clover Wiki: Renames device AC0 to ADP1.



ACPI/DSDT/Fixes/FIX_DARWIN_10000
<key>FIX_DARWIN_10000</key>
<true/>

Clover Wiki: New way of FixDarwin_0002. Only patches the "Darwin OS" identification.



ACPI/DSDT/Fixes/FIX_INTELGFX_100000
<key>FIX_INTELGFX_100000</key>
<true/>

Clover Wiki: New way IntelGFX device will not be patched without this bit.

Explanation: Provides device id and vendor id injection for Intel HD graphics. (Not sure on this one)

Code: Adds graphics specific injection to IGD0 of DSDT:

Code:
Method (_DSM, 4, NotSerialized)
                {
                    Store (Package (0x06)
                        {
                            "device-id", 
                            Buffer (0x04)
                            {
                                0x26, 0x01, 0x00, 0x00
                            }, 


                            "vendor-id", 
                            Buffer (0x04)
                            {
                                0x86, 0x80, 0x00, 0x00
                            }, 


                            "hda-gfx", 
                            Buffer (0x0A)
                            {
                                "onboard-1"
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }



ACPI/DSDT/Fixes/FIX_RTC_20000
<key>FIX_RTC_20000</key>
<true/>

Clover Wiki: Excludes IRQ(0) from RTC device.



ACPI/DSDT/Fixes/FIX_S3D_2000000
<key>FIX_S3D_2000000</key>
<true/>

Clover Wiki: Also resolves some Sleep/Wake problems by correcting _S3D methods.



ACPI/DSDT/Fixes/FiX_TMR_40000
<key>FiX_TMR_40000</key>
<true/>

Clover Wiki: Excludes IRQ(8) from TMR device. This is an ancient DOS device and is not needed in modern computers.



ACPI/DSDT/Fixes/FiX_WAK_200000
<key>FiX_WAK_200000</key>
<true/>

Clover Wiki: Adds Return(Package(0)) into method _WAK if absent. This patch eliminates a warning, but we don't know if it affects anything else on a working system.



ACPI/DSDT/Fixes/FixAirport_4000
<key>FixAirport_4000</key>
<true/>

Clover Wiki: Injects device and properties for the WiFi controller. Also made FakeID for some known substitutions.



ACPI/DSDT/Fixes/FixDarwin_0002
<key>FixDarwin_0002</key>
<true/>

Clover Wiki: Provide a set of corrections to DSDT to make your system "Darwin" identified as "Windows 2001" like the most ACPI system. More ACPI devices will work in this mode. Old way this bit also provide fixes: FIX_WAK_200000, DeleteUnused_400000, FIX_ACST_4000000, FIX_S3D_2000000, AddPNLF_1000000, FIX_ADP1_800000

Explanation: Provides a set of fixes to make the system appear as Windows 2001. Also provides the following fixes: FIX_WAK_200000, DeleteUnused_400000, FIX_ACST_4000000, FIX_S3D_2000000, AddPNLF_1000000, FIX_ADP1_80000. (Needs more info)

Code: Adds/replaces the following definition block to DSDT:
Code:
DefinitionBlock ("iASL8GSejh.aml", "DSDT", 1, "Apple ", "GBTUACPI", 0x00001000){
    Name (VER0, "Clover autopatched")
    Name (WXP1, "Windows 2001")
    Method (GET9, 2, NotSerialized)
    {
        CreateByteField (Arg0, Arg1, TCH9)
        Return (TCH9) /* \GET9.TCH9 */
    }


    Method (STR9, 2, NotSerialized)
    {
        Name (STR8, Buffer (0x50) {})
        Name (STR9, Buffer (0x50) {})
        Store (Arg0, STR8) /* \STR9.STR8 */
        Store (Arg1, STR9) /* \STR9.STR9 */
        Store (Zero, Local0)
        Store (One, Local1)
        While (Local1)
        {
            Store (GET9 (STR8, Local0), Local1)
            Store (GET9 (STR9, Local0), Local2)
            If (LNotEqual (Local1, Local2))
            {
                Return (Zero)
            }


            Increment (Local0)
        }


        Return (One)
    }


    Method (OOSI, 1, NotSerialized)
    {
        If (STR9 (WXP1, Arg0))
        {
            Return (One)
        }


        Return (Zero)
    }



ACPI/DSDT/Fixes/FixDisplay_0100
<key>FixDisplay_0100</key>
<true/>

Clover Wiki: Create device GFX0 if still absent. It is needed for correct Power Management but the device is usually absent in DSDT because it is not a part of the motherboard. Added also device HDAU that is HDMI sound device on the videocard. If we set FakeID in config.plist it will be inserted here. Old way this patch will affect all video cards, included embedded Intel GFX. New way Intel will be patched separately.

Explanation: Provides GFX0 and HDAU device for graphics. Old way is for all graphics cards, new way is for Intel separately.



ACPI/DSDT/Fixes/FixFirewire_0800
<key>FixFirewire_0800</key>
<true/>

Clover Wiki: Adds device Firewire into DSDT if absent and if the device really present. Safe.



ACPI/DSDT/Fixes/FixHDA_8000
<key>FixHDA_8000</key>
<true/>

Clover Wiki: Corrects sound card properties to enable the native AppleHDA driver. The name is changed from AZAL to HDEF, layout-id and PinConfiguration are injected. Adding HDMI device if absent.

Explanation: Provides fixes for audio for older systems. Replaces HDEF with AZAL throughout DSDT. Also adds layout-id and pin configuration.



ACPI/DSDT/Fixes/FixHPET_0010
<key>FixHPET_0010</key>
<true/>

Explanation: Enables fix for HPET (High Precision Event Timer). Used to prevent AppleIntelCPUPowerManagement.kext kernel panic on older AWARD BIOS systems. Also provides the following fixes: FIX_RTC_20000, FIX_TMR_40000

Code: Removes the following from DSDT HPET section:
Code:
                    Name (ATT4, ResourceTemplate ()
                    {
                    })
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (LGreaterEqual (OSFX, 0x03))
                        {
                            If (HPTF)
                            {
                                Return (0x0F)
                            }
                            Else
                            {
                                Return (0x00)
                            }
                        }
                        Else
                        {
                            Return (0x00)
                        }
                    }


                    Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
                    {
                        If (LGreaterEqual (OSFX, 0x03))
                        {
                            If (HPTF)
                            {
                                Return (ATT3) /* \_SB_.PCI0.PX40.HPET.ATT3 */
                            }
                            Else
                            {
                                Return (ATT4) /* \_SB_.PCI0.PX40.HPET.ATT4 */
                            }
                        }
                        Else
                        {
                            Return (ATT4) /* \_SB_.PCI0.PX40.HPET.ATT4 */
                        }
                    }
                }



ACPI/DSDT/Fixes/FixIDE_0200
<key>FixIDE_0200</key>
<true/>

Clover Wiki: Adds initialization for IDE controllers (not SATA) to prevent panic with it.



ACPI/DSDT/Fixes/FixIPIC_0040
<key>FixIPIC_0040</key>
<true/>

Clover Wiki: Deletes IRQ(2) from device IPIC. Helps with a non working Power button.



ACPI/DSDT/Fixes/FixLAN_2000
<key>FixLAN_2000</key>
<true/>

Clover Wiki: Injects device and properties for the LAN controller. Also made FakeID for some known substitutions.



ACPI/DSDT/Fixes/FixRegions_10000000
<key>FixRegions_10000000</key>
<true/>

Clover Wiki: Some OperationRegions in Bios DSDT are floating and values may change in time due to changes in the BIOS. The presence of floating regions makes it impossible to use a custom DSDT because this region may be shifted and will not correspond to the current state. This patch is intended to find all such regions in BIOS and correct them in custom DSDT.




ACPI/DSDT/Fixes/FixSATA_0400
<key>FixSATA_0400</key>
<true/>

Clover Wiki: Injects the DeviceID from ICH6 to prevent the orange icons problem. Nowadays this patch looks to be obsolete. It is better to do the kext binary patch instead.




ACPI/DSDT/Fixes/FixSBUS_0080
<key>FixSBUS_0080</key>
<true/>

Clover Wiki: Adds SMBUS device into DSDT, with some sub-device.




ACPI/DSDT/Fixes/FixShutdown_0004
<key>FixShutdown_0004</key>
<true/>

Clover Wiki: Adds If(arg=5){} to method _PTS. This trick may repair shutdown problems for some systems (ASUS).




ACPI/DSDT/Fixes/FixUSB_1000
<key>FixUSB_1000</key>
<true/>

Clover Wiki: Tries fixing USB the countless USB issues for USB1.0, USB2.0 and USB3.0. Injects USB devices and their properties for USB-1, USB-2 and USB-3. No reason not to use this bit.


ACPI/DSDT/Fixes/NewWay_8000000
<key>NewWay_8000000</key>
<true/>

Clover Wiki: Define that all bits will work new way.

Explanation: New method for Clover DSDT fixes. Necessary to allow NewWay fixes: FIX_RTC_20000, FIX_TMR_40000, AddIMEI_80000, FIX_INTELGFX_100000, FIX_WAK_200000, DeleteUnused_400000, FIX_ADP1_800000, AddPNLF_1000000, FIX_S3D_2000000, FIX_ACST_4000000, FixRegions_10000000



Devices/UseIntelHDMI
<key>UseIntelHDMI</key>
<true/>

Explanation: Adds hda-gfx and onboard-1 code to HDEF section. Part of the method to enable HDMI audio for Intel HD graphics.

Code: Adds the following to DSDT:
Code:
                            "hda-gfx", 
                            Buffer (0x0A)
                            {
                                "onboard-1"
                            },

References:
http://clover-wiki.zetam.org/Fixing-DSDT
http://clover-wiki.zetam.org/Configuration/ACPI#acpi_dsdt_dsdt-fixes
 
Clover can also do custom DSDT patches by filling out the following areas of config.plist.

For example the following code under ACPI/DSDT/Patches will find and replace names in DSDT. This patch is used in some methods to rename the DSDT's naming conventions from GFX0 to IGPU, and from B0D3 to HDAU for Intel HD 4600 graphics HDMI audio.

Code:
    <key>Patches</key>
            <array>
                <dict>
                    <key>Comment</key>
                    <string>Rename GFX0 to IGPU</string>
                    <key>Find</key>
                    <data>
                    R0ZYMA==
                    </data>
                    <key>Replace</key>
                    <data>
                    SUdQVQ==
                    </data>
                </dict>
                <dict>
                    <key>Comment</key>
                    <string>Rename B0D3 to HDAU</string>
                    <key>Find</key>
                    <data>
                    QjBEMw==
                    </data>
                    <key>Replace</key>
                    <data>
                    SERBVQ==
                    </data>
                </dict>
            </array>

More info here:
http://clover-wiki.zetam.org/Configuration/ACPI#acpi_dsdt_dsdt-patches
 

ACPI/DSDT/Fixes/FixShutdown_0004
<key>FixShutdown_0004</key>
<true/>

Clover Wiki: Adds If(arg=5){} to method _PTS. This trick may repair shutdown problems for some systems (ASUS).


ACPI/DSDT/Fixes/FixUSB_1000
<key>FixUSB_1000</key>
<true/>

Clover Wiki: Adds If(arg=5){} to method _PTS. This trick may repair shutdown problems for some systems (ASUS).

FixUSB part is incorrect, I believe?
 
FixUSB part is incorrect, I believe?

OK fixed- I'll try to get a better explanation other than the Clover wiki for this one. Thanks for the tip.

Clover Wiki: Tries fixing USB the countless USB issues for USB1.0, USB2.0 and USB3.0. Injects USB devices and their properties for USB-1, USB-2 and USB-3. No reason not to use this bit.
 
OK fixed- I'll try to get a better explanation other than the Clover wiki for this one. Thanks for the tip.

Clover Wiki: Tries fixing USB the countless USB issues for USB1.0, USB2.0 and USB3.0. Injects USB devices and their properties for USB-1, USB-2 and USB-3. No reason not to use this bit.

I have it checked in my Clover Configuration Tool, didn't know what it does though. This might be the reason why I never had any issues with USB, even after updating to El Capitan. All my USB 2.0, USB 3.0 ports are working fine. (Asus P8Z77-V Pro)

Thanks for the explanation.
 
Nice guide. :thumbup: I'm using Drop OEM_DSM on my Z77-DS3H board due to USB 3 fixes in my DSDT i made works fine in 10.11. however my H61N-USB3 is a different story.
 
I'm heading far too rapidly towards my 70th birthday, I really do wish this information was available about ten years ago :( I'm far too old to learn new tricks!
 
Many thanks for taking the time to post this!

I have El Capitan (10.11.1) installed and all appears to be working fine, however I'm always curious how far to go with these patches. Video, Ethernet, audio, sleep, startup/shutdown and USB all appear to be working, however I wonder if the system would run better/faster with some of these fixes.

My question really is whether these fixes are intended for a machine that won't boot or run properly and how do you know when to stop tweaking?
 
I have a hackintosh sierra on a gigabyte Z97 HD3, Intel i5. All working well (finally), but.... when I boot, I go into clover and disable all the DSDT, and tell it not to load the intel video drivers. EVERY time. Is there a 'save' option that I'm just not seeing?
 
Back
Top