-
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.
View Boot
- Arguments
<key>Arguments</key>
<string>ARGUMENTS</string>
At this section you can add "Boot Flags" and "Kernel Flags" to be used by the system... Here we will list only Clover's proprietary "Boot Flags", different flags, like for example, npci=0x2000, npci=0x3000, darkwake=0, etc..., should work as expected...
-
-v
- Verbose Boot. -
-s
- Boot OS X into Single User Mode. -
-x
- Boot OS X into SafeBoot (Safe Mode). -
MountEFI=yes/diskX
- Mount EFI partition at every boot or from disk X (X = disk number). -
LogLineCount=0
- Set maximum number of lines for log file, default 0 (no Limit). -
LogLocation=PATH
- Set the path for the log files to be saved. -
LogEveryBoot=Yes/No
- Save log files at every boot.
- Legacy
<key>Legacy</key>
<string>PBR</string>
Necessary for loading old versions of Windows and Linux. Greatly depends on hardware and BIOS. Several algorithms were developed to allow customisation:
-
LegacyBiosDefault
- for UEFI BIOS variants containing protocol LegacyBios -
PBRtest
- PBR boot algorithm -
PBR
- Another PBR boot algorithm
Additionally for UEFI boot you may specify which HDD to boot (not only the first one).
<key>Legacy</key>
<string>LegacyBiosDefault</string>
<key>LegacyBiosDefaultEntry</key>
<integer>2</integer>
- Timeout
<key>Timeout</key>
<integer>5</integer>
The boot loader will pause for 5 seconds after starting before automatically loading an operating system. If a key is pressed during this period of time, the countdown is stopped. Options:
-
0
- GUI is not invoked, the OS is loaded instantly -
-1
- GUI is invoked, automatic OS loading is turned off
Clover must have be able to find a default entry for it to automatically boot into an OS, see below.
NOTE: If the Timeout integer is set to 0
, hold any key when powering on to invoke the bootloader GUI.
- DefaultVolume
<key>DefaultVolume</key>
<string>MacHDD</string>
DefaultVolume is used to specify which entry is the default boot entry in Clover GUI. See also [DefaultLoader]. It can be set to:
- Volume Name - The name of the volume. E.g.
Macintosh
. - GUID - Globally Unique ID of the volume shown in Clover's boot, preboot or debug log. E.g.
57272A5A-7EFE-4404-9CDA-C33761D0DB3C
. - Part of Device Path - Also shown in Clover's logs. E.g.
HD(1,GPT,57272A5A-7EFE-4404-9CDA-C33761D0DB3C,0x800,0xFF000)
. -
LastBootedVolume
- The last booted volume will be set as default one in Clover GUI.
OS X Startup Disk can be used to reboot into another volume, but for the following reboot DefaultVolume
will be used again.
- DefaultLoader
<key>DefaultLoader</key>
<string>BOOTX64.efi</string>
In addition to [DefaultVolume]above, the path of the loader can be specified as DefaultLoader. This provides more precise default entry selection for Volumes that have multiple Loaders. The value can be the complete path or a unique portion like like file name.
- IgnoreNVRAMBoot
<key>IgnoreNVRAMBoot</key>
<true/>
Ignores the setting of Startup Disk panel and allows booting into the same operating system at all times.
- Debug
Formerly known as "Log" before revision 3064
<key>Debug</key>
<false/>
If you are unable to boot into the Clover you can use this setting to produces a debug output to /EFI/CLOVER/misc/debug.log
. This log then can be assessed to find out what the problem is. !WARNING turning on this log will dramatically increase loading time as it has to write the log to the disk as it goes. So please be patient and give plenty of time before reseting your computer.
- Fast
<key>Fast</key>
<true/>
Similar to setting Timeout
to 0
but: * nvram.plist will be searched only until first occurrence * does not search for the best video mode * does not load themes and graphics * no chance to enter the GUI
Having this parameter enabled might not really have any big effect. Instead, you can try a custom compilation: * disable GUI in CloverEFI (3 seconds difference) * only search for Sata0 drivers (9 seconds difference)
- XMPDetection
<key>XMPDetection</key>
<true/> OR <false/> OR <string>Yes/No</string>
Detect best eXtreme Memory Profile when detecting memory or disable XMP detection.
<key>XMPDetection</key>
<integer>1/2</integer>
- Secure
<key>Secure</key>
<true/>
Secure Boot protocol, a contorversial subject, will restrict the booting process to signed binaries only. By enabling this option in your BIOS, booting of many operating systems won't be possible anymore, except Windows 8, 2013 and some Linux distributions.
The aim is to use Clover while Secure Boot is enabled. Clover's binary will need to be signed and a certificate to be loaded.
- NeverHibernate
<key>NeverHibernate</key>
<true/>
Disables the hibernation state detection.
- CustomLogo
<key>CustomLogo</key>
<true/> OR <false/> OR <string>Apple/Alternate/Theme/None/Path</string> OR <data>PNG/BMP/ICNS base64 data</data>
Enable the drawing of the custom boot logo.
-
true
- Uses the default boot style, Apple. -
false
- Disables custom boot logo. -
Apple
- Use the default gray on gray apple logo. -
Alternate
- Use the alternate white on black apple logo. -
Theme
- Use the theme boot screen for entry type - NOT IMPLEMENTED. -
None
- Use no logo only background color, gray if not specified by custom entry. -
Path
- A file path to load a custom image from -
<data>
- A base64 encoded PNG, BMP, or ICNS data.
If no option is specified then the boot screen will be drawn only for >= 10.10 Yosemite, so it remains compatible with previous behavior.
The CustomLogo
key can also be used under GUI/Custom/Entries in conjunction with BootBgColor for a different screen for every OS. However, the graphics output protocol is not in anyway modified so if the OS draws after it is started then it is after the boot screen is drawn and will overwrite the custom logo, at least for now.
- HibernationFixup Rev 4223
<key>HibernationFixup</key>
<true/>
To be used for Hibernation modes 25 & 3 with Lilu.kext and HibernationFixup.kext.
- RtcHibernateAware Rev 4450
A data leak issue was identified in the hibernation code, allowing hibernation encryption key to be passed to the system through RTC and preserved till the next hibernation without a subsequent erase. More details could be found in this message. To workaround this issue a new option enabling RTC memory erase upon waking from hibernation was added:
Boot
> RtcHibernateAware
= YES (BOOLEAN, off by default)
This option relies on a poorly documented (or rather undocumented) RTC memory access, and unspecified RTC memory layout, which is implementation-specific. While it is extremely recommended to be turned on if you rely on hibernation, it may not work on your hardware (should be fine on Ivy Bridge and newer at least), and is thus optional and disabled by default.
Note, that AppleRTC or FixRTC patches effectively break hibernation by reducing the available RTC memory and avoiding encryption key preservation. You should DISABLE them if you have no issues with BIOS preferences afterwards or use HibernationFixup. However, if RtcHibernateAware does not work for you, enabling AppleRTC patch and using HibernationFixup may be a safer workaround.
Revision 4515
Revision 4450 introduced a new key (Boot → RtcHibernateAware) which improved the situation with hibernation compatibility and reduced the impact of some security issues in this process. Starting with 10.13.6 a lot of legacy code got (finally) ditched on Apple side, and some changes are necessary to get hibernation to work on hacks. Revision 4515 incorporates them in Clover.
Mandatory stuff:
- Clover must be r4450 and newer
- AptioMemoryFix must be R20 (b83c025) or newer
- Boot → RtcHibernateAware must be set to YES
Some additional notes:
— Config changes (and driver updates) will benefit all the systems (starting from Yosemite if I remember correctly), not just 10.13.6
— OsxAptioFix1/2/3 will NOT work with hibernation on 10.13.6 and newer, and they may be removed from the default Clover installer in the future (time to upgrade).
— If you can boot with AppleRTC/FixRTC patches OFF without BIOS settings reset, disable them, they break stuff in macOS
— If you have to use HibernationFixup, you may want to update it to 1.2.1, currently only available from source.
Last, but not least: If Hibernation does not work for you… well, RIP. Believe me or not, but it is not something you should rely on. Especially if you care about security and privacy of your data.
- SignatureFixup Rev 4270
<key>SignatureFixup</key>
<false/>
Rev 4291
If not SignatureFixup, it will be zeroed.
Anyway, the Signature must be fixed. If True then the value is from hibernate image If False then the value is zero and it will be copied by kernel into the image.
View CPU
<key>CPU</key>
<dict>
...
</dict>
This group of parameters helps with CPU definitions in case the internal algorithms fail.
- FrequencyMHz
<key>FrequencyMHz</key>
<string>3200</string>
CPU base frequency in MHz. Usually Clover will get it from DMI, however if it is not accurate, you can override it. A wrong value can cause system instability - synchronisation issues, slowness etc. It is recommended not use this parameter at all.
Most probably this parameter will be excluded in coming revisions due to its dangerous and harmful nature.
- BusSpeedkHz
<key>BusSpeedkHz</key>
<string>133330</string>
Bus speed in kHz. Very important value for a stable system. It is passed from the boot loader to the kernel. If this value is not correct, the kernel will not start at all. If it is slightly incorrect, clock issues may arise and the system will behave in a strange way.
An automatic detection was introduced with revision 1060, which relies on the ACPI timer producing much more accurate values than the ones stored in DMI.
DMI stores this value in MHz, which is not accurate in contrast to a value calculated from CPU frequency. You can choose a more accurate value, if needed. For example my DMI has a value of 100 MHz, however manually overriding it to a value of 99790 kHz produced better clocks. Some vendors use a different meaning for BusSpeed and FSBSpeed and use values four times bigger in the BIOS. You can distinguish them according to the scale: either it is from 100 MHz to 400 MHz or it matches the formula CPUFrequency=RailFrequency*CPUMultiplier. If ASUS uses a rail frequency of 1600 MHz and a multiplier of 8, the formula does not work - a CPU with 12,8 GHz does not exist; a division into 4 is required.
Attention: UEFI booting will produce an inaccurate value. It is recommended manually specify the value, which is calculated more accurately during a boot with Clover EFI.
- QPI
<key>QPI</key>
<string>4800</string>
System Profiler calls it Processor Bus Speed or Bus Speed. Chameleon has an algorithm for calculating this value for Nehalem CPUs (, which is however not correct). Clover has a corrected algorithm according to Intel data sheets. AppleSmbios sources describe two variants: either SMBIOS already contains this value as specified by the vendor, or it is calculated by the formulae BusSpeed*4. After a long argument this value was sourced into the configuration file - write what you want (in MHz). This is a purely cosmetic value. Apparently this value only makes sense for Nehalems, the rest should use the formula stated above - or nothing at all.
Note: Real Mac’s report a hw.busfrequency = 100000000
To achieve that with Clover here’s what to do: 1 - Drop SMBIOS table type 132 for Sandy Bridge and newer CPU’s. Clover does this if you set QPI to a string value of 0. 2 - Set SMBIOS table type 4->ExternalClock to 0 (or 25Mhz as a real Mac). This currently has to be done in the source code and re-compile Clover.
If you don’t do step 2 then for Sandy Bridge and newer CPU’s, AppleSMBIOS.kext will multiply any non zero values reported by SMBIOS table type 4 -> External Clock by 4. See DHP’s posts for ref.
- Type
<key>Type</key>
<string>0x0201</string>
This result of this value can only be found in Apple's specification and it is used in the window About this Mac, which is displaying the according processor name. Otherwise "Unknown CPU" will be displayed. An invocation of CPUID was not possible due to PowerPC and due to Apple's different view of the world SMBIOS table 4 is not used either. Clover knows most values but due to the fact that hardware development does not stand still, you can specify this value. Again, this is purely cosmetic.
- Latency
<key>Latency</key>
<string>0x03E9</string>
This parameter value represents the C3 entry latency issued when entering C3 state. The critical value is 0x3E8
(1000). A lower value will allow SpeedStep, a higher one will not allow it. Real Macs always use 0x3E9
, meaning SpeedStep is not turned on. Decide for yourself what you need.
Notebook users should use 0x00FA
to enable power management.
- C2
<key>C2</key>
<true/>
Enable C2 state.
- C4
<key>C4</key>
<true/>
Enable C4 state.
- C6
<key>C6</key>
<true/>
Enable C6 state.
- 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)