Home > Configuration > ACPI
<key>ACPI</key> <dict> ... </dict>
Parameter group affecting various corrections of ACPI tables. This is a rather complex topic. There are several versions of ACPI specifications and additionally Mac has its own requirements. Often vendors are too lazy to write proper tables and internal devices may not be listed or CPU definitions are missing completely.
<key>ResetAddress</key> <string>0x64</string> <key>ResetValue</key> <string>0xFE</string>
These two parameters serve a very important purpose: to fix restart. These values theoretically should be in the FADT table, but it is not always the case. Furthermore, FADT may be shorter than required and not contain them at all. Default values are 0x64
/0xFE
, which means a restart through the PS2 controller.
However, this does not work on every system and you can alternatively use 0x0CF9
/0x06
, which indicates a restart though the PCI rail. This is the default value for real Macs but does not always work on a hackintosh. The difference is clear: a hackintosh additionally has a PS2 controller, which may prevent rebooting, if not disabled.
Last but not least you can set them to 0x0
/0x0
to allow the use of default FACP values. If not present, the default values states above will be used instead.
<key>smartUPS</key> <string>No</string>
This parameter affects the power profile, which will be written into table FADT.
Value|Type|Power supply type :---|:---|:--- 1|Desktop|AC 2|Mobile|Battery 3|Server|SmartUPS
Clover will choose between 1 and 2 according to the mobility bit and according to the Mobile
parameter in SMBIOS. It is, for example, possible to fake a mobile MacMini. Value 3 will be chosen if this parameter is enabled.
<key>PatchAPIC</key> <string>No</string>
Some systems can either be started using the kernel parameter cpus=1
, or by using a patched kernel (Lapic NMI). It turns out that in these case the table MADT is incomplete and missing the NMI section. Enabling this parameter will cause Clover to automatically correct this table. If the table already is complete, then nothing will be changed.
<key>HaltEnabler</key> <true>
It works as OpenHaltRestart, clearing SLP_SMI_EN at start of OSX system.
<key>UseSystemIO</key> <true>
Key UseSystemIO at SSDT section will serve to choose in the generated _CST tables between:
Register (FFixedHW, Register (SystemIO,
<key>DSDT</key> <dict> ... </dict>
Parameter group affecting DSDT.
<key>Name</key> <string>DSDT.aml</string>
File name of the binary DSDT file to load and inject.
Deprecated! Replaced by Fixes.
<key>FixMask</key> <string>0xFFFF</string>
This parameter represents a whole set of DSDT patches masked in the digit 0xFFFF. Following options are available:
//0x00FF #define FIX_DTGP bit(0) #define FIX_WARNING bit(1) #define FIX_SHUTDOWN bit(2) #define FIX_MCHC bit(3) #define FIX_HPET bit(4) #define FIX_LPC bit(5) #define FIX_IPIC bit(6) #define FIX_SBUS bit(7) //0xFF00 #define FIX_DISPLAY bit(8) #define FIX_IDE bit(9) #define FIX_SATA bit(10) #define FIX_FIREWIRE bit(11) #define FIX_USB bit(12) #define FIX_LAN bit(13) #define FIX_WIFI bit(14) #define FIX_HDA bit(15)
To calculate the mask you can use the Calculator app, switch into Programmer view and turn on the hexadecimal numbering system. Switch bits 0 to 15 to generate the required mask. Example with enabled FIX_DTGP and FIX_MCHC:
Alternatively you can use the mask calculator by cVaD.
See Fixing DSDT for a detailed description of these options.
<key>Fixes</key> <dict> ... </dict>
This parameter represents a whole set of DSDT patches which can be activated individually. Following options are available:
<key>AddDTGP_0001</key> <true/> <key>FixDarwin_0002</key> <true/> <key>FixShutdown_0004</key> <true/> <key>AddMCHC_0008</key> <true/> <key>FixHPET_0010</key> <true/> <key>FakeLPC_0020</key> <true/> <key>FixIPIC_0040</key> <true/> <key>FixSBUS_0080</key> <true/> <key>FixDisplay_0100</key> <true/> <key>FixIDE_0200</key> <true/> <key>FixSATA_0400</key> <true/> <key>FixFirewire_0800</key> <true/> <key>FixUSB_1000</key> <true/> <key>FixLAN_2000</key> <true/> <key>FixAirport_4000</key> <true/> <key>FixHDA_8000</key> <true/>
AddDTGP_0001
FixDarwin_0002
FixShutdown_0004
AddMCHC_0008
FixHPET_0010
FakeLPC_0020
FixIPIC_0040
FixSBUS_0080
FixDisplay_0100
FixIDE_0200
FixSATA_0400
FixFirewire_0800
FixUSB_1000
FixLAN_2000
FixAirport_4000
FixHDA_8000
Since rev2392 the DSDT fix mask has been extended to 32 bit. So now the full mask is 0xFFFFFFFF.
For backward compatibility Clover will check for the bit NewWay_80000000
. If this bit is not set then the old mask will work as before.
Settings for "NewWay" Patches:
<key>NewWay_80000000</key> <true/> <key>FIX_DARWIN_10000</key> <true/> <key>FIX_RTC_20000</key> <true/> <key>FIX_TMR_40000</key> <true/> <key>AddIMEI_80000</key> <true/> <key>FIX_INTELGFX_100000</key> <true/> <key>FIX_WAK_200000</key> <true/> <key>DeleteUnused_400000</key> <true/> <key>FIX_ADP1_800000</key> <true/> <key>AddPNLF_1000000</key> <true/> <key>FIX_S3D_2000000</key> <true/> <key>FIX_ACST_4000000</key> <true/> <key>AddHDMI_8000000</key> <true/> <key>FixRegions_10000000</key> <true/> <key>AddPNLF_1000000</key> <true/> <key>FixDarwin7_10000</key> <true/>
NewWay_80000000
FIX_DARWIN_10000
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
AddHDMI_8000000
Adds the HDAU device if absent, with some default properties.FixRegions_10000000
AddPNLF_1000000
A trick to assign keys to reduce/increase brightness:
1. Insert temporarily USB keyboard
2. Control Panel -> Keyboard -> Shotcuts -> Screen (appeared due to USB keyboard)
3. Assign F1 to Reduce brightness and F2 to Increase. No other combinations!
4. After removing the USB keyboard assigning will continue working.
FixDarwin7_10000
Binary DSDT patching
<key>Patches</key> <array> <dict> <key>Find</key> <data>W4IeQkFUMQhfSElEDEHQDAoIX1VJRAEUCF9TVEEApAA=</data> <key>Replace</key> <data></data> </dict> <dict> <key>Find</key> <data>UFhTWAhfQURSAAhfUFJXEgYC</data> <key>Replace</key> <data>UFhTWAhfQURSAAhfU1VOCgQIX1BSVxIGAg==</data> </dict> </array>
Rev 4314
Limit scope of binary DSDT patch by "Device" section with specified name in additional "TgtBridge" tag by goodwin_c.
Config.plist sample:
<dict> <key>Comment</key> <string>Rename PXSX to SSD0</string> <key>Disabled</key> <false/> <key>Find</key> <data>UFhTWA==</data> <key>Replace</key> <data>U1NEMA==</data> <key>TgtBridge</key> <data>UlAwOQ==</data> </dict> <dict> <key>Comment</key> <string>Rename PXSX to SSD0 2</string> <key>Disabled</key> <false/> <key>Find</key> <data>UlAwOS5QWFNY</data> <key>Replace</key> <data>UlAwOS5TU0Qw</data> </dict>
Rev 4468
More exact renaming Devices in DSDT and SSDT taking into account its bridge.
Example:
<key>RenameDevices</key> <dict> <key>_SB.PCI0.RP02.PSXS</key> <string>ARPT</string> <key>_SB.PCI0.EHC1</key> <string>EH01</string> <key>_SB.PCI0.POP2.PEGP</key> <string>GFX0</string> </dict>
Complex case such as this DSDT is also taken into account.
_SB.PCI0.RP02.PSXS We have to take into account fields like Scope(\_SB) { Device (PCI0) { Device(RP02) { Device(PSXS) <- to patch { Method(_ON) { } Method(_OFF) { } } PSXS._ON() <- to patch } Scope(RP02) { PSXS._OFF() <- to patch } Device(RP03) { Device(PSXS) <- to not patch { } PSXS._ON() <- to not patch }
<key>DropOEM_DSM</key> <true/>
Some OEM DSDT already contains Method(_DSM...) for some devices. It has another structure, another logic, and another results then we need. But we can't modify this method, and we can't create own method with the same name, so DropOEM_DSM
was created to drop these OEM _DSM.
Default value is false if using a custom DSDT and true if using BIOS.aml.
Alternatively if you only need to drop the _DSM for certain devices, you can select any of these individually:
<key>DropOEM_DSM</key> <dict> <key>ATI</key> <true/> <key>Firewire</key> <true/> <key>HDA</key> <true/> <key>HDMI</key> <true/> <key>IDE</key> <true/> <key>IntelGFX</key> <true/> <key>LAN</key> <true/> <key>LPC</key> <true/> <key>NVidia</key> <true/> <key>SATA</key> <true/> <key>SmBUS</key> <true/> <key>USB</key> <true/> <key>WIFI</key> <true/> </dict>
<key>SlpSmiAtWake</key> <true>
It adds SLP_SMI_EN=0 at every wake. It may help solve sleep and shutdown issues on UEFI boot.
<key>SuspendOverride</key> <true>
Influences the DSDT patch FixShutdown_0004
and extends the fix from state 5 to 3, 4 and 5 (sleep and suspend).
<key>ReuseFFFF</key> <true>
Some OEM DSDT contains some device with Name (_ADR, 0xFFFF)
. This is a big problem as I can convert it to ADR=0 and inject properties but this is dangerous patch, it may lead to panic on IOPCIFamily.kext. So this key is proposed which will convert this device to (ADR, 0) and reused for injection. (FakeID for example)
<key>Rtc8Allowed</key> <false>
Some users claim that RTC length may be 8 bytes without CMOS reset, but others claim that the reset is still occurring. For those who wants len=8 it should be set to true. Default is false.
<key>SSDT</key> <dict> ... </dict>
Parameter group affecting SSDTs.
<key>DropOem</key> <true/>
Drops all internal SSDT tables to avoid conflicts when generating an SSDT for your processor, which contains P- and C-States. Clover can do this automatically or you can specify an external file, which will be loaded from EFI/OEM/[model]/ACPI/patched.
<key>Generate</key> <false/>
Generate an SSDT with p-states and c-states.
<key>Generate</key> <dict> <key>CStates</key> <true/> </dict>
Automatic SSDT table generation, which extends the processor section with _CSTmethods for each core. _CST generation is affected by parameters EnableC2
, EnableC4
, EnableC6
, EnableISS
, C3Latency
. There is no need to comment them as everything will work either way. Experiment by yourself.
Besides, Clover already has obtained the processor type and core count.
Not using this parameter will result in following error message:ACPI_SMC_PlatformPlugin::pushCPU_CSTData - _CST evaluation failed.
<key>Generate</key> <dict> <key>PStates</key> <true/> </dict>
Automatic SSDT table generation, which extends the processor section with _PPC, _PPC and _PSS methods.
_PCT
- Performance control. Controls SpeedStep functions_PPC
- Performance Present Capabilities. SpeedStep capabilities. This method returns a value limiting the frequency. Look further for PLimitDict
._PSS
- Performance Supported States. An array containing possible CPU states - P-States.PLimitDict
, UnderVoltStep
and Turbo
will be taken into consideration when generated this array.<key>EnableC2</key> <true/>
This key allows you to enable the C2 states generator. Disabled by default.
<key>EnableC4</key> <true/>
This key allows you to enable the C4 states generator. Disabled by default.
<key>EnableC6</key> <true/>
This key allows you to enable the C6 states generator.
<key>EnableC7</key> <true/>
This key allows you to enable the C7 states generator. Disabled by default.
<key>PLimitDict</key> <string>1</string>
Limits the maximal CPU frequency.
0
- No limit.1
- Reduce frequency by one step2
- Reduce frequency by two stepsExample: A Core2Duo T8300 with 2400 MHz operates at a maximal frequency of 2000 MHz when limited by two steps. This parameter might be used to reduce heat in mobile systems.
The same parameter exists in platform plists, for example in:System/Library/Extensions/IOPlaEormPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlaEormPlugin.kext/Contents/Resources/MacBook5_1.plist.
They will be discussed later.
Other CPUs may need other values. This value has a reversed effect on a Core2Quad for instance. The optimal value is 1
in this case. It may be a DSDT error, though.
<key>UnderVoltStep</key> <string>1</string>
This parameter lowers the CPU voltage and indirectly affects the temperature. Possible values are 0
, 1
, 2
, etc. Clover will only allow sane values, meaning it is safe to increase this value until the CPU stops working correctly.
<key>MinMultiplier</key> <integer>7</integer>
Minimal CPU multiplier. Usually a value of 16 is ported, resulting in a frequency of 1600 MHz but you should use lower values when using SpeedStep, like 8
or even 7
.
<key>MaxMultiplier</key> <integer>30</integer>
Introduces as an analogy to the minimal multiplier but not really necessary. It is not advised to set it.
<key>DropTables</key> <array> <dict> <key>Signature</key> <string>SSDT</string> <key>TableId</key> <string>SataTabl</string> </dict> <dict> <key>Signature</key> <string>SSDT</string> <key>TableId</key> <string>SataAddr</string> </dict> <dict> <key>Signature</key> <string>BGRT</string> </dict> <dict> <key>TableId</key> <string>A M I</string> (WARNING: DO NOT DO THIS!!!!!!!) </dict> ... </array>
Drop OEM ACPI tables by signature and/or table identifier.
Additionally, now you can drop tables by their length. Why? Because we found Acer laptop where all SSDT have the same TableID.
<key>DropTables</key> <array> <dict> <key>Signature</key> <string>SSDT</string> <key>Length</key> <integer>720</integer> </dict> </array>
Rev 4427-4429
FixHeaders should be in common ACPI section, it is not DSDT-only fix.
<key>FixHeaders</key> <true/>
The fix is recommended to all users even if you are not going to fix DSDT.
Anyway the fix is safe.
Old setting inside DSDT fixes remains for backward compatibility but I recommend to exclude it from those section.
Boot
>
|