-
Notifications
You must be signed in to change notification settings - Fork 629
Configuration
Clover will perform an automatic configuration based on the computer's hardware. Nevertheless, an automatic unit is never perfect and this is why the user can permanently change several parameters in the configuration file config.plist or on the fly in the GUI. The configuration file is written in XML but it can be handy to view it as a text file. It can be edited by simple text editors or by plist editors like PlistEdit. Clover is shipped with two variants of this file: a full-size version with all possible configuration options and a minimal version.
The configuration file (config.plist) must be put in the EFI/CLOVER folder.
**If you do not know what value a parameter needs, exclude it from the config file completely! Do not leave a parameter without a value. Last but not least, do not set a value you do not understand!**
1. Install the minimal version, which only uses safe parameters 2. Load Clover's GUI and enter the Options menu (by pressing O) 3. Browse all options and try to understand what is set and why 4. Fix what you understand and leave the rest like it is 5. Load the OS. If it doesn't load, repeat from step 2 until it starts
In the OS start the Terminal and enter:
/usr/local/bin/clover-genconfig >config.plist
This way you get a nearly complete configuration file with the parameters used to successfully load the OS. Some more manual work is needed to finish it.
Rev 4504
Now clover-genconfig is able to produce all your injection keys used at last successful boot including automatic properties when inject=YES. But not including _DSM methods.
- Boot as usual. New or old Clover revision.
- Use new clover-genconfig to produce your current config.plist.
- Update Clover to revision > 4500
- Update you config.plist to switch off all injection including Graphics, Audio, LAN, USB
- Disable all AddProperties and Arbitrary.
- Insert new produced Device->Properties dictionary which will include all your old properties.
View ACPI
``` ACPI ... ```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.
- ResetAddress and ResetValue
<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.
- smartUPS
<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.
- PatchAPIC
<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.
- HaltEnabler
<key>HaltEnabler</key>
<true>
It works as OpenHaltRestart, clearing SLP_SMI_EN at start of OSX system.
- UseSystemIO
<key>UseSystemIO</key>
<true>
Key UseSystemIO at SSDT section will serve to choose in the generated _CST tables between:
Register (FFixedHW,
Register (SystemIO,
- DSDT
<key>DSDT</key>
<dict>
...
</dict>
Parameter group affecting DSDT.
** DSDT / Name
<key>Name</key>
<string>DSDT.aml</string>
File name of the binary DSDT file to load and inject.
** DSDT / FixMask
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.
** DSDT / Fixes
<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
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. -
FixDarwin_0002
Provide a set of corrections to DSDT to make your system "Darwin" to be identified as "Windows 2001", like most ACPI systems. 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. -
FixShutdown_0004
Adds If(arg=5){} to method _PTS. This trick may repair shutdown problems for some systems (ASUS). -
AddMCHC_0008
Adds device MCHC to DSDT. For my board H61M this is obligatory, else KP. Old way also included AddIMEI_80000. -
FixHPET_0010
Adds IRQ(0, 8, 11) to device HPET. Obligatory for OSX <= 10.8, Mavericks can work without it. Old way also included FIX_RTC_20000, FIX_TMR_40000. -
FakeLPC_0020
Changes the device-id for the LPC chipset device. Needed in very rare cases for non-standard (for Apple) chipsets, like ICH9. -
FixIPIC_0040
Deletes IRQ(2) from device IPIC. Helps with a non working Power button. -
FixSBUS_0080
Adds SMBUS device into DSDT, with some sub-device. I don't know the reason for the patch but it's advised in many forums. Never seen any problem with this bit. -
FixDisplay_0100
This is a very functional patch for video devices. Recommended even if you don't want to inject properties to the device. When this bit is set other settings like FakeID will be applied as well. Old way: this patch will affect all video cards, included embedded Intel GFX. New way: Intel will be patched separately. -
FixIDE_0200
Adds initialization for IDE controllers (not SATA) to prevent panic with it. More information. -
FixSATA_0400
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. -
FixFirewire_0800
Adds device Firewire into DSDT if absent and if the device really present. Safe. -
FixUSB_1000
Injects USB devices and their properties for USB-1, USB-2 and USB-3. No reason not to use this bit. -
FixLAN_2000
Injects device and properties for the LAN controller. Also made FakeID for some known substitutions. -
FixAirport_4000
Injects device and properties for the WiFi controller. Also made FakeID for some known substitutions. -
FixHDA_8000
Renames AZAL to HDEF or HDAU. Adds the HMDI device if absent. Else AppleHDA will not work. Adds the properties "layout-id", "MaximumBootBeepVolume" and "PinConfigurations".
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
If you set this bit then your old bit will work restrictedly for one purpose each. Without this bit the rest of these bits will be useless -
FIX_DARWIN_10000
Only patches the "Darwin OS" identification. -
FIX_RTC_20000
Excludes IRQ(0) from RTC device. -
FIX_TMR_40000
Excludes IRQ(8) from TMR device. This is an ancient DOS device and is not needed in modern computers. -
AddIMEI_80000
This device is used for IntelHDxxxx graphics. This is required when using the FakeID->IMEI bit. It does nothing on Core 2 systems. -
FIX_INTELGFX_100000
New way to patch an IntelGFX device. -
FIX_WAK_200000
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. -
DeleteUnused_400000
Deletes devices like Floppy drive, LPT port and others from the DSDT. -
FIX_ADP1_800000
Renames device AC0 to ADP1. -
AddPNLF_1000000
The device PNLF is necessary to have brightness control. This patch is also a good influence for proper Sleep/Wake. -
FIX_S3D_2000000
Also resolves some Sleep/Wake problems by correcting _S3D methods. -
FIX_ACST_4000000
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. -
AddHDMI_8000000
Adds the HDAU device if absent, with some default properties. -
FixRegions_10000000
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. -
AddPNLF_1000000
Rev 4195 Set backlight control for Nvidia mobile cards.In my case there are: DSDT_FIX: AddPNLF_1000000 OEM SSDT NvdTable, but _DSM -> ZDSM corrected by Clover. No new _DSM No additional kexts.
A trick to assign keys to reduce/increase brightness:
- Insert temporarily USB keyboard
- Control Panel -> Keyboard -> Shotcuts -> Screen (appeared due to USB keyboard)
- Assign F1 to Reduce brightness and F2 to Increase. No other combinations!
- After removing the USB keyboard assigning will continue working.
-
FixDarwin7_10000
Rev 4200 New fix for compatibility with Windows 7 SP1 (Windows 2009). It should gives OSYS=0x7D9.
** DSDT / Patches
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
}
** DSDT / DropOEM_DSM
<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>
** DSDT / SlpSmiAtWake
<key>SlpSmiAtWake</key>
<true>
It adds SLP_SMI_EN=0 at every wake. It may help solve sleep and shutdown issues on UEFI boot.
** DSDT / SuspendOverride
<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).
** DSDT / ReuseFFFF
<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)
** DSDT / Rtc8Allowed
<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.
- SSDT
<key>SSDT</key>
<dict>
...
</dict>
Parameter group affecting SSDTs.
** SSDT / DropOem
<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.
** SSDT / Generate
<key>Generate</key>
<false/>
Generate an SSDT with p-states and c-states.
*** SSDT / Generate / CStates
<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.
*** SSDT / Generate / PStates
<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 forPLimitDict
. -
_PSS
- Performance Supported States. An array containing possible CPU states - P-States.PLimitDict
,UnderVoltStep
andTurbo
will be taken into consideration when generated this array.
** SSDT / EnableC2
<key>EnableC2</key>
<true/>
This key allows you to enable the C2 states generator. Disabled by default.
** SSDT / EnableC4
<key>EnableC4</key>
<true/>
This key allows you to enable the C4 states generator. Disabled by default.
** SSDT / EnableC6
<key>EnableC6</key>
<true/>
This key allows you to enable the C6 states generator.
** SSDT / EnableC7
<key>EnableC7</key>
<true/>
This key allows you to enable the C7 states generator. Disabled by default.
** SSDT / PLimitDict
<key>PLimitDict</key>
<string>1</string>
Limits the maximal CPU frequency.
-
0
- No limit. -
1
- Reduce frequency by one step -
2
- Reduce frequency by two steps
Example: 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.
** SSDT / UnderVoltStep
<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.
** SSDT / MinMultiplier
<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
.
** SSDT / MaxMultiplier
<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.
- DropTables
<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>
- FixHeaders 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.
- Slice, with help of Kabyl, usr-sse2, jadran, Blackosx, dmazar, STLVNUB, pcj, apianti, JrCs, pene, FrodoKenny, skoczy, ycr.ru, Oscar09, xsmile, SoThOr, rehabman, Download-Fritz, nms42, Sherlocks, Zenit432, cecekpawon, stinga11, TheRacerMaster, solstice, Micky1979, Needy, joevt, ErmaC, vit9696, ath, savvas, syscl, goodwin_c, clovy, jief_machak, chris1111, vector_sigma, LAbyOne, Florin9doi.
Intel, Apple, Oracle, Chameleon, rEFIt and Xom, nanosvg.
Chameleon team, crazybirdy, JrCs, chris1111.
- Clover, rEFIt, XNU, VirtualBox. The main is EDK2 latest revision
- Recent developments and changes in details at Clover Change Explanations
- Support forum discussion AppleLife (Russian) Insanelymac (English) macos86.it (Italian)