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.
Some general rules: 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!
Following way of creating a configuration file is offered:
In the OS start the Terminal and enter:
cd ~/App/getconfig >config.plist
It is assumed that you already copied the utility getconfig into directory ~/App
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. Here are the different sections and parameter descriptions:
<key>boot-args</key>
<string>-v arch=i386</string>
These arguments are passed to boot.efi and then partly to the kernel. A complete listing of all kernel arguments can be found in Apple's documentation. A list of arguments for boot.efi can be found in the documentation of com.apple.Boot.plist. Popular ones are:
Kernel=mach_kernel
MKext=extensions.mkext
Additionally Clover uses its own arguments:
WithKexts
- Loads additional kexts from EFI/CLOVER/kexts/[OSVersion].
NoCaches
- It may be necessary to load all available
drivers and recreate system caches, for example after the installation
of new drivers. FSInject.efi driver must be available in both cases as it is used to analyse both arguments.
<key>prev-lang:kbd</key>
<string>en:0</string>
Currently it is only useful for changing the language of the Help menu. Furthermore, this parameter is passed to the OS and can affect the language.
<key>CustomUUID</key>
<string>511CE200-1000-4000-9999-010203040506</string>
Unique identification number of your computer. If not set, an automatically generated UUID will be used. Customise it with hexadecimal digits for full control over your hackintosh.
Do not use this example value. It is by far not unique, as there are enough fools who copied it already.
<key>InjectSystemID</key>
<false/>
The number described above can be injected differently and
transformed by the OS into another ID. The aim is to provide an option
for Chameleon users to replicate their UUID. Set to <true/>
and change CustomUUID
to match the UUID used with Chameleon found in registry at IODeviceTree:/efi/platform
>system-id
. Profiler will show a different UUID that will match the one generated with Chameleon.
<key>LegacyBoot</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 LegacyBiosPBRtest
- PBR boot algorithmPBR
- Another PBR boot algorithm<key>BacklightLevel</key>
<string>0x0101</string>
Monitor brightness level. However, only few systems will be affected by this parameter. It also is read from NVRAM. By default a value given by the system is used. Specifying it in the configuration file will override it.
This group of parameters is used to mask your PC as a Mac. Clover will do this task automatically based on the given processor, video card and signs of mobility. However, you may choose differently. Get the MacTracker application, choose a model you like and find matching values. Chameleon Wizard may help you with this task. There is not much to comment here, these values are not for beginners. If you know them - change them; otherwise leave it. Calculating them is mostly not possible.
<key>ProductName</key>
<string>MacBook1,1</string>
You can set only this value and Clover will adjust the rest of the parameters automatically according to the model, so you can leave them out. Otherwise your custom values will be preferred.
Clover has built-in definitions for following models:
MacBook1,1
MacBook2,1
MacBook4,1
MacBook5,2
MacBookPro5,1
MacBookPro8,1
MacBookPro8,3
MacBookPro9,2
MacBookAir3,1
MacBookAir5,2
Macmini2,1
Macmini5,1
Macmini6,2
iMac8,1
iMac10,1
iMac11,1
iMac11,2
iMac11,3
iMac12,1
iMac12,2
iMac13,1
iMac13,2
MacPro3,1
MacPro4,1
MacPro5,1
All other models require setting all fields manually.
In case the model is not set, Clover will automatically choose one for you.
Some parameters like BoardSerialNumber
should be generated and specified manually to be unique though.
<key>SmUUID</key>
<string>00000000-0000-1000-8000-010203040506</string>
This is the UUID, which is written into the SMBIOS table. Apparently it makes sense to fill the last pairs of digits with the MAC address of your ethernet card. This UUID will also be used in case CustomUUID is missing.
<key>FirmwareFeatures</key>
<string>0xC0001403</string>
These digits exceed the standard SMBIOS and are part of Apple's specification. Different real Macs show different values and no description of the meaning exists. The only clue is provided by the sources of the bless command:
&& (featureFlags & 0x00000001)) {
contextprintf(context, kBLLogLevelVerbose, "Legacy mode suppported\n");
Therefore, we too need an odd number here.
<key>BoardSerialNumber</key>
<string>C02032101R5DC771H</string>
Clover will use one specific value here, which needs to be replaced by your own serial number. It is required for working iCloud and iMessage services. The length must be 17 digits, consisting of letters from the Latin alphabet and numbers. The serial number used by Clover is most probably banned already.
<key>BoardType</key>
<integer>10</integer>
This parameter was introduced for the MacPro, which uses 11
(ProcessorBoard) instead of 10
(Motherboard), apparently for historical reasons. The effect is not clear, however it can be seen in Profiler.
<key>Mobile</key>
<true/>
Usually Clover will automatically detect the mobility of a system, e.g. if is powered by a battery, needs energy saving, or not. Change it to trick the system into thinking that a battery is not available, or otherwise.
<key>ChassisType</key>
<string>0x10</string>
Used as an indirect indication for platform mobility. Here is a table according to SMBIOS standards:
Type | Value |
---|---|
MiscChassisTypeOther | 0x01 |
MiscChassisTypeUnknown | 0x02 |
MiscChassisTypeDeskTop | 0x03 |
MiscChassisTypeLowProfileDesktop | 0x04 |
MiscChassisTypePizzaBox | 0x05 |
MiscChassisTypeMiniTower | 0x06 |
MiscChassisTypeTower | 0x07 |
MiscChassisTypePortable | 0x08 |
MiscChassisTypeLapTop | 0x09 |
MiscChassisTypeNotebook | 0x0A |
MiscChassisTypeHandHeld | 0x0B |
MiscChassisTypeDockingStation | 0x0C |
MiscChassisTypeAllInOne | 0x0D |
MiscChassisTypeSubNotebook | 0x0E |
MiscChassisTypeSpaceSaving | 0x0F |
MiscChassisTypeLunchBox | 0x10 |
Clover will use a value according to the set Mac model, like it is used in real Macs. The effect, except mobility settings, is unclear.
<key>ChassisAssetTag</key>
<string>LatitudeD420</string>
This field is never used with real Macs. We can use it for our own purpose, for example in the HWSensors project.
<key>Trust</key>
<true/>
Used to give priority to memory descriptor values found in SMBIOS or SPD. Change if your memory is described incorrectly in Mac.
Default is <true/>
.
This group of parameters helps with CPU definitions in case the internal algorithms fail.
This parameter is now excluded. The CPU either does support Turbo, or not.
<key>Turbo</key>
<string>Yes</string>
Some processors do not support this technology. The current version has a detection, which is also printed into the boot log. Systems below Nehalem do not support Turbo mode, even if the CPU itself does.
<key>CpuFrequencyMHz</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.
<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.
<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.
<key>ProcessorType</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.
This parameter group is made for injecting video card properties as done, for example, by Natit.kext. There are many different parameters that are injected, mostly constants, some of them calculated, some of them defined in the internal table and only a few parameters can be adjusted with the configuration file.
<key>GraphicsInjector</key>
<true/>
Enables graphics injection, which is necessary for a working system. It is only advised to disable it, if you do not know a better method. Some video cards, for instance Nvidia GTX 6xx or AMD Radeon HD 6xxx do not require injection and it will automatically be disabled without user interaction. At least it is enough to reach the desktop.
Enabled by default.
<key>VRAM</key>
<integer>1024</integer>
Amount of video memory in MB. It is determined automatically but no one will be harmed if you write a correct value. However, changing it has not helped anyone yet.
<key>LoadVBios</key>
<true/>
Loads a video bios from a file, which needs to be stored at the directory EFI/CLOVER/OEM/[model]/ROM or EFI/CLOVER/ROM with the name [vendor]_[device].rom,
for instance 1002_68d8.rom. Sometimes it makes sense to load video bios
manually, for example when you need a patched version or when the video
card does not show it to the system - like mobile Radeon cards. In this
case it is enough to set this parameter to Yes
without
providing any file. Clover will read the video bios from legacy memory
at 0xC0000, where it is present most of the times, and enable
functionality.
Apparently the video bios written to the card's ROM does not match the one stored at address 0xC0000 - the shadow ROM. In short:
<true/>
- Use for mobile Radeon cards without any external file.<false/>
- For all other variants<key>DualLink</key>
<integer>0</integer>
Default is 1
.
Some systems show a quartered screen. Use 0
to solve this problem, as showed in the example above.
<key>PatchVBios</key>
<true/>
Clover applies corrections to the shadow ROM at address 0xC0000 to allow support of the highest monitor resolution. For instance, a monitor's EDID contains the mode 1920x1080 but the video bios does not. Clover will apply it as the first mode to be used. In case the monitor does not produce an EDID, it can be injected manually.
In case ScreenResolution
in section GUI
is set, it will be used for this patch.
Should the automatic patch fail, then you can specify a manual one.
<key>PatchVBiosBytes</key>
<array>
<dict>
<key>Find</key>
<data>gAeoAqAF</data>
<key>Replace</key>
<data>gAeoAjgE</data>
</dict>
</array>
This example applied to an AMD Radeon HD 6670 video bios, resulting in a replacement of mode 1920x1440 with mode 1920x1080. It is advised to choose a mode with the same horizontal resolution.
It is possible to apply multiple patches. An Nvidia video bios, for instance, was successfully modified with four patches.
<key>InjectEDID</key>
<true/>
This parameter is useful when an EDID exists but is not seen by
Apple's drivers. In this case it is enough to set this option to <true/>
. Clover will automatically extract the EDID and provide it to the drivers. See Mobile Radeons for more info. For monitors without DDC and for UEFI-only computers a custom EDID is needed:
<key>CustomEDID</key>
<data>AP///////wAyDADfAAAAAAASAQOAIRV4CunVmVlTjigmUFQAAAABAQEBAQEBAQEBAQEBAQEB3iGgcFCEHzAgIFYAS88QAAAY3iGgcFCEHzAgIFYAS88QAAAAAAAA/gBXNjU3RwAxNTRXUDEKAAAA/gAjMz1IZYSq/wIBCiAgAJo=</data>
As a missing EDID cannot be extracted, you will need another one. The main requirement is to have a correct maximal resolution.
Another possibility is to use ViewSonic EDID Editor v3.1.5 that can easily be ported to Mac, if needed.
An EDID from a Dell Inspiron will be used in the sample configuration file with a matrix of 1440x900.
A custom EDID will also be used for automatic video bios patching. Look above.
<key>VideoPorts</key>
<integer>2</integer>
The amount of ports on a video card, including TVO and/or HDMI. The chosen Apple framebuffer may not correspond to our real video card.
<key>FBName</key>
<string>Macaque</string>
This parameter is specific to AMD Radeon cards, which have a bunch of different framebuffers without any specific pattern. For a wide range of common video cards Clover will automatically choose a suiting framebuffer name. Feel free to set your own if you want. If you do not know what to write here, delete this parameter completely.
Do not use Macaque! It is solely used for absurdity. But no - people still use it in their configurations!
Small guidance table:
Series v / Type > | Mobile | Desktop |
---|---|---|
HD 5000 | Alouatta | Baboon |
HD 6000 | Cttail | Ipomoea |
HD 7000 | Pondweed | Futomaki |
<key>NVCAP</key>
<string>04000000000003000C0000000000000A00000000</string>
This parameter is only useful for Nvidia video cards and configures types and usage of video ports. The example line contains 40 capitalised hexadecimal digits. Theory is missing in this case and praxis shows controversial results.
Following table exists (found somewhere on insanelymac) but its correctness is debatable:
You can also find other methods on calculating a correct value for this line.
Clover will try to generate one according to the video bios.
<key>display-cfg</key>
<string>03010300FFFF0001</string>
This parameter is also just for Nvidia cards. For details see the topic on projectosx. However the listed examples are controversial. You can see real configurations in this topic. Apparently it is best to just let Clover handle this value. Leave it out completely and let Clover do the calculation.
<key>ig-platform-id</key>
<string>0x01620005</string>
This parameter is used to enable the internal Intel HD 4000 video card. Until now no common rule for selecting a value was found, so either let Clover handle this parameter or use another one if it does not work.
Here is a table with possible values:
Value | Type | Ports |
---|---|---|
0x01660000 | Mobile | 4 ports: 1 LVDS, 3 DP |
0x01660001 | Mobile | 4 ports: 1 LVDS, 1 HDMI, 2 DP |
0x01660002 | Mobile | 1 port: LVDS |
0x01660003 | Mobile | 4 ports: 1 LVDS, 1 HDMI e 2 DP |
0x01660004 | Mobile | 1 port: LVDS |
0x01620005 | Desktop | 3 ports: DP |
0x01620006 | Desktop | 0 ports |
0x01620007 | Desktop | 0 ports |
0x01660008 | Mobile | 3 ports: 1 LVDS, 2 DP |
0x01660009 | Mobile | 3 ports: 1 LVDS, 2 DP |
0x0166000a | Mobile | 3 ports: 2 DP, 1 HDMI |
0x0166000b | Mobile | 3 ports: 2 DP, 1 HDMI |
This parameter group enables patching on-the-fly.
Requirement: booting with kernel cache or with the key NoCache.
Should the cache be missing because of other reasons, then patching will not be enabled.
<key>Debug</key>
<true/>
Enables detailed output describing the patching process. Useful for debugging purposes.
<key>KernelCpu</key>
<true/>
Eliminates kernel panics related to an unsupported CPU, like Yonah, Atom or Ivy Bridge.
However, the kernel has other algorithms which will not work correctly
when using an unsupported CPU and this patch will not solve all
problems. It is highly unlikely that this will work with a Pentium M,
Pentium 4 or and AMD. The use of a special replacement kernel is advised
in such cases.
<key>AsusAICPUPM</key>
<true/>
Some vendors, like ASUS, restrict the use of MSR register 0xE2 in their power management module to ReadOnly. On Sandy/Ivy Bridge systems the kext AppleIntelCpuPowerManagement will try to write to this register and cause a kernel panic. This patch will eliminate the kext's write operations.
<key>AppleRTC</key>
<true/>
OS X has compatibility issues with a BIOS CMOS resulting in its reset
on each wake after sleep and reboot, which is noticeable in a loss of
BIOS settings. Mostly Gigabyte motherboards are affected. Usually it can
be solved by patching Device(RTC) in the DSDT.
If this does not help, the kext itself can be patched, which is done here.
<key>KernelLapic</key>
<false/>
HP notebooks have lapic problems, which can be solved by using the boot parameter cpus=1
or by using this option.
<key>KextsToPatch</key>
<array>
Apart from the built-in patches you can create your own ones providing following data: the binary file name, the data to find and the data to replace with - both in hexadecimal. The data length must be equal. A smaller replacement data line can be filled with zeroes.
<key>KextsToPatch</key>
<array>
<dict>
<key>Name</key>
<string>VoodooHDA</string>
<key>Find</key>
<data>SGVhZHBob25lcwA=</data>
<key>Replace</key>
<data>VGVsZXBob25lcwA=</data>
</dict>
</array>
Note: the patch data is encoded in base64 due to the data type of the field.
Common patches are:
<dict>
<key>Name</key>
<string>IOAHCIBlockStorage</string>
<key>Find</key>
<data>QVBQTEUgU1NEAA==</data>
<key>Replace</key>
<data>AAAAAAAAAAAAAA==</data>
</dict>
Define external drivers as internal to fix yellow drive icons:
<dict>
<key>Name</key>
<string>AppleAHCIPort</string>
<key>Find</key>
<data>RXh0ZXJuYWw=</data>
<key>Replace</key>
<data>SW50ZXJuYWw=</data>
</dict>
Allow booting with a MacPro4,1 or MacPro5,1 SMBIOS definition without ECC memory:
<dict>
<key>Name</key>
<string>AppleTyMCEDriver</string>
<key>Find</key>
<data>cgoATWFjUHJvNCwxAE1hY1BybzUsMQBY</data>
<key>Replace</key>
<data>cgoAAAAAAAAAAAAAAAAAAAAAAAAAAABY</data>
</dict>
It is sometimes necessary to additionally modify a kext's Info.plist. In this case following syntax is used:
<dict>
<key>Name</key>
<string>AppleHDAController</string>
<key>Comment</key>
<string>Patch_to_not_load_this_driver</string>
<key>InfoPlistPatch</key>
<true/>
<key>Find</key>
<string>0x04020000</string>
<key>Replace</key>
<string>0x44220000</string>
</dict>
Side note: The patch is supposed to be done in the cache. If you patch an Info.plist to allow the loading of a kext, then it is not yet present in the cache. You will need to reboot twice. First with the key NoCaches to allow FSInject to load the kext and a second time for the cache to be patched successfully.
<key>ATIConnectorsController</key>
<string>6000</string>
For a fully working AMD video card injecting properties into the registry is not enough. Additionally a modification of the connectors in the according controller binary file is necessary. The example points to the 6000 series controller file:
<key>ATIConnectorsData</key>
<string>000400000403000000010000210302040400000014020000000100000000 040310000000100000000001000000000001</string>
<key>ATIConnectorsPatch</key>
<string>040000001402000000010000000004040004000004030000000100001102 010500000000000000000000000000000000</string>
This method works for systems using Mac OS X 10.7 or newer.
More info in the post of bcc9 on insanelymac.
Parameter group for tweaking setting affecting PCI devices.
<key>StringInjector</key>
<false/>
Enabling it will cause the automatic injection to turn off and allow the injection of a custom string.
<key>DeviceProperPes</key>
<string>0207364862FA54HG345</string>
To create your own string you need the tool gfxutil that, for example, is bundled with DarwinDumper. You will need to create an xml file using a device path in standard notation as header and list properties, which will be injected. The example shows a file used to enable a video card:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
<key>AAPL,HasPanel</key>
<data>AQAAAA== </data>
<key>built-in</key>
<data>AA==</data>
<key>class-code</key>
<data>AAADAA==</data>
<key>device_type</key>
<data>ZGlzcGxheQA=</data>
<key>model</key>
<data>R01BIDk1MAA=</data>
</dict>
</dict>
</plist>
It is possible to obtain the currently used plist with DarwinDumper, to modify it and convert it into string form with the command:
./gfxutil –i xml –o hex devprop.plist devprop.hex
.. resulting in:
d30000000100000001000000c70000000500000002010c00d041030a000000000101060000027fff0400100000006d006f00640065006c0000000c000000474d4120393530001c0000006400650076006900630065005f00740079007000650000000c000000646973706c617900200000004100410050004c002c00480061007300500061006e0065006c0000000800000001000000160000006200750069006c0074002d0069006e00000005000000001a00000063006c006100730073002d0063006f006400650000000800000000000300
The result needs to be used as a value for DeviceProperties
. The same effect can be achieved by adding a _DMS method into the according section of your DSDT. It may be practical to use the string method when no DSDT is available yet.
Deprecated. An UID of 0 is set automatically.
<key>PCIRootUID</key>
<integer>0</integer>
The injection of properties depends on the ID of PciRoot
.
Earlier the ID was thought of as a property but with time,
hackintoshing showed that this is just an identification number written
into the DSDT:
Device (PCI0)
{
Name (_HID, EisaId ("PNP0A08"))
Name (_CID, EisaId ("PNP0A03"))
Name (_ADR, Zero)
Name (_UID, Zero)
Name (_UID, Zero)
defines _UID as 0 or with One
as 1. You can change this value without any side effects. Real Macs always use 0 and boot.efi always assumes this value. This is the reason why the DSDT should be corrected to use 0.
<key>HDAInjection</key>
<string>Detect</string>
Property injection for the sound chip. Only works when the DSDT defines Device (HDEF)
.
If you renamed it, you can also inject the other properties
differently. Do not use this parameter with VoodooHDA. Possible options
are:
No
- Injection is turned offDetect
- Automatic detection of the sound chip and
injection of its ID as layout ID. Actually this is nonsense but still
very popular. Does not do any harm and affects the display of sound
properties in System Profiler.883
- Decimal number representing. Refers to Realtek ALC883 in this case.0x373
- Same as above in hexadecimal.These numbers are incorrect, you will need to find the correct value and possibly replace the layout file bundled with AppleHDA to get the chip working.
<key>USBInjection</key>
<true/>
Injects USB properties. You can turn it off for whatever reason, if you need. It is also disabled if the DSDT patch mask matches 0x1000
to prevent data duplication.
<key>USBFixOwnership</key>
<true/>
It is possible to leave USB injection enabled and only turn off the ownership fix.
This fix is not relevant for UEFI booting.
<key>InjectClockID</key>
<true/>
<true/>
- Enables a good, deep sleep, which cannot be exited by keyboard or mouse input.<false/>
- The PC will possibly sleep and it can
be woken up by keyboard or mouse; or it will be automatically woken up
by some attached deviceSet it to your liking.
Default value is set to disabled.
<key>LpcTune</key>
<true/>
Enables the initialisation of the LPC controller chip. According to Intel's ICH8M specification, it contains an LPC controller device that stores following data in register A0:
Bit | State | Effect |
---|---|---|
12 | 0 | Enable C4 |
11 | 1 | Enable C6 |
7 | 1 | Enter C4 when C3 is invoked |
3 | 1 | Enable Intel SpeedStep - not related to Enhanced Intel SpeedStep Technology (EIST) and C-,P-States! |
These bits are defined for the mobile chipset only and will be useless for desktops.
Probably this will not have any effect on notebooks, either.
Parameter group for defining runtime variables affecting Apple services or Clover itself.
Deprecated! Will automatically be read from SMBIOS.
<key>MLB</key>
<string>XXXXXXXXXX</string>
Digits and letters, 17 in length, describing the motherboard's serial
number. No special rule exists here. The best option is to choose a
real serial number and to replace digits in the middle. For instance,
write …SLICE…
or whatever comes to your mind.
Deprecated! Will automatically be read from SMBIOS.
<key>ROM</key>
<data>AAAAAAAA</data>
Twelve hexadecimal digits, often corresponding to the MAC address of the ethernet card. According to several reports this value can be random.
<key>MountEFI</key>
<false/>
This parameter is connected to the startup script and passes the option to automatically mount the ESP (EFI System Partition) on each boot. For most people this will be useless. Thus it is recommended to disable it and - when needed - to enable the according option in CloverGUI.
Alternatively you can specify the disk ID, for example disk1
to mount a specific ESP on multi-disk systems.
<key>LogEveryBoot</key>
<string>Yes</string>
The boot log is usually needed for debugging purposes only. It is
recommended to turn this option off. Additionally you can specify the
maximal amount of stored logs, for example 10
.
<key>LogLineCount</key>
<string>3000</string>
Specify the maximal amount of lines in the log file to prevent an endlessly growing file size.
<key>DisableDrivers</key>
<array>
<string>CsmVideoDxe</string>
<string>VBoxExt4</string>
</array>
The purpose of this parameter is to have multiple configurations in the OEM folder. Only one driver folder exists, though, and it may be necessary to disable specific drivers for different configurations. One may need OsxAptioFixDxe, another one EmuVariableDxe.
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>DropOemSSDT</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.
Other tables can be dropped, if you know which effects it will have:
<key>DropAPIC</key>
<false/>
<key>DropMCFG</key>
<false/>
Fixes booting issues when using a MacMini SMBIOS.
<key>DropHPET</key>
<false/>
<key>DropBGRT</key>
<false/>
Drops the Boot Graphics Resource Table to remove vendor specific boot logos.
<key>DropECDT</key>
<false/>
<key>DropDMAR</key>
<true/>
Enables booting on systems with CPUs supporting Intel's VT-d virtualization technology for directed I/O.
Alternatively you can use the kernel parameter dart=0
.
<key>GenerateCStates</key>
<true/>
Automatic SSDT table generation, which extends the processor section with _CST methods 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.
For Ivy Bridge CPUs, go to GenerateIvyStates.
<key>C3Latency</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.
<key>GeneratePStates</key>
<string>Yes</string>
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>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/Conte
nts/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>GenerateIvyStates</key>
<string>Yes</string>
Ivy Bridge needs another approach to generate the needed properties and it all can be achieved by just setting this parameter.
In reality this parameter stands for a group of multiple settings:
gSettings.GeneratePStates = TRUE;
gSettings.GenerateCStates = TRUE;
gSettings.EnableISS = FALSE;
gSettings.PluginType = 1;
gSettings.MinMultiplier = 7;
gSettings.DoubleFirstState = FALSE;
gSettings.DropSSDT = TRUE;
gSettings.C3Latency = 0x3E7;
This parameter is still subject to change and may be adjusted in future revisions.
Deprecated! Use GenerateIvyStates instead.
<key>DoubleFirstState</key>
<true/>
Ivy Bridge power management requires one more additional performance state, which can be achieved by, for example, doubling the first state.
<key>MinMulPplier</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>MaxMulPplier</key>
<integer>30</integer>
Introduces as an analogy to the minimal multiplier but not really necessary. It is not advised to set it.
Deprecated! Use GenerateIvyStates instead.
<key>PluginType</key>
<integer>0</integer>
Changes the type of power management plugin your system will use. Possible values are:
0
- ACPI_SMC_PlatformPlugin will be used1
- X86PlatformPlugin will be used. Select for Ivy Bridge<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>FixDsdtMask</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.
The interface settings can me modified by changing parameters in the GUI section of the main configuration file config.plist.
Older Clover revisions <1659 read the interface settings from refit.conf
<key>GUI</key>
<dict>
...
<key>TextOnly</key>
<false/>
Text-only menu mode for a minimal interface and faster loading times.
The design of the GUI depends on the chosen theme, which is set using:
<key>Theme</key>
<string>metal</string>
Additionally you can set the theme in the preference panel. This setting overrides the one in the configuration file. In case an invalid theme name is used here (no theme.plist exists at the given path), then the configuration file setting is used again. If even here the theme name is invalid, then you will be greeted with an ugly fallback theme that will still be operational.
Furthermore, this section contains parameters affecting the behaviour of the interface:
<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 offAfter 25 seconds to allow the user to enjoy some theme animations an OS is loaded, which is defined in the following parameter:
<key>DefaultBootVolume</key>
<string>MacHDD</string>
The name of the partition can be viewed in the boot log. Additionally, the name can automatically be set in NVRAM after a reboot from the Startup Disk preference panel and it will be given preference.
<key>ScreenResolution</key>
<string>1024x768</string>
You can set the desired screen resolution if it is supported by the video card and the monitor. Clover will try to set the highest available resolution, however it might fail. You can check the list of supported resolutions in the boot log. In case PatchVBios=Yes
is used in the Graphics section, you will get the highest resolution supported by the monitor. In that case this parameter may be obsolete. The default value is 1024x768
.
<key>Mouse</key>
<dict>
<key>Enabled</key>
<true/>
<key>Speed</key>
<integer>2</integer>
<key>Mirror</key>
<false/>
<key>DoubleClick</key>
<integer>500</integer>
</dict>
Enabled
- The mouse may not work or even cause the whole interface to lock up. Turn it off if this is the case.Speed
- Mouse movement speed. Reasonable values range from 2
-8
. Some mice may need a negative speed to reverse the movement. 0
turns off the mouse.Mirror
- Negative movement speed on a single axisDoubleClick
- Pause for double click detection in milliseconds. Until now 500
has been a good value for everyone.Clover's interface can show both legacy and UEFI loaders for installed operating systems. It is even possible to have multiple boot loaders on one partition. Maybe you do not need all of them and having just a couple is enough. You can hide single partitions, as well as whole loader types:
<key>Volumes</key>
<dict>
<key>Legacy</key>
<string>First</string>
<key>Hide</key>
<array>
<string>WindowsHDD</string>
<string>HD(1,GPT,E223FF7F-F2DA-4DBB-B765- 756F2D95B0FE)</string>
</array>
</dict>
Legacy
- Boot loader started through PBR. Choose from No
to hide the loader, First
to list in the beginning, Last
to list it in the end.Hide
- Hide a partition with given name or UUID.<key>HideEntries</key>
<dict>
<key>OSXInstall</key>
<true/>
<key>Recovery</key>
<true/>
<key>Duplicate</key>
<true/>
<key>WindowsEFI</key>
<false/>
<key>Grub</key>
<false/>
<key>Gentoo</key>
<false/>
<key>Ubuntu</key>
<false/>
<key>OpticalUEFI</key>
<true/>
<key>InternalUEFI</key>
<true/>
<key>ExternalUEFI</key>
<true/>
</dict>
This way you can hide loaders used by a specific operating system (why did you install them in first place?) or service partitions like Recovery or UEFI files found in different places.
One last parameter, which does not really belong here, is stored in this section:
<key>DebugLog</key>
<false/>
Setting it to <true/>
will dramatically decrease loading time and generate a log file, which can be inspected for debugging purposes after a reboot.
<key>FastBoot</key>
<true/>