How to create, edit and configure a config.plist for booting your MacOS System

As we learned from post How to create and configure an EFI-partition and EFI-Folder to properly boot your MacOS System, the config.plist is created along a basic Clover installation or also can be fixed part of any system specific EFI-Folder distribution. The config.plist is an intrinsic system configuration file, absolutely mandatory for successfully booting any UEFI based Hackintosh System. It has to be optimised for each particular macOS, build and hardware configuration.

How to open the config. plist with Clover Configurator?

a.) If not already performed along post How to create and configure an EFI-partition and EFI-Folder to properly boot your MacOS System, download Clover Configurator.app from https://mackie100projects.altervista.org/download-clover-configurator/, copy Clover Configurator.app to your “Applications” folder and run Clover Configurator.app.

b.) Mount the respective EFI-Partition with Clover Configurator as described in How to create and configure an EFI-partition and EFI-Folder to properly boot your MacOS System.

c.) Open a Finder-Window for the respective EFI-Partition with Clover Configurator as described in How to create and configure an EFI-partition and EFI-Folder to properly boot your MacOS System.

d.) In the Finder Window, navigate to /EFI/CLOVER/, right-click with the mouse on “config.plist” and click on “Clover Configurator” under “Open With”

How to optimise and properly adopt the config.plist for each macOS, build and hardware configuration by means of Clover Configurator?

1.) Section ACPI

Clover Configurator Section ACPI depicted above covers the following basic config.plist system optimisation items.

a.) Under /DSDT/patches, one can implement necessary ACPI (Advanced Configuration and Power Interface) variable replacements for optimising the ACPI system component architecture in line with DSDT (Differentiated System Description Table) and SSDT (Secondary System Description Tables) implementations (experts only). Text field DSDT contains the file name convention for your system DSDT.

b.) The Drop Tables menu allows to drop certain DSDT tables. For most Hackintosh systems it is sufficient to drop DMAR to successfully boot a Hackintosh system.

c.) Menu SSDT allows specific SSDT settings mostly CPU power management related. On most Hackintosh system it is sufficient and compulsory to check enable Cpu PluginType under generate Options to enable a proper Xnu CPU Power Management (XCPM) implementation.

For further information on possible ACPI parameter configurations, see https://clover-wiki.zetam.org/Configuration/ACPI.

2.) Section Boot

a.) Menu “Arguments” of Clover Configurator Section “Boot” allows to check certain predefined Clover boot flags where none of them is really mandatory on modern Hackintosh systems. Boot flag “verbose (-v)” allows a verbose system boot with boot messages instead of the else implemented Apple symbol with the progress bar. Different settings of Boot flag “darkwake” can be of help when aiming for system sleep/wake functionality. For meaning and functions of other boot flags see e.g. https://clover-wiki.zetam.org/configuration/boot.

b.) In text field “Custom Flags” one can manually add Clover boot flags not predefined under “Arguments”. Few examples are e.g. the Lilu + Lilu plugin boot fllags visible in the screenshot above to enable Lilu + Lilu plugin functionality also under macOS beta distributions.

c) Under “Default Boot Volume” one can chose the default volume to be automatically booted from the Clover Boot Menu. This can be any fixed Volume or also the LastBootedVolume, as in the present case.

d.) Text field “Default Loader” defines the default Clover Boot loader , which is /EFI/Boot/BootX64.efi in the most general case.

e.) Text field “Time out” defines the count down duration and time, one remains in the Clover Boot mean before system boot.

Information on other parameter settings and implications can be derived from e.g https://clover-wiki.zetam.org/configuration/boot

3.) Section “Boot Graphics”

Clover Configurator Section “Boot Graphics” usually is of minor importance for modern Hackintosh systems and remains usually untouched.

4.) Section “CPU”

Also Section “CPU” basically remains untouched on modern Hackintosh systems. CPU Type can help in doing some cosmetics with respect to the CPU information displayed in Apple’s system report, in case the CPU is not automatically detected or natively implemented by macOS anyway. Furthermore, options under Skylake Settings are exports only and allow dedicated modification of the all over HWP (Intel Speed Shift Technology) configuration on modern Skylake and Skylake-X systems.

Other CPU properties like C-states, CPU Frequency, Bus Speed, Turbo Disable are usually defined within the mainboard BIOS.

6.) Section “Devices”

Usually also Section “Devices” remains basically untouched on modern Hackintosh systems despite the necessary manual Audio ID injection, required for all respective onboard audio controller implementations. Fake ID and individual USB settings are not of further relevance for series 100, 200, 300, x99 or X299 mainboards running under macOS Sierra, High Sierra or Mojave. Arbitrary/Porperties entries are experts only and not required for any basic config.plist and system configuration.

7.) Section “Disable Drivers”

Section “Disable Drivers” allows to manually disable certain Clover refi-drivers, else implemented in /EFI/Clover/drivers64/ or /EFI/Clover/drivers64UEFI/ and loaded during system boot. Usually this section also remains untouched within a basic config.plist configuration. Clover’s 64 bit UEFI drivers are usually manually selected during the basic Clover installation.

8.) Section “GUI”

Clover Configurator Sections “GUI” certain Clover Boot Menu screen configurations. Menu “mouse” allows the enable the use of USB wired or BT connected mouse devices within the Clover Boot Menu and also to change certain Mouse properties. The combination of “Scan” porperties and ” Hide Volume” properties, defines the visibility of all bootable system partitions detected by the Clover Boot Loader GUI.

Options like “Language”, “Screen resolution” and “theme” define further properties of the Clover Boot Loader GUI.

9.) Section “Graphics”

Section “Graphics” usually remains untouched when using state-of-the-art Nvidia and ATI/AMD GPUs like GeForce GTX 1080, Vega64 or Vega Frontier. However certain settings might become important in case of certain older ATI/AMD or Intel GPUs. Latter users are kindly asked to search for respective threads in available forums to retrieve any further necessary information.

10.) Section “Kernel and Kext Patches”

a.) KernelPM usually needs to be checked on all mainboards with locked MSR register for Kernel write.

b.) FakeCPUID is exclusively mandatory for booting X99 Broadwell/Broadwell-E or Haswell/Haswell-E Systems being “0x040674” and “0x0306F2”, respectively.

c.) X99 Broadwell/Broadwell-E or Haswell/Haswell-E Systems also require the IOPCIFamily Kext-Patch provided by PMHeart (below for 10.14 PB7)

Name*             Find*[HEX]          Replace*[HEX]       Comment
IOPCIFamily       483D0000 0040       483D0000 0080       IOPCIFamily patch © PMHeart

The IOPCIFamily Kext-Patch usually is macOS dependent!

d.) For all mainboards with more than 15 USB port implementations, the AppleUSBXHCI port limit kext patch (below for 10.14 PB7) might be fundamental for the proper implementation of all available USB ports.

Name*                               Find*[Hex]             Replace* [Hex]         Comment
com.apple.driver.usb.AppleUSBXHCI   83FB0F0F 83030500 00   83FB0F90 90909090 90   USB Port Limit Patch ©PMHear

Note that the USB Port Limit Patch can be even macOS subversion dependent! Thus before each macOS update check the validity of the former USB port limit patch or look for available updates!

e.) For booting any mainboard with locked MSR register for Kernel write one usually needs to implement the xcpm_core_scope_msrs © Pike R. Alpha kernel patch in the “KernelToPatch” subsection (below for 10.14 PB7).

Find: 31 d2 e8 91 fc ff ff
Replace: 31 d2 90 90 90 90 90

Note that also the xcpm_core_scope_msrs kernel patch can be macOS subversion dependent! Thus before each macOS update check the validity of the former xcpm_core_scope_msrs kernel patch or look for available updates!

Under 10.12.6, 10.13.6, and 10.14, X99 Broadwell/Broadwell-E or Haswell/Haswell-E Systems also require the _xcpm_pkg_scope_msrs © Pike R. Alpha Kernel patch for a successful system boot (below for 10.14 PB7).

Find: 31D2E8AE FCFFFF                    
Replace: 31D29090 909090

In case of these latter latter systems, also the _xcpm performance patch is partly mandatory to enable CPU overclocking (below for 10.14 PB7).

Find: C1E30848 63D389D0 48C1EA20 B9990100 000F3048 FF05938D 76004883 C4085B5D C30F1F40 00

Replace: BB00FF00 004863D3 89D048C1 EA20B999 0100000F 3048FF05 938D7600 4883C408 5B5DC390 90

Note that both the _xcpm_pkg_scope_msrs and _xcpm performance Kernel patches can be macOS subversion dependent! Thus before each macOS update check the validity of the former _xcpm_pkg_scope_msrs and _xcpm performance Kernel patches or look for available updates! All other _xcpm patches formerly required by Broadwell/Broadwell-E or Haswell/Haswell-E Systems under <10.12.6 are also obsolete under 10.13.6 and 10.14.

Further note that Kaby Lake, Skylake, Skylake-X and Coffey Lake CPUs on Series 100, 200, X299 and 300 mainboards are fully natively implemented at least under macOS High Sierra and Mojave and do not require any kind of FakeCPUID entry or Kext and Kernel patches, apart from the KernelPM flag and xcpm_core_scope_msrs Kernel patch in case of mainboards with locked MSR register and the usual AppleUSBXHCI USB port limit kext patch required for all mainboards.

11.) Section “RT Variables”

On section “RT Variables”, one usually uses the default settings for “ROM” beging “UseMacAddr0”, “BooterConfig” being “0x28” and “CsrActiveConfig” being “0x67”. The latter implements a disabled System Integrity Protection (SIP). A change to “CsrActiveConfig” values of “0x00” or “0x30” implies an enabled or partly enabled SIP. Note that with enabled SIP, kexts like Lilu and Lilu plugins would fail to load.

12.) Section “SMBIOS”

The choice of the adequate SMBIOS and Apple Product Model in Section “SMBIOS” is fundamental for over all system functionality and successful system boot. Different SMBIOS version can be selected by pressing the “up/down” button marked in the Screenshot above. This basically opens a list with different SMBIOS versions, where one would choose the SMBIOS of a Apple Product Model, most compatible with his/her CPU and mainboard model.

The current Screenshots above relate to SMBIOS iMacPro1,1 used for Skylake-X/X299 systems.

After selecting the appropriate SMBIOS, nearly all respective SMBIOS properties are automatically and properly filled by Clover Configurator. Yet missing properties are “Serial Number”, “Board Serial Number” and “SmUUID”, which however can be generated by pressing several times the respective “Generate” buttons at the bottom of the “Serial Number” and “SmUUID” text fields. Note hat “Serial Number”, “Board Serial Number” and “SmUUID” are secret SMBIOS credentials, which never should be distributed in public. They are unique identifiers of your particular system and absolutely mandatory for the proper registration in iCloud and for the successful use of iMessage or Facetime after a successful macOS installation.

13.) Section “System Paramters”

Section “System Parameters” usually remains unchanged with “Inject Kexts” on “Yes” and checked “Inject System ID”. Nvidia GPU users with issues in successfully loading their respective Web Driver can check “NvidiaWeb” in addition.

14.) Finally, after applying all necessary adaptations of the config.plist in the respective Sections of Clover Configurator detailed above, don’t forget to save the modified config.plist from the menu bar before closing Clover Configurator.app.

Enjoy and have fun,