• Become a Premium Member for $25/year with no ads to improve your community experience.

GUIDE How to Create OpenCore config.plist file for booting macOS on Desktops and Laptops [Intel/AMD] - OpenCore config.plist Guide

EliteMacx86

Administrator
Staff member
Joined
Jul 22, 2018
Messages
6,735
Motherboard
Supermicro X11SPA-T
CPU
Intel Xeon W-3275 28 Core
Graphics
2xAMD RX 580 8GB
OS X/macOS
13.x
Bootloader
  1. OpenCore (UEFI)
Mac
  1. Mac mini
  2. MacBook Pro
Mobile Phone
  1. Android
  2. iOS
How to Create OpenCore config.plist file for booting macOS on Desktops and Laptops [Intel/AMD] - OpenCore config.plist Guide

By following this guide, you'll be able to create a config.plist for booting macOS on a Desktop or Laptop. This guide is meant for macOS compatible hardware and will not work if your hardware isn't compatible, regardless of the platform.

This guide provides the required information for setting up config.plist which is only valid for OpenCore and is applicable for the following segments:
  • Desktops [Intel/AMD]
  • Laptops [Intel/AMD]
  • HEDT [Intel/AMD]
Please note that this guide does not provide a step-by-step guide configuration for an end user hardware as the hardware specifications may vary from user to user and this guide only provides a sample configuration for the following



config.plist Limitations


The OpenCore config.plist file has restrictions on size, nesting levels, and number of keys:

• The config.plist file size shall not exceed 32 MBs.
• The config.plist file shall not have more than 32 nesting levels.
• The config.plist file may have up to 32,768 XML nodes within each plist object. – One plist dictionary item is counted as a pair of nodes

Configuration Structure


The config.plist is structured to group related elements in subsections as follows:

FunctionPurpose
AddProvides support for data addition. Existing data will not be overridden, and needs to be handled separately with Delete if necessary.
DeleteProvides support for data removal
PatchProvides support for data modification
QuirksProvides support for specific workarounds

config.plist Sections

The config.plist consist of the following sections. All of these sections must be defined under config.plist, according to the OpenCore version.

SectionPurpose
ACPI
Booter
DeviceProperties
Kernel
Misc
NVRAM
PlatformInfo
UEFI

Obtaining config.plist File


Compatibility

This guide covers the creation of config.plist for the following:

Intel Desktops
  • Sandy Bridge
  • Ivy Bridge
  • Haswell
  • Broadwell
  • Skylake
  • Kaby Lake
  • Coffee Lake
  • Comet Lake
  • Rocket Lake
  • Alder Lake
  • Raptor Lake
Intel Laptops
  • Arrandale
  • Sandy Bridge
  • Ivy Bridge
  • Haswell
  • Broadwell
  • Skylake
  • Kaby Lake/Kaby Lake-R/Kaby Lake G
  • Amber Lake Y (8th Gen)
  • Amber Lake Y (10th Gen)
  • Coffee Lake/Coffee Lake-R
  • Whiskey Lake
  • Canon Lake
  • Comet Lake
  • Ice Lake
NOTE: Tiger Lake and Later are not supported due to IGPU compatibility.

Intel HEDT
  • Nehalem
  • Westmere
  • Sandy Bridge-E
  • Ivy Bridge-E
  • Haswell-E
  • Broadwell-E
  • Skylake-X/W
  • Cascade Lake-X/W
AMD Desktops
  • Bulldozer (15h)
  • Piledriver (15h)
  • Jaguar (16h)
  • Zen/Zen+/Zen 2 (17h)
  • Zen 3/Zen 3+ / Zen 4 (19h)

AMD Laptops



AMD HEDT


Editing config.plist File
The OpenCore config.plist file can be edited with any text editor. However, specialized software is highly recommended for a better experience. Please note that config.plist created for a specific hardware configuration should never be used on the different hardware configurations.
 
Last edited:
OpenCore Configuration

1. ACPI



The ACPI section is not only first in the list but also the most important. This section is for loading, blocking, and patching the ACPI tables. The sub-sections are explained below.

1.1 Add
This section is for adding the DSDT and SSDT files for your system which will allow booting macOS. This can include the mandatory SSDTs from the OpenCore package as well as any add-on SSDTs for specific purposes such as USB and Thunderbolt.

QUICK INFO:
  • The ACPI table loading depends on the order of the items in the list. Therefore, the mandatory SSDTs should always load first. Usually, the mandatory ACPI loading order should be SSDT-EC-USBX, SSDT-AWAC-DISABLE, SSDT-PLUG, SSDT-PNLF, etc.
  • The dependencies SSDTs should load first before the SSDTs that depend on them (e.g. SSDT-DTGP should always load first before the Thunderbolt SSDT)
  • When adding DSDT.aml, the DSDT.aml should be added first followed by the rest of the SSDTs.
  • ACPI Tables defined here must exist in EFI/OC/ACPI directory.

Add Properties
PropertiesDescription
PathDefines ACPI Tables path.
CommentUsed to provide a reference for the ACPI Table
EnabledUsed to Enable or Disable the ACPI Tables
Enables ACPI Tables when set to true.

1.2 Delete
This section allows blocking the ACPI tables from loading.

Delete Properties
PropertiesDescription
TableSignatureDefines Table Signature
Match Table size equal to the value defined here
OemTableIdDefines ACPI Table's OEM ID.
Match table OEM ID equal to the value defined here
TabeLengthDefines Table Size
Match table size equal to the value defined here.
CommentUsed to provide a reference for the ACPI Table
AllDeletes all ACPI Tables matching the condition when set to true.
EnabledUsed to Enable or Disable the ACPI Tables
Removes particular ACPI Table when set to true.


1.3 Patch
This section is used for device renames such as USB, Graphics, Brightness and Audio. You can implement the necessary ACPI patches for optimizing the ACPI system components with DSDT and SSDT. This section is important when doing Hot-patch.

QUICK INFO:
  • In most cases, ACPI renaming is not required. This may fail or perform improper renaming of unrelated devices. WhateverGreen applies the ACPI renames automatically. However, in some cases, a rename can be required (such as I2C Trackpad), HPET, Brightness Hotkeys, or Shut Down Fix.
  • Cosmetic ACPI Renames such as PCI0 to PC00 should be ignored.
  • Duplicate renames may result the system in a non-bootable state. Especially, if the rename is done by WhaterGreen.
  • Find and Replace Value must be HEX values and of the same length. Patches of different Find and Replace lengths are unsupported as they may corrupt ACPI tables and make the system unstable due to area relocation.

Patch Properties
PropertiesDescription
BaseSelects ACPI path base for patch lookup (or immediate replacement) by obtaining the offset to the provided path.
Only fully-qualified absolute paths are supported (e.g. \_SB.PCI0.LPCB.HPET). Currently supported object types are: Device, Field, Method.
TableSignatureDefines Table Signature
Match Table size equal to the value defined here
OemTableIdDefines ACPI Table's OEM ID.
Match table OEM ID equal to the value defined here
TableLengthDefines Table Size
Match table size equal to the value defined here.
FindData to find. Must be equal to Replace in size if set.
Can be empty, when Base is specified, immediate replacement after Base lookup happens in this case.
ReplaceReplacement data of one or more bytes.
CommentUsed to provide a reference for the ACPI Renames
MaskData bitwise mask used during find comparison. Allows fuzzy search by ignoring not masked (set to zero) bits. Must be equal to Replace in size if set.
ReplaceMaskData bitwise mask used during replacement. Allows fuzzy replacement by updating masked (set to non-zero) bits. Must be equal to Replace in size if set.
BaseSkipNumber of found Base occurrences to skip before finds and replacements are applied
CountNumber of occurrences to patch.
LimitMaximum number of bytes to search for.
SkipNumber of found occurrences to skip before replacements are applied.
EnabledUsed to Enable or Disable the ACPI Renames
Enables particular ACPI Rename when set to true.


1.4 Quirks
This section allows to apply certain ACPI Quirks. The Quirks consist of the following:

QuirksDescription
FadEnableReset
  • Provide reset register and flag in FADT table to enable reboot and shutdown.
  • Mainly required on legacy hardware and a few newer laptops.
  • Can also fix power-button shortcuts. Not recommended unless required.
NormalizeHeaders
  • Clean up ACPI header fields to workaround macOS ACPI implementation flaws that result in boot crashes.
RebaseRegions
  • Attempt to heuristically relocate ACPI memory regions.
  • When nothing else helps, this option could be tried to avoid stalls at PCI Configuration Begin phase when booting macOS by attempting to fix the ACPI addresses. It is not a magic bullet however and only works with the most typical cases.
  • Do not use it unless absolutely required as it can have the opposite effect on certain platforms and result in boot failures.
ResetHwSig
  • Reset FACS table HardwareSignature value to 0.
  • This works around firmware that fail to maintain hardware signature across the reboots and cause issues with waking from hibernation.
ResetLogoStatus
  • Reset BGRT table Displayed status field to false.
  • This works around firmware that provide a BGRT table but fail to handle screen updates afterwards.
SyncTableIds
  • Sync table identifiers with the SLIC table.
  • This works around patched tables becoming incompatible with the SLIC table causing licensing issues in older Windows operating systems.
 
Last edited:
2. Booter

This section is used for booting and

This section is used for different UEFI modifications and provides firmware fixes in relation to the Apple bootloader (boot.efi). The modifications currently provide various patches and environment alterations for different firmware types. The sub-sections are explained below.

MmioWhitelist

Designed to be filled with plist dict values, describing addresses critical for particular firmware functioning when DevirtualiseMmio quirk is in use.

MmioWhitelist Properties
PropertiesDescription
AddressExceptional MMIO address, which memory descriptor should be left virtualised (unchanged) by DevirtualiseMmio. This means that the firmware will be able to directly communicate with this memory region during operating system functioning, because the region this value is in will be assigned a virtual address.

The addresses written here must be part of the memory map, have EfiMemoryMappedIO type and EFI_MEMORY_RUNTIME attribute (highest bit) set. The debug log can be used to find the list of the candidates.
CommentUsed to provide a reference for the MMIO address
EnabledUsed to Enable or Disable the MMIO address
Exclude MMIO address from the devirtualization procedure

Patch

Performs binary patching in booter. To be filled with plist dictionary values, describing each patch.

Patch Properties
PropertiesDescription
ArchDefines Booter patch architecture (i386, x86_64).
IdentifierApple for macOS booter (typically boot.efi); or a name with a suffix, such as bootmgfw.efi, for a specific booter.
CommentUsed to provide a reference for the Patches
FindData to find. Must be equal to Replace in size if set.
ReplaceReplacement data of one or more bytes.
MaskData bitwise mask used during find comparison. Allows fuzzy search by ignoring not masked (set to zero) bits. Must be equal to Find in size if set.
ReplaceMaskData bitwise mask used during replacement. Allows fuzzy replacement by updating masked (set to non-zero) bits. Must be equal to Replace in size if set.
CountNumber of patch occurrences to apply
LimitThe maximum number of bytes to search for.
SkipNumber of found occurrences to skip before replacements are applied.
EnabledUsed to Enable or Disable the booter patch.
Enables particular booter patch when set to true.

Quirks

This section allows to apply certain Booter quirks. The Quirks consist of the following:

QuirksNotes
AllowRelocationBlock
  • Allows booting macOS through a relocation block.
  • The relocation block is a scratch buffer allocated in the lower 4 GB used for loading the kernel and related structures by EfiBoot on firmware where the lower memory region is otherwise occupied by (assumed) non-runtime data. Right before kernel startup, the relocation block is copied back to lower addresses. Similarly, all the other addresses pointing to the relocation block are also carefully adjusted. The relocation block can be used when:
    • No better slide exists (all the memory is used)
    • slide=0 is forced (by an argument or safe mode)
    • KASLR (slide) is unsupported (this is macOS 10.7 or older)
  • This quirk requires ProvideCustomSlide to be enabled and typically also requires enabling AvoidRuntimeDefrag Quirk to function correctly. Hibernation is not supported when booting with a relocation block, which will only be used if required when the quirk is enabled. While this quirk is required to run older macOS versions on platforms with used lower memory, it is not compatible with some hardware and macOS 11. In such cases, consider using EnableSafeModeSlide Quirk instead.
AvoidRunTimeDefrag
  • Protect from boot.efi runtime memory defragmentation
  • Fixes certain UEFI runtime services such as date time, NVRAM, power control, etc.
  • Apart from Apple and VMware, this quirk is required by the rest of the firmware
  • Required for every platform.
DevirtualiseMmio
  • Remove runtime attribute from select MMIO regions.
  • This option reduces the stolen memory footprint from the memory map by removing the runtime bit for known memory regions.
  • This quirk may result in an increase of KASLR slides available but without additional measures, it is not necessarily compatible with the target board. This quirk typically frees between 64 and 256 megabytes of memory, present in the debug log, and on some platforms, is the only way to boot macOS, which otherwise fails with allocation errors at the bootloader stage.
  • This option is useful on all types of firmware, except for some very old ones such as Sandy Bridge. On certain firmware, a list of addresses that need virtual addresses for proper NVRAM and hibernation functionality may be required. Use the MmioWhitelist section for this.
  • Required for Coffee Lake and later.
DisableSingleUser
  • Disables single user mode.
  • This is a security option that restricts the activation of single user mode by ignoring the CMD+S hotkey and the -s boot argument. The behavior with this quirk enabled is supposed to match T2-based model behavior. Refer to this archived article to understand how to use single user mode with this quirk enabled.
DisableVariableWrite
  • Protect from macOS NVRAM write access
  • This is a security option that restricts NVRAM access in macOS. This quirk requires OC_FIRMWARE_RUNTIME protocol implemented in OpenRuntime.efi.
  • This quirk can also be used as an ad hoc workaround for defective UEFI runtime services implementations that are unable to write variables to NVRAM and results in operating system failures.
DiscardHibernateMap
EnableSafeModeSlide
  • Patch bootloader to have KASLR enabled in safe mode.
  • This option is relevant to users with issues booting to safe mode (e.g. by holding shift or with using the -x boot argument). By default, safe mode forces 0 slide as if the system was launched with the slide=0 boot argument.
  • This quirk requires ProvideCustomSlide to be enabled.
  • This quirk can be helpful if you're unable to boot into safe mode.
  • Required for every platform.
EnableWriteUnprotector
  • Allows write access to UEFI runtime services code.
  • This option bypasses WˆX permissions in code pages of UEFI runtime services by removing the write protection (WP) bit from the CR0 register during their execution. This quirk requires OC_FIRMWARE_RUNTIME protocol implemented in OpenRuntime.efi.
  • This Quirk can conflict with RebuildAppleMemoryMap if enabled. It is always recommended to enable RebuildAppleMemoryMap on Coffee Lake and newer platforms. However, a few motherboards will require

  • This quirk may potentially weaken firmware security, please use RebuildAppleMemoryMap if the firmware supports the memory attributes table (MAT)
  • Required for systems up to Kaby Lake
ForceBooterSignatureSet macOS boot-signature to OpenCore launcher.
Booter signature, essentially a SHA-1 hash of the loaded image, is used by Mac EFI to verify the authenticity of the bootloader when waking from hibernation. This option forces macOS to use OpenCore launcher SHA-1 hash as a booter signature to let OpenCore shim hibernation wake on Mac EFI firmware. OpenCore launcher path is determined from the LauncherPath property.
ForceExitBootServices
  • Retry ExitBootServices with a new memory map on failure.
  • Try to ensure that the ExitBootServices call succeeds. If required, an outdated MemoryMap key argument can be used by obtaining the current memory map and retrying the ExitBootServices call.
  • The need for this quirk is determined by early boot crashes of the firmware. Do not use this option without a full understanding of the implications.
ProtectMemoryRegions
  • Protect memory regions from incorrect access.
  • Some types of firmware incorrectly map certain memory regions:
    • The CSM region can be marked as boot services code, or data, which leaves it as free memory for the XNU kernel.
    • MMIO regions can be marked as reserved memory and stay unmapped. They may however be required to be accessible at runtime for NVRAM support.
  • Fixes regions such as ACPI NVS for CSM or MMIO for MMIO.
  • The need for this quirk is determined by artifacts, sleep/wake issues, and boot failures. This quirk is typically only required by very old firmware.
ProtectSecureBoot
  • Protect UEFI Secure Boot variables from being written.
  • Reports security violation during attempts to write to db, dbx, PK, and KEK variables from the operating system.
  • This quirk attempts to avoid issues with NVRAM implementations with fragmentation issues, such as on the MacPro5,1 as well as on certain Insyde firmware without garbage collection or with defective garbage collection.
ProtectUefiServices
  • Protect UEFI services from being overridden by the firmware.
  • On VMware, the need for this quirk may be determined by the appearance of the “Your Mac OS guest might run unreliably with more than one virtual core.” message.
  • This quirk is needed for correct operation if OpenCore is chain loaded from GRUB with BIOS Secure Boot enabled.
  • Required for Coffee Lake and later (including VMware).
ProvideCustomSlide
  • Provide custom KASLR slide on low memory.
  • This option forces macOS to use a pseudo random value among the available ones.
  • Used for Slide variable calculation. However the necessity of this quirk is determined by OCABC: Only N/256 slide values are usable! message in the debug log. If the message OCABC: All slides are usable! You can disable ProvideCustomSlide! is present in your log, you can disable ProvideCustomSlide.
RebuildAppleMemoryMapGenerates Memory Map which is compatible with macOS.
Since several types of firmware come with incorrect memory protection tables, this quirk often comes paired with SyncRuntimePermissions.
SetupVirtualMap
  • Setup virtual memory at SetVirtualAddresses.
  • Fixes several virtual address issues and tends to fix early Kernel Panics.
  • The necessity of this quirk is determined by early boot failures. Currently, new firmware with memory protection support (such as OVMF) do not support this quirk.
SignalAppleOS
  • Report macOS being loaded through OS Info for any OS.
  • This quirk is useful on Mac firmware, which loads different operating systems with different hardware configurations. For example, it is supposed to enable Intel GPU in Windows and Linux in some dual-GPU MacBook models.
SyncRuntimePermissions
  • Update memory permissions for runtime environment.
  • The need for this quirk is indicated by early boot failures. Only firmware released after 2017 is typically affected.
ProvideMaxSlide
  • Provide maximum KASLR slide when higher ones are unavailable.
ResizeAppleGpuBars
  • Reduce GPU PCI BAR sizes for compatibility with macOS.
  • If your firmware has Resizable BAR Support Enabled, use 0 to enable Resizable BAR.
  • If your firmware does not have Resizable BAR Support or if the Resizable BAR Support is Disabled, use -1 to disable Resizable BAR.
  • For Resizable BAR Support to be Enabled, both, the GPU and the firmware must support the Resizable BAR. For BIOS (Legacy), and GPUs which does not support Resizable BAR, it is recommended to use -1 to disable this Quirk.
  • Do not Enable the Resizable BAR Support in Firmware if this Quirk is Disabled.
  • Setting other PCI BAR sizes can cause instabilities within macOS.
 
3. DeviceProperties

This section is used for adding device properties. This includes PCI Devices information such as Graphics, Audio, WiFi, Ethernet, and other controllers. This section can be also used for PCI Device implementation, Device Spoofing, and EDID injection.

Devices
The PCI Devices

Properties
PropertiesDescription
 
4. Kernel

This section is used for different kinds of Kernelspace modifications for Apple Kernel (XNU). This includes Kexts Injection, Kernel and Driver patching, driver blocking, and CPU spoofing. The sub-sections are explained below.

Add

This section is for adding the Kexts files for your system which will allow booting macOS. This can include the mandatory Kexts as well as any add-on Kext(s) for specific purposes such as USB and Card Reader.

QUICK INFO:
  • The Kext loading depends on the order of the items in the list. Therefore, the mandatory Kexts should always load first. Usually, the mandatory kexts loading order should be Lilu, VirtualSMC, WhateverGreen, AppleALC, etc.
  • The dependencies kexts should load first before the kexts that depend on them.
  • To track the dependency order, inspect the OSBundleLibraries key in the Info.plist file of the kext(s) being added. Any kext included under the key is a dependency that must appear before the kext is added.
  • Kexts may have inner kexts (Plugins) included in the bundle. Such Plugins must be added separately and follow the same global ordering rules as other kexts.
  • All the plugins must load after loading their dependencies otherwise the kext will no longer function even when loaded in macOS/OS X.
  • Kexts defined here must exist in EFI/OC/Kexts directory.

Add Properties
PropertiesDescription
Arch
  • Defines Kext Architecture
Any
  • Apply to any supported architecture.
i386
  • (32-bit)
x86_x64
  • (64-bit)
BundlePath
  • Defines Kext name (e.g. Lilu.kext or YourKext.kext/Contents/PlugIns/YourSubKext.kext)
Comment
  • Used to provide a reference for the Kexts.
ExecutablePathKext executable path (e.g. Contents/MacOS/Lilu).
  • The path to the actual executable is hidden within the kext, you can see what path your kext has by right-clicking and selecting Show Package Contents. Generally, they'll be Contents/MacOS/Kext but some have kexts hidden within under Plugin folder.
  • plist only kexts do not need this entry.
PlistPath
  • Kext Info.plist path (e.g. Contents/Info.plist).
MinKernel
  • Minimum Kernel version for the kext injection. See Kernel Support Table for more information.
MaxKernel
  • Maximum Kernel version for the kext injection. See Kernel Support Table for more information.
Enabled
  • Used to Enable or Disable the Kext Injection.
  • Enables particular Kext when set to true.

Block

This section is for blocking the Kext(s) from the prelinked kernel.

Block Properties
PropertiesDescription
Arch
  • Defines Kext Architecture for blocking.
Identifier
  • Defines Kext bundle identifier (e.g. com.apple.driver.AppleTyMCEDriver).
Comment
  • Used to provide a reference for the blocking Kexts.
MinKernel
  • Minimum Kernel version for blocking the Kext. See Kernel Support Table for more information.
MaxKernel
  • Maximum Kernel version for blocking the Kext. See Kernel Support Table for more information.
Strategy
  • Determines the behavior of kernel driver blocking.
  • The possible values include:
    • Disable - Forcibly make the kernel driver kmod startup code return failure
    • Exclude - Remove the kernel driver from the kernel cache by dropping plist entry and filling in zeroes.
  • It is risky to Exclude a kext that is a dependency of others.
  • At this moment Exclude is only applied to prelinkedkernel and newer mechanisms.
  • In most cases strategy Exclude requires the new kext to be injected as a replacement.
Enabled
  • Used to Enable or Disable the Kext Blocking.
  • Blocks particular Kext when set to true.

Force

This section allows forcing kexts to load from the System Volume if they are not cached.

QUICK INFO:
  • This resolves the problem of injecting kexts that depend on other kexts, which are not otherwise cached. The issue typically affects older operating systems, where various dependency kexts, such as IOAudioFamily or IONetworkingFamily may not be present in the kernel cache by default.
  • The Kext loading depends on the order of the items in the list. The dependencies kexts should load first before the kexts that depend on them.
  • Force happens before Add
  • The signature of the “forced” kext is not checked in any way. This makes using this feature extremely dangerous and undesirable for secure boot.
  • This feature may not work on encrypted partitions in newer operating systems.

Force Properties
PropertiesDescription
Arch
  • Defines Kext Architecture for forcing.
BundlePath
  • Kext bundle path (e.g. System\Library \Extensions \IONetworkingFamily.kext).
Identifier
  • Kext identifier to perform presence checking before adding (e.g. com.apple.iokit.IONetworkingFamily).
  • Only drivers whose identifiers are not found in the cache will be added.
Comment
  • Used to provide a reference for the force loading of Kexts.
ExecutablePath
  • Kext executable path (e.g. Contents/MacOS/IONetworkingFamily).
PlistPath
  • Kext Info.plist path (e.g. Contents/Info.plist).
MinKernel
  • Minimum Kernel version to force loading of the Kext. See Kernel Support Table for more information.
MaxKernel
  • Maximum Kernel version to force loading of the Kext. See Kernel Support Table for more information.
Enabled
  • Used to Enable or Disable force loading of the Kext.
  • Forces particular Kext to load when set to true.

Patch

This section allows patching for Kernel and Kexts prior to driver addition and removal.

Patch Properties
PropertiesDescription
ArchDefines Kext patching architecture
Identifier
Base
Comment
Find
Replace
Mask
ReplaceMask
MinKernel
MaxKernel
Count
Limit
Skip
Enabled
  • Used to Enable or Disable the Kernel Patching.
  • Enables particular Kernel Patch when set to true.

Emulate

This section allows spoofing your CPU ID to enable support for an unsupported CPU model (such as Intel Pentium and Celeron) or a CPU which is not yet supported by a specific version of macOS (such as Intel Rocket Lake and Alder Lake). This also enables XCPM support for unsupported CPU models.

Emulate Properties
PropertiesDescription
Cpuid1Data
Cpuid1Mask
MinKernel
MaxKernel
DummyPowerManagement
  • Disables AppleIntelCPUPowerManagement
  • Provides Dummy Power Management. This option is an alternative to NullCPUPowerManagement.kext for CPUs without native power management drivers in macOS.
  • Required for all AMD-based systems as there is no native Power Management.
  • Disabling this option will lead to Kernel Panic for AppleIntelCPUPowerManagement.kext.

Scheme

This section allows settings related to Kernel. These settings are relevant for older Mac Operating Systems.

Scheme Properties
PropertiesDescription
FuzzyMatch
  • Use kernelcache with different checksums when available.
  • On macOS 10.6 and earlier, kernelcache filename has a checksum, which essentially is adler32 from SMBIOS product name and EfiBoot device path. On certain firmware, the EfiBoot device path differs between UEFI and macOS due to ACPI or hardware specifics, rendering kernelcache checksum as always different.
  • Enabling this option ignores kernelcache checksum and uses the latest available cache.
  • This setting allows matching the latest kernelcache with a suitable architecture when the kernelcache without a suffix is unavailable, improving macOS 10.6 boot performance on several platforms.
  • Required for macOS Big Sur and above.
KernelArch
  • Defines Kernel Architecture type.
  • It's recommended to set this option to "Auto" and let macOS/OS X decide the Kernel Architecture.
KernelCache
  • Defines Kernel Cache type.
  • It's recommended to set this option as Auto.
CustomKernel
  • Use customized kernel cache from the Kernels directory located at the root of the ESP partition.
  • Unsupported platforms including Atom and AMD require modified versions of the XNU kernel in order to boot. This option provides the possibility of using a customized kernel cache that contains such modifications from the ESP partition.

Quirks

This section allows to apply certain Kernel quirks. It provides settings related to Kernel and several other options related to BIOS/UEFI and USB ports. The Quirks consist of the following:

QuirksDescription
AppleCpuPmCfgLock
  • Disables PKG_CST_CONFIG_CONTROL (0xE2) MSR modification in AppleIntelCPUPowerManagement.kext, commonly causing early kernel panic, when it is locked from writing.
  • Required for Ivy Bridge and older (any macOS version) and for Haswell (OS X 10.10 and older).
  • Required if MSR 0xE2 is locked or cannot be disabled in BIOS/UEFI (typically, CFG-Lock).
  • Disabling MSR Lock is the preferred option and this Quirk should be avoided whenever possible. See MSR Lock for more information.
  • Do not use this Quirk if MSR 0xE2 register is unlocked.
AppleXcpmCfgLock
  • Disables PKG_CST_CONFIG_CONTROL (0xE2) MSR modification in XNU kernel, commonly causing early kernel panic, when it is locked from writing (XCPM power management).
  • Required for Haswell and newer.
  • Required if MSR 0xE2 is locked or cannot be disabled in BIOS/UEFI (typically, CFG-Lock).
  • Disabling MSR Lock is the preferred option and this Quirk should be avoided whenever possible. See MSR Lock for more information.
  • Do not use this Quirk if MSR 0xE2 register is unlocked.
AppleXcpmExtraMsrs
  • Disables multiple MSR access critical for certain CPUs, which have no native XCPM support.
  • This is typically used in conjunction with the Emulate section on Haswell-E, Broadwell-E, Skylake-SP, and similar CPUs.
AppleXcpmForceBoost
  • Forces maximum performance in XCPM mode.
  • This Quirk is also known as the XCPM performance fix.
  • This patch writes 0xFF00 to MSR_IA32_PERF_CONTROL (0x199), effectively setting the maximum multiplier for all the time.
  • While this may increase the performance, the use of this Quirk is strongly discouraged on all systems except for the systems being used for scientific or media calculations. Only certain Xeon models typically benefit from the patch.
  • Do not use this Quirk whenever possible as it breaks the idea of CPU Power Management.
CustomPciSerialDevicePerforms change of PMIO register base address on a customised PCI serial device.
CustomSMBIOSGuid
  • Performs GUID patching for UpdateSMBIOSMode Custom mode.
  • Required for all Dell Systems.
  • When using this Quirk, you must set UpdateSMBIOSMode to Custom in PlatformInfo section.
DisableIoMapper
  • Disables IOMapper support in XNU (VT-d), which may conflict with the firmware implementation.
  • Enables Apple VTD when disabling this Quirk and enabling VT-d in Firmware Settings. However, this requires fixing of DMAR Table on systems that have VT-d enabled.
  • This Quirk is a much better alternative to dart=0 boot arg, required for disabling VT-d.
  • This option is a preferred alternative to deleting the DMAR ACPItable and/or disabling VT-d in firmware settings, which does not obstruct VT-d support in other Operating Systems if needed.
  • Misconfigured IOMMU in the firmware may result in broken devices such as Ethernet or Wi-Fi Adapters, causing network disruption. For instance, an ethernet adapter may cycle in link-up link-down state infinitely and a Wi-Fi adapter may fail to discover networks. Gigabyte is one of the most common OEMs with these issues. See Fixing DMAR Table on macOS for more information.
  • When utilizing certain Thunderbolt Devices such as Antelope, PreSonus, SlateDigital, Focusrite, and Apogee Audio Interface and NAS under macOS, VT-d must be Enabled in Firmware Settings and this Quirk must be disabled in such case.
  • Required for Network Adapters (including built-in and PCIe) on macOS Ventura.
DisableLinkeditJettison
  • Disables __LINKEDIT jettison code.
  • This Quirk lets Lilu.kext, and possibly other kexts, function in macOS Big Sur at their best performance levels without requiring the keepsyms=1 boot argument.
  • Required for macOS Big Sur and above.
DisableRtcChecksum
  • Disables primary checksum (0x58-0x59) writing in AppleRTC.
  • Required if you have a BIOS Reset issue or if the system enters into Safe Mode issue after Reboot/Shut Down from macOS. See Fixing RTC for more information.
ExtendBTFeatureFlags
  • Set FeatureFlags to 0x0F for full functionality of Bluetooth, including Continuity.
  • Enables Continuity mode.
  • This Quirk is an alternative to BT4LEContinuityFixup.kext, which does not function properly.
ExternalDiskIcons
  • Apply icon type patches to AppleAHCIPort.kext to force internal disk icons for all AHCI disks.
  • This option should be avoided whenever possible. Modern firmware typically have compatible AHCI controllers.
ForceAquantiaEthernet
  • Enables Aquantia AQtion based 10GbE network cards support.
  • In order for Aquantia cards to properly function, DisableIoMapper Quirk must be disabled, DMAR ACPI table must not be dropped, and VT-d must be enabled in BIOS.
  • Required for Aquantia Ethernet Cards. When enabling this Quirk, fixing of DMAR Table is required. See Fixing DMAR Table on macOS for more information.
ForceSecureBootScheme
  • Force x86 scheme for IMG4 verification.
  • This Quirk is required on virtual machines when using SecureBootModel different from x86legacy.
IncreasePciBarSize
  • Allows IOPCIFamily to boot with 2 GB PCI BARs.
  • Normally macOS restricts PCI BARs to 1 GB. Enabling this option (still) does not let macOS actually use PCI devices with larger BARs.
  • This Quirk should be avoided whenever possible. A need for this option indicates misconfigured or defective firmware.
LapicKernelPanic
  • Disables kernel panic on LAPIC interrupts.
  • Equivalent to Clover's Kernel LAPIC.
  • Required for HP Systems.
LegacyComppageReplaces the default 64-bit commpage bcopy implementation with one that does not require SSSE3, useful for legacy platforms. This prevents a commpage no match for last panic due to no available 64-bit bcopy functions that do not require SSSE3.
PanicNoKextDump
  • Prevent kernel from printing kext dump in the panic log preventing from observing panic details.
  • Affects 10.13 and above. Not required for older.
PowerTimeoutKernelPanic
  • Disables kernel panic on setPowerState timeout.
  • Prevents Kernel Panics on Power changes timeout for Apple drivers on macOS Catalina (10.15) and above, most notably with digital audio.
ProvideCurrentCpuInfo
  • Provides current CPU info to the kernel.
  • Depending on the CPU, the Quirk performs the following function:
    • Provides the correct TSC and FSB values to the kernel, as well as disables CPU topology validation (10.8+) for Microsoft Hyper-V.
    • Provides precomputed MSR 35h values solving kernel panic with -cpu host for KVM and other hypervisors.
    • Adds support for asymmetrical SMP systems for Intel CPUs (e.g. Intel Alder Lake) by patching core count to thread count along with the supplemental required changes (10.14+).
  • Required for Alder Lake and AMD CPUs and for Hyper-V and KVM.
ThirdPartDrives
  • Applies vendor patches to IOAHCIBlockStorage.kext to enable native features for third-party drives, such as TRIM on SSDs or hibernation support on 10.15 and newer.
  • This Quirk can be avoided for NVMe SSDs and for AHCI SSDs, you can use a built-in tool (trimforce) within macOS. See Enabling TRIM on macOS for more information.
XchiPortLimit
  • Patches various USB Kexts (AppleUSBXHCI.kext, AppleUSBXHCIPCI.kext, IOUSBHostFamily.kext) to remove 15 USB port count limit.
  • This Quirk is broken on macOS Big Sur 11.3 and above and may not function as intended. More details can be found on the USB Mapping thread.
  • This Quirk is a temporary solution and it is advised to map USB Ports instead of using this Quirk. See USB Mapping for more information.
  • This Quirk should be avoided whenever possible due to the chance of data corruption.
SetApfsTrimTimeout
  • Sets TRIM timeout in microseconds for APFS filesystems on SSDs.
  • Only applicable for macOS Mojave 10.14 and above. See macOS and TRIM for more information.
  • The failsafe value -1 indicates that this patch will not be applied, such that apfs.kext will remain untouched.
  • On macOS 12.0 and above, it is no longer possible to specify a trim timeout. However, trim can be disabled by setting 0.
  • Trim operations are only affected at the booting phase when the startup volume is mounted. Either specifying timeout, or completely disabling trim with 0, will not affect normal macOS running.
 
5. Misc

This section is used for miscellaneous configuration options affecting OpenCore Operating System loading behavior in addition to other options that do not readily fit into other sections. GUI, drive entries and debug. This includes GUI, Boot Entries, Debug, Security, and Serial.

Boot

This section is for adding the Kexts files for your system which will allow booting macOS. This can include the mandatory Kexts as well as any add-on Kext(s) for specific purposes such as USB and Card Reader.

Boot Properties
PropertiesDescription
Picker Mode
  • Sets picker mode for the OpenCore menu. The following values are supported:
  • Builtin
    • OpenCore's default user interface, with a simple text-only mode.
  • External
    • An external boot management protocol is used if available. Otherwise, the Builtin mode is used.
    • Requires OCBinaryData (Font, Image, and Label in EFI/OC/Resources directory.
    • Requires OpenCanopy.efi driver in EFI/OC/Drivers directory.
  • Apple
    • Apple boot management is used if available. Otherwise, the Builtin mode is used
Picker AttributesSets specific attributes for the OpenCore picker.
Console AttributesSets specific attributes for the console
Timeout
  • Timeout in seconds in the OpenCore picker before automatic booting of the default boot entry.
  • Set to 0 to disable.
  • It is recommended to set the timeout value to 5 seconds to select between other options if required.
TakeoffDelay
  • Delay in microseconds executed before handling the OpenCore picker startup and action hotkeys.
  • Introducing a delay may give extra time to hold the right action hotkey sequence to, for instance, boot into recovery mode. On most systems, the appearance of the initial boot logo is a good indication of the time from which hotkeys can be held down. Earlier than this, the key press may not be registered. On some platforms, setting this option to a minimum of 5000-10000 microseconds is also required to access action hotkeys due to the nature of the keyboard driver.
  • If the boot chime is configured (see audio configuration options) then at the expense of slower startup, an even longer delay of half to one second (500000-1000000) may be used to create behaviour similar to a real Mac, where the chime itself can be used as a signal for when hotkeys can be pressed. The boot chime is inevitably later in the boot sequence in OpenCore than on Apple hardware, due to the fact that non-native drivers have to be loaded and connected first. Configuring the boot chime and adding this longer additional delay can also be useful in systems where fast boot time and/or slow monitor signal synchronisation may cause the boot logo not to be shown at all on some boots or reboots.
Hibernate ModeSets the Hibernation detection mode. The following modes are supported:
  • None
    • Ignore Hibernation State.
  • Auto
    • Use RTC and NVRAM dection.
  • RTC
    • Use RTC detection.
  • NVRAM
    • Use NVRAM detection.
PickerVariant
  • Sets specific icon set to be used for OpenCore picker.
An icon set is a directory path relative to Resources\Image, where the icons and an optional manifest are located. It is recommended for the artists to use provide their sets in the Vendor\Set format, e.g. Acidanthera\GoldenGate.
  • Sample resources provided as a part of OcBinaryData repository provide the following icon set:
• Acidanthera\GoldenGate — macOS 11 styled icon set.
• Acidanthera\Syrah — macOS 10.10 styled icon set.
• Acidanthera\Chardonnay — macOS 10.4 styled icon set.
For convenience purposes there also are predefined aliases:
Auto — Automatically select one set of icons based on the DefaultBackground colour: Acidanthera\GoldenGate for Syrah Black and Acidanthera\Chardonnay for Light Gray.
• Default — Acidanthera\GoldenGate.
PickerAudioAssist
  • Enable screen reader by default in the OpenCore picker.
  • For the macOS bootloader, screen reader preference is set in the preferences.efires archive in the isVOEnabled.int32 file and is controlled by the operating system. For OpenCore screen reader support, this option is an independent equivalent. Toggling screen reader support in both the OpenCore picker and the macOS bootloader FileVault 2 login window can also be done by using the Command+F5 key combination
  • The screen reader requires working audio support. Refer to the UEFI Audio Properties section for details.
Show Picker
  • Show a simple picker to allow boot entry selection.
HideAuxiliary
  • Hides auxiliary entries from the OpenCore picker menu.
  • An entry is considered auxiliary when at least one of the following applies:
    • Entry is macOS recovery.
    • Entry is macOS Time Machine.
    • Entry is explicitly marked as Auxiliary.
    • Entry is a system (e.g. Reset NVRAM).
  • To display all entries, the picker menu can be reloaded into “Extended Mode” by pressing the Spacebar key.
  • Hiding auxiliary entries may increase boot performance on multi-disk systems.
PollAppleHotKeysEnable modifier hotkey handling in the OpenCore picker.
LauncherOptionRegister the launcher option in the firmware preferences for persistence. The following values are supported:
  • Disabled
    • OpenCore's default user interface, with a simple text-only mode.
  • Full
    • Create or update the top priority boot option in UEFI variable storage at bootloader startup.
    • Requires RequestBootVarRouting to be enabled.
  • Short
    • Create a short boot option instead of a complete one.
    • This variant is useful for some older types of firmware (usually legacy), typically from Insyde, that are unable to manage full device paths.
  • System
    • Create no boot option but assume the specified custom option is blessed.
    • This variant is useful when relying on ForceBooterSignature quirk and OpenCore launcher path management happens through bless utilities without involving OpenCore.
LauncherPath
  • Launch path for the LauncherOption property.
  • Default points to OpenCore.efi.
  • User-specified paths, e.g. \EFI\SomeLauncher.efi, can be used to provide custom loaders, which are supposed to load OpenCore.efi themselves.

Debug


Debug Properties
PropertiesDescription
Display Delay
Display Level
Target
LogModules
Disable WatchDog
  • Disables Watchdog Timer when set to true.
  • Some types of firmware may not succeed in booting the operating system quickly, especially in debug mode. This results in the watchdog timer aborting the process.
AppleDebug
  • Enable writing the boot.efi debug log to the OpenCore log.
  • Requires macOS 10.15.4 and newer
ApplePanic
  • Save macOS kernel panic output to the OpenCore root partition.
  • The file is saved as panic-YYYY-MM-DD-HHMMSS.txt. It is strongly recommended to set the keepsyms=1 boot argument to see debug symbols in the panic log. In cases where it is not present, the kpdescribe.sh utility (bundled with OpenCore) may be used to partially recover the stacktrace.
  • In cases where the OpenCore kernel panic saving mechanism is not used, kernel panic logs may still be found in the /Library/Logs/DiagnosticReports directory.
SysReport
  • Produce system report on ESP folder.
  • This option will create a SysReport directory in the ESP partition unless already present. The directory will contain ACPI, SMBIOS, and audio codec dumps. Audio codec dumps require an audio backend driver to be loaded.
  • Requires DEBUG version of OpenCore to work.
  • To maintain system integrity, the SysReport option is not available in the RELEASE version of OpenCore.

Security


Security Properties
PropertiesDescription
Halt Level
  • EDK II debug level bitmask (sum) causing CPU to halt (stop execution) after obtaining a message of HaltLevel. Possible values match DisplayLevel values.
Expose Sensitive Data
Scan PolicyDefines Operating System Detection policy.
ApECID
Vault
DmgLoadingDefines Disk Image (DMG) loading policy used for macOS Recovery. The following values are supported:
  • Disabled
    • Loading DMG images will fail.
    • The Disabled policy will still let the macOS Recovery load in most cases as typically, there are boot.efi files compatible with Apple Secure Boot.
    • Manually downloaded DMG images stored in com.apple.recovery.boot directories will not load, however.
  • Signed
    • Only Apple-signed DMG images will load.
    • Due to the design of Apple Secure Boot, the Signed policy will let any Apple-signed macOS Recovery load regardless of the Apple Secure Boot state, which may not always be desired.
    • While using signed DMG images is more desirable, verifying the image signature may slightly slow the boot time down (by up to 1 second).
  • AnyShort
    • Any DMG images will mount as normal filesystems.
    • Any policy is strongly discouraged and will result in boot failures when Apple Secure Boot is active.
SecureBootModel
  • Sets Apple Secure Boot hardware model and policy.
  • Specifying this value defines which operating systems will be bootable. Operating systems shipped before the specified model was released will not boot.
  • Not all Apple Secure Boot models are supported on all hardware configurations. See Apple Secure Boot and macOS for more information.
PasswordHash
PasswordSalt
AuthRestart
AllowSetDefault
  • Allows setting the default boot option in the OpenCore picker using CTRL+Enter and CTRL+Index.
  • May be used in combination with Shift+Enter or Shift+Index when PollAppleHotKeys is enabled.
  • In order to support systems with unresponsive modifiers during preboot (which includes V1 and V2 KeySupport mode on some firmware) OpenCore also allows holding the =/+ key in order to trigger ‘set default’ mode.
EnablePassword
  • Enable password protection to facilitate sensitive operations.
  • Protects sensitive operations such as booting a non-default Operating System (e.g. macOS recovery or a tool), resetting NVRAM storage, and trying to boot into a non-default mode (e.g. verbose mode or safe mode) are not allowed without explicit user authentication by a custom password. Currently, password and salt are hashed with 5000000 iterations of SHA-512.
  • Requires PasswordHash and PasswordSalt. See Enabling Password in OpenCore for more information.
  • This functionality is still under development and is not ready for production environments.
BlacklistAppleUpdate
  • Ignore boot options trying to update Apple peripheral firmware (e.g. MultiUpdater.efi).
  • Certain operating systems, such as macOS Big Sur, are incapable of disabling firmware updates by using the run-efi-updater NVRAM variable.

Serial


Serial Properties
PropertiesDescription

BlessOverride

This section is used for adding custom scanning paths through bless model.

To be filled with plist string entries containing absolute UEFI paths to customized bootloaders such as \EFI\debian\grubx64.efi for the Debian bootloader. This allows non-standard boot paths to be automatically discovered by the OpenCore picker. Designwise, they are equivalent to predefined blessed paths, such as \System\Library\CoreServices\boot.efi or \EFI\Microsoft\Boot\bootmgfw.efi, but unlike predefined bless paths, they have the highest priority.

Entries

This section is used to create boot entries when having multi-boot and where OpenCore fails to recognize it.

Entry Properties
PropertiesDescription
PathEntry location depending on entry type.
Entries specify external boot options, and therefore take device paths in the Path key. Care should be exercised as these values are not checked. Example: PciRoot(0x0)/Pci(0x1,0x1)/.../\EFI\COOL.EFI
ArgumentsArbitrary ASCII string used as boot arguments (load options) of the specified entry.
Name
  • Defines the name of the entry to be displayed in the OpenCore picker.
Flavor
Comment
  • Used to provide a reference for the entry.
TextMode
  • Run the entry in text mode instead of graphics mode.
  • This setting may be beneficial for some older tools that require text output as all the tools are launched in graphics mode by default. Refer to the Output Properties section below for information on text modes.
Auxiliary
  • Set the entry as an Auxiliary entry.
  • When set to true, this entry will be hidden in the OpenCore picker.
  • Requires HideAuxiliary option to be Enabled.
Enabled
  • Used to Enable or Disable the entry.
  • Enables the entry when set to true.

Tools

This section is used for running debugging tools such as UEFI Shell to the OpenCore picker.

QUICK INFO:
  • The added tools must exist in the EFI/OC/Tools directory.
  • Certain UEFI tools, such as UEFI Shell, can be very dangerous and MUST NOT appear in production configurations, particularly in vaulted configurations as well as those protected by secure boot, as such tools can be used to bypass the secure boot chain. Refer to the UEFI section for examples of UEFI tools.

Tools Properties
PropertiesDescription
Path
  • Defines Tools path.
  • The path name is usually the Tool name (e.g. OpenShell.efi)
ArgumentsArbitrary ASCII string used as boot arguments (load options) of the specified entry.
Name
  • Defines the name of the Tools to be displayed in the OpenCore picker.
  • Names are added automatically when Tools are scanned/Browsed from EFI/OC/Tools directory.
Flavor
Comment
  • Used to provide a reference for the Tool.
RealPathPass full path to the tool when launching.
TextMode
  • Run the entry in text mode instead of graphics mode.
  • This setting may be beneficial for some older tools that require text output as all the tools are launched in graphics mode by default. Refer to the Output Properties section below for information on text modes.
Auxiliary
  • Set the tool as an Auxiliary tool.
  • When set to true, this tool will be hidden in the OpenCore picker.
  • Requires HideAuxiliary option to be Enabled.
Enabled
  • Used to Enable or Disable the Tool.
  • Enables the Tool when set to true.
 
Last edited:
6. NVRAM

This section is for adding NVRAM properties, boot args and configuring SIP.
This section allows setting the non-volatile UEFI variables commonly described as NVRAM variables. Refer to man nvram for details. The macOS operating system extensively uses NVRAM variables for OS, Bootloader, and Firmware intercommunication. Hence, the supply of several NVRAM variables is required for the proper functioning of macOS.

Each NVRAM variable consists of its name, value, attributes (refer to UEFI specification), and its GUID, representing which ‘section’ the NVRAM variable belongs to. The macOS operating system makes use of several GUIDs, including but not limited to:

GUIDPurpose
4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14APPLE_VENDOR_VARIABLE_GUID
7C436110-AB2A-4BBB-A880-FE41995C9F82APPLE_BOOT_VARIABLE_GUID
5EDDA193-A070-416A-85EB-2A1181F45B18Apple Hardware Configuration Storage for MacPro7,1
8BE4DF61-93CA-11D2-AA0D-00E098032B8CEFI_GLOBAL_VARIABLE_GUID
4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102OC_VENDOR_VARIABLE_GUID

Note: Some of the variables may be added by the PlatformNVRAM or Generic subsections of the PlatformInfo section. Please ensure that variables set in this section do not conflict with items in those subsections as the implementation behaviour is undefined otherwise.

The OC_FIRMWARE_RUNTIME protocol implementation, currently offered as a part of the OpenRuntime driver, is often required for macOS to function properly. While this brings many benefits, there are some limitations that should be considered for certain use cases. 1. Not all tools may be aware of protected namespaces. When RequestBootVarRouting is used, Boot-prefixed variable access is restricted and protected in a separate namespace. To access the original variables, tools must be aware of the OC_FIRMWARE_RUNTIME logic.

The sub-sections are explained below.

Add
This section has various settings including UI, boot args, keyboard input, NVRAM settings and System Integrity Protection.

Delete
Removes NVRAM variables from a map (plist dict) of GUIDs to an array (plist array) of variable names in plist string format.

LegacySchema
This section is used for assigning NVRAM variables, used with LegacyEnable set to YES.
Enables loading of NVRAM variable file named nvram.plist from EFI volume root

NVRAM Properties
PropertiesDescription
LegacyOverwrite
  • Permits overwriting firmware variables from nvram.plist.
  • Only variables accessible from the operating system will be overwritten.
  • Only needed for systems without native NVRAM. See Fixing NVRAM for more information.
WriteFlash
  • Enables writing off added Variables to flash memory.
  • It is recommended to have this value enabled on most types of firmware but it is left configurable for firmware that may have issues with NVRAM variable storage garbage collection or similar.
  • This option is not compatible with Emulated NVRAM. See Emulated NVRAM for more information.
 
7. PlatformInfo

This section allows to set SMBIOS. It's an important section and has various impact on your system. The sub-sections are explained below.



DataHub


DataHub Properties
PropertiesDescription
System Product Name
  • Sets Model in gEfiMiscSubClassGuid.
  • The value found on Macs is equal to SMBIOS SystemProductName in Unicode.
System Serial Number
  • Sets SystemSerialNumber in gEfiMiscSubClassGuid.
  • The value found on Macs is equal to SMBIOS SystemSerialNumber in Unicode.
System UUID
  • Sets system-id in gEfiMiscSubClassGuid.
  • The value found on Macs is equal to SMBIOS SystemUUID (with swapped byte order).
ARTFrequency
  • Sets ARTFrequency in gEfiProcessorSubClassGuid.
  • This value contains CPU ART frequency, also known as crystal clock frequency. Its existence is exclusive to the Skylake generation and newer. The value is specified in Hz, and is normally 24 MHz for the client Intel segment, 25 MHz for the server Intel segment, and 19.2 MHz for Intel Atom CPUs. macOS till 10.15 inclusive assumes 24 MHz by default.
  • On Intel Skylake X ART frequency may be a little less (approx. 0.25%) than 24 or 25 MHz due to the special EMI-reduction circuit as described in Acidanthera Bugtracker.
Board Product
  • Sets board-id in gEfiMiscSubClassGuid.
  • The value found on Macs is equal to SMBIOS BoardProduct in ASCII.
Board Revision
  • Sets board-rev in gEfiMiscSubClassGuid.
  • The value found on Macs seems to correspond to internal board revision (e.g. 01).
Device Paths Supported
  • Sets DevicePathsSupported in gEfiMiscSubClassGuid.
  • Must be set to 1 for AppleACPIPlatform.kext to append SATA device paths to Boot#### and efi-boot-device-data variables. Set to 1 on all modern Macs.
FSBFrequency
  • Sets FSBFrequency in gEfiProcessorSubClassGuid.
  • This value equals to CPU nominal frequency divided by CPU maximum bus ratio and is specified in Hz. Refer to MSR_NEHALEM_PLATFORM_INFO (CEh) MSR value to determine maximum bus ratio on modern Intel CPUs.
  • This value is not used on Skylake and newer but is still provided to follow suit.
InitialTSCSets InitialTSC in gEfiProcessorSubClassGuid.
Sets initial TSC value, normally 0.
Platform Name
  • Sets name in gEfiMiscSubClassGuid.
  • The value found on Macs is platform in ASCII.
SmcBranch
  • Sets RBr in gEfiMiscSubClassGuid.
  • Custom property read by VirtualSMC or FakeSMC to generate SMC RBr key.
SmcPlatform
  • Sets RPlt in gEfiMiscSubClassGuid.
  • Custom property read by VirtualSMC or FakeSMC to generate SMC RPlt key.
SmcRevision
  • Sets REV in gEfiMiscSubClassGuid.
  • Custom property read by VirtualSMC or FakeSMC to generate SMC REV key.
Startup Power Events


Generic


Generic Properties
PropertiesDescription
System Product Name
System Serial Number
System UUID
MLB
ROM
ProcessorType
SystemMemoryStatusIndicates whether system memory is upgradable in PlatformFeature. This controls the visibility of the Memory tab in “About This Mac”. The following values are supported:
  • Auto
    • Use the original PlatformFeature value.
  • Upgradable
    • explicitly unset PT_FEATURE_HAS_SOLDERED_SYSTEM_MEMORY (0x2) in PlatformFeature.
  • Soldered
    • explicitly set PT_FEATURE_HAS_SOLDERED_SYSTEM_MEMORY (0x2) in PlatformFeature.
On certain Mac models, such as the MacBookPro10,x and any MacBookAir, SPMemoryReporter.spreporter will ignore PT_FEATURE_HAS_SOLDERED_SYSTEM_MEMORY and assume that system memory is non-upgradable.
AdviseFeatures
SpoofVendor
  • Sets SMBIOS vendor fields to Acidanthera.
  • It can be dangerous to use “Apple” in SMBIOS vendor fields for reasons outlined in the SystemManufacturer description. However, certain firmware may not provide valid values otherwise, which could obstruct the operation of some software.
MaxBIOSVersion
  • Sets BIOSVersion to 9999.999.999.999.999.
  • Recommended for legacy Macs when using Automatic PlatformInfo, to avoid BIOS updates in unofficially supported macOS versions.


PlatformNVRAM


PlatformNVRAM Properties
PropertiesDescription
BID
  • Specifies the value of NVRAM variable 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_BID.
MLB
  • Specifies the values of NVRAM variables 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_MLB and 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB.
ROM
  • Specifies the values of NVRAM variables 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_ROM and 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ROM.
Firmware Features
  • This variable comes in pair with FirmwareFeaturesMask. Specifies the values of NVRAM variables:
    • 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeatures
    • 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeatures
Firmware Features Mask
  • This variable comes in pair with FirmwareFeatures. Specifies the values of NVRAM variables:
    • 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:FirmwareFeaturesMask
    • 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:ExtendedFirmwareFeaturesMask
System UUID
  • Specifies the values of NVRAM variables 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:HW_SSN and 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:SSN.
System Serial Number
  • Specifies the value of NVRAM variable 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:system-id for boot services only.
  • The value found on Macs is equal to SMBIOS SystemUUID.

Memory


Memory Properties
PropertiesDescription
DataWidthSpecifies the data width, in bits, of the memory. A DataWidth of 0 and a TotalWidth of 8 indicates that the device is being used solely to provide 8 error-correction bits
ErrorCorrectionSpecifies the primary hardware error correction or detection method supported by the memory. The following values are supported:
  • 0x01
    • Other
  • 0x02
    • Unknown.
  • 0x03
    • none.
  • 0x04
    • Parity.
  • 0x05
    • Single-bit ECC.
  • 0x06
    • Multi-bit ECC.
  • 0x07
    • CRC.
FormFactorSpecifies the form factor of the memory. On Macs, this should typically be DIMM or SODIMM. The following values are supported:
  • 0x01
    • Other
  • 0x02
    • Unknown.
  • 0x09
    • DIMM.
  • 0x0D
    • SODIMM.
  • 0x0F
    • FB-DIMM.
When CustomMemory is false, this value is automatically set based on Mac product name.
When Automatic is true, the original value from the the corresponding Mac model will be set if available. Otherwise, the value from OcMacInfoLib will be set.
When Automatic is false, a user-specified value will be set if available. Otherwise, the original value from the firmware will be set.
If no value is provided, the failsafe value will be set.
MaxCapacity
  • Specifies the maximum amount of memory, in bytes, supported by the system
TotalWidth
  • Specifies the total width, in bits, of the memory, including any check or error-correction bits. If there are no error-correction bits, this value should be equal to DataWidth.
TypeSpecifies the memory type. The following values are supported:
  • 0x01
    • Other
  • 0x02
    • Unknown.
  • 0x0F
    • SDRAM
  • 0x12
    • DDR.
  • 0x13
    • DDR2.
  • 0x14
    • DDR2 FB-DIMM.
  • 0x18
    • DDR3.
  • 0x1A
    • DDR4
  • 0x1B
    • LPDDR.
  • 0x1C
    • LPDDR2.
  • 0x1D
    • LPDDR3.
  • 0x1E
    • LPDDR4.
TypeDetailSpecifies additional memory type information. The following values are supported:
  • Bit 0
    • Reserved
  • Bit 1
    • Other.
  • Bit 2
    • Unknown
  • Bit 7
    • Synchronous.
  • Bit 13
    • Registered (buffered).
  • Bit 14
    • Unbuffered (unregistered).


Memory Device Properties
PropertiesDescription
AssetTagSpecifies the asset tag of this memory device.
BankLocatorSpecifies the physically labeled bank where the memory device is located
DeviceLocatorSpecifies the physically-labeled socket or board position where the memory device is located.
Manufacturer
  • Specifies the manufacturer of the memory device.
  • For empty slots, this must be set to NO DIMM for macOS System Profiler to correctly display memory slots on certain Mac models, e.g. MacPro7,1.
  • MacPro7,1 imposes additional requirements on the memory layout:
    • The amount of installed sticks must one of the following: 4, 6, 8, 10, 12. Using any different value will cause an error in the System Profile.
    • The amount of memory slots must equal to 12. Using any different value will cause an error in the System Profile.
    • Memory sticks must be installed in dedicated memory slots as explained on the support page. SMBIOS memory devices are mapped to the following slots: 8, 7, 10, 9, 12, 11, 5, 6, 3, 4, 1, 2.
PartNumberSpecifies the part number of the memory device.
SerialNumberSpecifies the serial number of the memory device.
SizeSpecifies the size of the memory device, in megabytes.
0 indicates this slot is not populated
SpeedSpecifies the maximum capable speed of the device, in megatransfers per second (MT/s).
0 indicates an unknown speed.

SMBIOS


SMBIOS Properties
PropertiesDescription
SystemProductNameSystem Information (Type 1), Product Name
Preferred Mac model used to mark the device as supported by the operating system. This value must be specified by any configuration for later automatic generation of the related values in this and other SMBIOS tables and related configuration parameters. If SystemProductName is not compatible with the target operating system, -no_compat_check boot argument may be used as an override.
If SystemProductName is unknown, and related fields are unspecified, default values should be assumed as being set to MacPro6,1 data. The list of known products can be found in AppleModels.
SystemFamilySystem Information (Type 1) — Family.
Family name. May look like iMac Pro
SystemManufacturerSystem Information (Type 1) — Manufacturer.
OEM manufacturer of the particular board. Use failsafe unless strictly required. Do not override to contain Apple Inc. on non-Apple hardware, as this confuses numerous services present in the operating system, such as firmware updates, eficheck, as well as kernel extensions developed in Acidanthera, such as Lilu and its plugins. In addition it will also make some operating systems such as Linux unbootable.
SystemSKUNumberSystem Information (Type 1) — SKU Number.
Mac Board ID (board-id). May look like Mac-7BA5B2D9E42DDD94 or Mac-F221BEC8 in older models. Sometimes it can be just empty.
SystemSerialNumberSystem Information (Type 1) — Serial Number
Product serial number in defined format. Known formats are described in macserial.
SystemVersionSystem Information (Type 1) — Version
Product iteration version number. May look like 1.1.
SystemUUIDSystem Information (Type 1) — UUID
A UUID is an identifier that is designed to be unique across both time and space. It requires no central registration process.

PlatformInfo Properties
PropertiesDescription
Automatic
  • Generate PlatformInfo based on the Generic section instead of using values from the DataHub, NVRAM, and SMBIOS sections.
  • Enabling this option is useful when the Generic section is flexible enough:
    • When enabled SMBIOS, DataHub, and PlatformNVRAM data is unused.
    • When disabled Generic section is unused.
  • Setting this option to false is strongly discouraged when intending to update platform information. A false setting is typically only valid for minor corrections to SMBIOS values on legacy Apple hardware. In all other cases, setting Automatic to false may lead to hard-to-debug errors resulting from inconsistent or invalid settings.
UpdateDataHub
  • Update Data Hub fields.
  • These fields are read from the Generic or DataHub sections depending on the setting of the Automatic property.
  • The implementation of the Data Hub protocol in EFI firmware on virtually all systems, including Apple hardware, means that existing Data Hub entries cannot be overridden. New entries are added to the end of the Data Hub instead, with macOS ignoring old entries. This can be worked around by replacing the Data Hub protocol using the ProtocolOverrides section. Refer to the DataHub protocol override description for details.
UpdateNVRAM
  • Update NVRAM fields related to platform information.
  • These fields are read from the Generic or PlatformNVRAM sections depending on the setting of the Automatic property. All the other fields are to be specified in the NVRAM section.
  • If UpdateNVRAM is set to false, the aforementioned variables can be updated with the NVRAM section. If UpdateNVRAM is set to true, the behavior is undefined when any of the fields are present in the NVRAM section.
UpdateSMBIOS
  • Update SMBIOS fields.
  • These fields are read from the Generic or SMBIOS sections depending on the setting of the Automatic property.
UpdateSMBIOSModeDefines Update SMBIOS fields approach. The following values are supported:
  • TryOverwrite
    • Overwrite if new size is <= than the page-aligned original and there are no issues with legacy region unlock. Create otherwise. Has issues on some types of firmware.
  • Create
    • Replace the tables with newly allocated EfiReservedMemoryType at AllocateMaxAddress without any fallbacks.
  • Overwrite
    • Overwrite existing gEfiSmbiosTableGuid and gEfiSmbiosTable3Guid data if it fits new size. Abort with unspecified state otherwise.
  • Custom
    • Write SMBIOS tables (gEfiSmbios(3)TableGuid) to gOcCustomSmbios(3)TableGuid to workaround firmware overwriting SMBIOS contents at ExitBootServices. Otherwise equivalent to Create.
    • Requires CustomSMBIOSGuid Quirk for patching AppleSmbios.kext and AppleACPIPlatform.kext to read from another GUID: "EB9D2D31" - "EB9D2D35" (in ASCII).
    • Required for Dell and SONY VIAO Systems.
    • A side effect of using the Custom approach is that it makes SMBIOS updates exclusive to macOS, avoiding a collision with existing Windows activation and custom OEM software but potentially obstructing the operation of Apple-specific tools.
CustomMemory
  • Use custom memory configuration defined in the Memory section.
  • This completely replaces any existing memory configuration in SMBIOS, and is only active when UpdateSMBIOS is set to true.
UseRawUuidEncodingUse raw encoding for SMBIOS UUIDs.
 
Last edited:
8. UEFI

8.1 APFS



APFS Properties
PropertiesDescription
EnableJumpstartLoad embedded APFS drivers from APFS containers.
This option performs the loading of signed APFS drivers (consistent with the ScanPolicy).
GlobalConnectPerform full device connection during APFS loading.
Every handle is connected recursively instead of the partition handle connection typically used for APFS driver loading. This may result in additional time being taken but can sometimes be the only way to access APFS partitions on certain firmware, such as those on older HP laptops
HideVerboseHide verbose output from APFS driver.
JumpstartHotPlugLoad APFS drivers for newly connected devices.
Allows APFS USB hotplug which enables loading APFS drivers, both at OpenCore startup and during OpenCore picker display.
MinDateMinimal allowed APFS driver date.
The APFS driver date connects the APFS driver with the calendar release date. Apple ultimately drops support for older macOS releases and APFS drivers from such releases may contain vulnerabilities that can be used to compromise a computer if such drivers are used after support ends. This option permits restricting APFS drivers to current macOS versions.
  • 0
    • require the default supported release date of APFS in OpenCore. The default release date will increase with time and thus this setting is recommended. Currently set to 2021/01/01.
  • -1
    • permit any release date to load (strongly discouraged).
  • Other
    • use custom minimal APFS release date, e.g. 20200401 for 2020/04/01. APFS release dates can be found in OpenCore boot log and OcApfsLib.
MinVersionMinimal allowed APFS driver version.
The APFS driver version connects the APFS driver with the macOS release. Apple ultimately drops support for older macOS releases and APFS drivers from such releases may contain vulnerabilities that can be used to compromise a computer if such drivers are used after support ends. This option permits restricting APFS drivers to current macOS versions.
  • 0
    • require the default supported version of APFS in OpenCore. The default version will increase with time and thus this setting is recommended. Currently set to allow macOS Big Sur and newer (1600000000000000).
  • -1
    • permit any version to load (strongly discouraged).
  • Other
    • use custom minimal APFS version, e.g. 1412101001000000 from macOS Catalina 10.15.4. APFS versions can be found in OpenCore boot log and OcApfsLib.

8.2 AppleInput


AppleInput Properties
PropertiesDescription
KeyInitialDelay
KeySubsequentDelay
PointerSpeedDivConfigure pointer speed divisor in the OpenCore re-implementation of the Apple Event protocol. Has no effect when using the OEM Apple implementation (see AppleEvent setting).
Configures the divisor for pointer movements. The Apple OEM default value is 1. 0 is an invalid value for this option.
The recommended value for this option is 1. This value may optionally be modified in combination with PointerSpeedMul, according to user preference, to achieve customized mouse movement scaling.
PointeerSpeedMulConfigure pointer speed multiplier in the OpenCore re-implementation of the Apple Event protocol. Has no effect when using the OEM Apple implementation (see AppleEvent setting).
Configures the multiplier for pointer movements. The Apple OEM default value is 1.
The recommended value for this option is 1. This value may optionally be modified in combination with PointerSpeedDiv, according to user preference, to achieve customised mouse movement scaling.
PointerPollMinConfigure minimal pointer polling period in ms.
This is the minimal period the OpenCore built in AppleEvent driver polls pointer devices (e.g. mice, trackpads) for motion events. The current implementation defaults to 10 ms. Setting 0 leaves this default unchanged.
The OEM Apple implementation uses a polling rate of 2 ms.
PointerPollMaxConfigure maximum pointer polling period in ms.
This is the maximum period the OpenCore builtin AppleEvent driver polls pointer devices (e.g. mice, trackpads) for motion events. The period is increased up to this value as long as the devices do not respond in time. The current implementation defaults to 80 ms. Setting 0 leaves this default unchanged.
Certain trackpad drivers often found in Dell laptops can be very slow to respond when no physical movement happens. This can affect OpenCanopy and FileVault 2 user interface responsiveness and loading times. Increasing the polling periods can reduce the impact.
The OEM Apple implementation uses a polling rate of 2 ms.
PointerPollMaskConfigure indices of polled pointers.
Selects pointer devices to poll for AppleEvent motion events. -1 implies all devices. A bit sum is used to determine particular devices. E.g. to enable devices 0, 2, 3 the value will be 1+4+8 (corresponding powers of two). A total of 32 configurable devices is supported.
Certain pointer devices can be present in the firmware even when no corresponding physical devices are available. These devices usually are placeholders, aggregate devices, or proxies. Gathering information from these devices may result in inaccurate motion activity in the user interfaces and even cause performance issues. Disabling such pointer devices is recommended for laptop setups having issues of this kind.
The amount of pointer devices available in the system can be found in the log. Refer to Found N pointer devices message for more details.
Has no effect when using the OEM Apple implementation (see AppleEvent setting).
AppleEventDetermines whether the OpenCore built-in or the OEM Apple Event protocol is used.
This option determines whether the OEM Apple Event protocol is used (where available), or whether OpenCore’s reversed engineered and updated re-implementation is used. In general OpenCore’s re-implementation should be preferred, since it contains updates such as noticeably improved fine mouse cursor movement and configurable key repeat delays.
  • Auto
    • Use the OEM Apple Event implementation if available, connected and recent enough to be used, otherwise use the OpenCore re-implementation. On non-Apple hardware, this will use the OpenCore builtin implementation. On some Macs such as Classic Mac Pros, this will prefer the Apple implementation but on both older and newer Mac models than these, this option will typically use the OpenCore re-implementation instead. On older Macs, this is because the implementation available is too old to be used while on newer Macs, it is because of optimisations added by Apple which do not connect the Apple Event protocol except when needed – e.g. except when the Apple boot picker is explicitly started. Due to its somewhat unpredicatable results, this option is not typically recommended.
  • Builtin
    • Always use OpenCore’s updated re-implementation of the Apple Event protocol. Use of this setting is recommended even on Apple hardware, due to improvements (better fine mouse control, configurable key delays) made in the OpenCore re-implementation of the protocol.
  • OEM
    • Assume Apple’s protocol will be available at driver connection. On all Apple hardware where a recent enough Apple OEM version of the protocol is available – whether or not connected automatically by Apple’s firmware – this option will reliably access the Apple implementation. On all other systems, this option will result in no keyboard or mouse support. For the reasons stated, Builtin is recommended in preference to this option in most cases.
CustomDelays
  • Enable custom key repeat delays when using the OpenCore re-implementation of the Apple Event protocol. Has no effect when using the OEM Apple implementation (see AppleEvent setting).
    • When set to true, the values of KeyInitialDelay and KeySubsequentDelay are used.
    • When set to false, the Apple default values of 500ms (50) and 50ms (5) are used.
GraphicsInputMirroring
  • Apple’s own implementation of AppleEvent prevents keyboard input during graphics applications from appearing on the basic console input stream.
  • The recommended setting on all hardware is true.
  • With the default setting of false, OpenCore’s built-in implementation of AppleEvent replicates this behavior.
  • On non-Apple hardware, this can stop keyboard input from working in graphics-based applications such as Windows BitLocker which use non-Apple key input methods.
  • AppleEvent’s default behavior is intended to prevent unwanted queued keystrokes from appearing after exiting graphics-based UEFI applications; this issue is already handled separately within OpenCore.
    • When set to true, Allow keyboard input to reach graphics mode apps which are not using Apple input protocols.
    • When set to false, Prevent key input mirroring to non-Apple protocols when in graphics mode.

8.3 Audio


Audio Properties
PropertiesDescription
AudioDeviceDevice path of the specified audio controller for audio support.
This typically contains builtin analog audio controller (HDEF) device path, e.g. PciRoot(0x0)/Pci(0x1b,0x0).
Specifying an empty device path results in the first available codec and audio controller being used. The value of AudioCodec is ignored in this case. This can be a convenient initial option to try to get UEFI audio working. Manual settings as above will be required when this default value does not work.
AudioCodecCodec address on the specified audio controller for audio support.
This typically contains the first audio codec address on the builtin analog audio controller (HDEF).
AudioOutMask
MaximumGain
MinimumAssistGainMinimum gain in decibels (dB) to use for picker audio assist.
The screen reader will use this amplifier gain if the system amplifier gain read from the SystemAudioVolumeDB NVRAM variable is lower than this.
In addition to this setting, because audio assist must be audible to serve its function, audio assist is not muted even if the OS sound is muted or the StartupMute NVRAM variable is set.
See MaximumGain for an explanation of decibel volume levels.
MinimumAudibleGain
SetupDelayAudio codec reconfiguration delay in milliseconds.
Some codecs require a vendor-specific delay after the reconfiguration (e.g. volume setting). This option makes it configurable. A typical delay can be up to 0.5 seconds.
PlayChimePlay chime sound at startup.
Enabling this setting plays the boot chime using the builtin audio support. The volume level is determined by the SystemAudioVolumeDB NVRAM variable. The supported values are:
  • Auto
    • Enables chime when StartupMute NVRAM variable is not present or set to 00.
  • Enabled
    • Enables chime unconditionally.
  • Disabled
    • Disables chime unconditionally
Enabled can be used separately from the StartupMute NVRAM variable to avoid conflicts when the firmware is able to play the boot chime.
Regardless of this setting, the boot chime will not play if system audio is muted, i.e. if the SystemAudioVolume NVRAM variable has bit 0x80 set.
AudioSupportActivate audio support by connecting to a backend driver.
Enabling this setting routes audio playback from builtin protocols to specified (AudioOutMask) dedicated audio ports of the specified codec (AudioCodec), located on the specified audio controller (AudioDevice).
ResetTrafficClassSet HDA Traffic Class Select Register to TC0.
AppleHDA kext will function correctly only if TCSEL register is configured to use TC0 traffic class. Refer to Intel I/O Controller Hub 9 (ICH9) Family Datasheet (or any other ICH datasheet) for more details about this register.
This option is independent from AudioSupport. If AppleALC is used it is preferred to use AppleALC alctcsel property instead.
DisconnectHdaDisconnect the HDA controller before loading drivers.
Required on some systems (e.g. Apple hardware, VMware Fusion guest) to allow a UEFI sound driver (such as AudioDxe) to take control of the audio hardware.
In addition to this option, most Apple hardware also requires the --gpio-setup driver argument which is dealt with in the AudioDxe section.

8.4 Drivers


Drivers Properties
PropertiesDescription
PathPath of file to be loaded as a UEFI driver from OC/Drivers directory.
ArgumentsSome OpenCore plugins accept optional additional arguments which may be specified as a string here.
Comment
  • Used to provide a reference for the Driver.
Enabled
  • Used to Enable or Disable the Drivers.
  • Enables particular Driver when set to true.
LoadEarlyLoad the driver early in the OpenCore boot process, before NVRAM setup.
Do not enable this option unless specifically recommended to do so for a given driver and purpose.
Connect Drivers

8.5 Input


Input Properties
PropertiesDescription
KeyForgetThreshold
KeySupportModeSet internal keyboard input translation to AppleKeyMapAggregator protocol mode.
  • Auto
    • Performs automatic choice as available with the following preference: AMI, V2, V1.
  • V1
    • Uses UEFI standard legacy input protocol EFI_SIMPLE_TEXT_INPUT_PROTOCOL.
  • V2
    • Uses UEFI standard modern input protocol EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.
  • AMI
    • Uses APTIO input protocol AMI_EFIKEYCODE_PROTOCOL.
Currently, V1, V2, and AMI unlike Auto only do filtering of the particular specified protocol. This may change in future versions.
PointerSupportModeSet OEM protocol used for internal pointer driver.
Currently, the only supported variant is ASUS, using specialized protocols available on certain Z87 and Z97 ASUS boards. More details can be found in LongSoft/UefiTool#116. The value of this property cannot be empty if PointerSupport is enabled.
TimerResolutionSet architecture timer resolution.
This option allows updating the firmware architecture timer period with the specified value in 100 nanosecond units. Setting a lower value typically improves the performance and responsiveness of the interface and input handling.
The recommended value is 50000 (5 milliseconds) or slightly higher. A few selected ASUS Z87 boards use 60000 for the interface. Apple boards use 100000. In case of issues, this option can be left as 0 to not change the timer resolution.
KeyFilteringEnable keyboard input sanity checking.
Apparently some boards such as the GA Z77P-D3 may return uninitialised data in EFI_INPUT_KEY with all input protocols. This option discards keys that are neither ASCII, nor are defined in the UEFI specification (see tables 107 and 108 in version 2.8).
KeySupportEnable internal keyboard input translation to AppleKeyMapAggregator protocol.
This option activates the internal keyboard interceptor driver, based on AppleGenericInput, also known as AptioInputFix, to fill the AppleKeyMapAggregator database for input functioning.
In cases where a separate driver such as OpenUsbKbDxe is used, this option should never be enabled. Additionally, this option is not required and should not be enabled with Apple firmware.
KeySwapSwap Command and Option keys during submission.
This option may be useful for keyboard layouts with the Option key situated to the right of the Command key.
PointerSupportEnable internal pointer driver.
This option implements standard UEFI pointer protocol (EFI_SIMPLE_POINTER_PROTOCOL) through certain OEM protocols. The option may be useful on Z87 ASUS boards, where EFI_SIMPLE_POINTER_PROTOCOL is defective

8.6 Output


Output Properties
PropertiesDescription
ClearScreenOnModeSwitchSome types of firmware only clear part of the screen when switching from graphics to text mode, leaving a fragment of previously drawn images visible. This option fills the entire graphics screen with black color before switching to text mode.
This option only applies to the System renderer.
DirectGopRenderingUse built-in graphics output protocol renderer for the console.
On certain firmware, such as on the MacPro5,1, this may provide better performance or fix rendering issues. However, this option is not recommended unless there is an obvious benefit as it may result in issues such as slower scrolling.
This renderer fully supports the AppleEg2Info protocol and will provide screen rotation for all EFI applications. In order to provide seamless rotation compatibility with EfiBoot, builtin AppleFramebufferInfo should also be used, i.e. it may need to be overridden on Mac EFI.
ForceResolution
IgnoreTextInGraphicsSome types of firmware output text onscreen in both graphics and text mode. This is typically unexpected as random text may appear over graphical images and cause UI corruption. Setting this option to true will discard all text output when the console control is in a different mode from Text.
This option only applies to the System renderer.
ProvideConsoleGopEnsure GOP (Graphics Output Protocol) on console handle.
macOS bootloader requires GOP or UGA (for 10.4 EfiBoot) to be present on the console handle, yet the exact location of the graphics protocol is not covered by the UEFI specification. This option will ensure GOP and UGA, if present, are available on the console handle.
This option will also replace incompatible implementations of GOP on the console handle, as may be the case on the MacPro5,1 when using modern GPUs.
ReconnectGraphicsOnConnectReconnect all graphics drivers during driver connection.
On certain firmware, it may be desirable to use an alternative graphics driver, for example, BiosVideo.efi, providing better screen resolution options on legacy machines, or a driver supporting ForceResolution. This option attempts to disconnect all currently connected graphics drivers before connecting newly loaded drivers.
Requires ConnectDrivers to be Enabled.
ReconnectOnResChangeReconnect console controllers after changing screen resolution.
On certain firmware, the controllers that produce the console protocols (simple text out) must be reconnected when the screen resolution is changed via GOP. Otherwise, they will not produce text based on the new resolution.
On several boards this logic may result in black screen when launching OpenCore from Shell and thus it is optional. In versions prior to 0.5.2 this option was mandatory and not configurable. Please do not use this unless required.
ReplaceTabWithSpaceSome types of firmware do not print tab characters or everything that follows them, causing difficulties in using the UEFI Shell’s builtin text editor to edit property lists and other documents. This option makes the console output spaces instead of tabs.
This option only applies to System renderer
SanitiseClearScreenSome types of firmware reset screen resolutions to a failsafe value (such as 1024x768) on the attempts to clear screen contents when large display (e.g. 2K or 4K) is used. This option attempts to apply a workaround.
This option only applies to the System renderer. On all known affected systems, ConsoleMode must be set to an empty string for this option to work.
UgaPassThroughProvide UGA protocol instances on top of GOP protocol instances.
Some types of firmware do not implement the legacy UGA protocol but this may be required for screen output by older EFI applications such as EfiBoot from 10.4.
Console ModeSets console output mode as specified with the WxH (e.g. 80x24) formatted string.
Set to Max to attempt using the largest available console mode. This option is currently ignored as the Built-in text renderer only supports one console mode.
This field is best left empty on most types of firmware.
TextRender
ResolutionSets console output screen resolution.
Set to WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080) formatted string to request custom resolution from GOP if available.
• Set to Max to attempt using the largest available screen resolution
On HiDPI screens APPLE_VENDOR_VARIABLE_GUID UIScale NVRAM variable may need to be set to 02 to enable HiDPI scaling in Builtin text renderer, FileVault 2 UEFI password interface, and boot screen logo. Refer to the Recommended Variables section for details.
This will fail when console handle has no GOP protocol. When the firmware does not provide it, it can be added with ProvideConsoleGop set to true.
GopPassThroughProvide GOP protocol instances on top of UGA protocol instances.
This option provides the GOP protocol via a UGA-based proxy for firmware that do not implement the protocol. The following values are supported:
  • Enabled
    • provide GOP for all UGA protocols.
  • Apple
    • provide GOP for AppleFramebufferInfo-enabled protocols.
  • Disabled
    • do not provide GOP.
Requires ProvideConsoleGop to be Enabled.
UIScale

8.7 ProtocolOverrides


ProtocolOverrides Properties
PropertiesDescription
AppleAudioReplaces Apple audio protocols with builtin versions.
Apple audio protocols allow OpenCore and the macOS bootloader to play sounds and signals for screen reading or audible error reporting. Supported protocols are beep generation and VoiceOver. The VoiceOver protocol is only provided natively by Gibraltar machines (T2), however versions of macOS which support VoiceOver will see and use the implementation provided by OpenCore, on screens such as FileVault 2 unlock. VoiceOver is not supported before macOS High Sierra (10.13). Older macOS versions use the AppleHDA protocol (which is not currently implemented) instead.
Only one set of audio protocols can be available at a time, so this setting should be enabled in order to enable audio playback in the OpenCore user interface on Mac systems implementing some of these protocols
The backend audio driver needs to be configured in UEFI Audio section for these protocols to be able to stream audio.
AppleBootPolicyReplaces the Apple Boot Policy protocol with a builtin version. This may be used to ensure APFS compatibility on VMs and legacy Macs.
This option is advisable on certain Macs, such as the MacPro5,1, that are APFS compatible but on which the Apple Boot Policy protocol has recovery detection issues.
AppleDebugLogReplaces the Apple Debug Log protocol with a builtin version.
AppleEg2InfoReplaces the Apple EFI Graphics 2 protocol with a builtin version.
This protocol allows newer EfiBoot versions (at least 10.15) to expose screen rotation to macOS. Refer to ForceDisplayRotationInEFI variable description on how to set screen rotation angle.
On systems without native support for ForceDisplayRotationInEFI, DirectGopRendering=true is also required for this setting to have an effect.
AppleFramebufferInfoReplaces the Apple Framebuffer Info protocol with a builtin version. This may be used to override framebuffer information on VMs and legacy Macs to improve compatibility with legacy EfiBoot such as the one in macOS 10.4.
The current implementation of this property results in it only being active when GOP is available (it is always equivalent to false otherwise).
AppleImageConversionReplaces the Apple Image Conversion protocol with a builtin version.
AppleImg4VerificationReplaces the Apple IMG4 Verification protocol with a builtin version. This protocol is used to verify im4m manifest files used by Apple Secure Boot.
AppleKeyMapReplaces Apple Key Map protocols with builtin versions.
AppleRtcRamReplaces the Apple RTC RAM protocol with a builtin version.
Builtin version of Apple RTC RAM protocol may filter out I/O attempts to certain RTC memory addresses. The list of addresses can be specified in 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:rtc-blacklist variable as a data array.
AppleSecureBootReplaces the Apple Secure Boot protocol with a builtin version.
AppleSmcIoReplaces the Apple SMC I/O protocol with a builtin version
This protocol replaces the legacy VirtualSmc UEFI driver, and is compatible with any SMC kernel extension. However, in case the FakeSMC kernel extension is used, manual NVRAM key variable addition may be needed.
AppleUserInterfaceThemeReplaces the Apple User Interface Theme protocol with a builtin version.
DataHubReplaces the Data Hub protocol with a builtin version.
This will discard all previous entries if the protocol was already installed, so all properties required for the safe operation of the system must be specified in the configuration file.
DevicePropertiesReplaces the Device Property protocol with a builtin version. This may be used to ensure full compatibility on VMs and legacy Macs.
This will discard all previous entries if the protocol was already installed, so all properties required for safe operation of the system must be specified in the configuration file.
FirmwareVolumeWraps Firmware Volume protocols, or installs a new version, to support custom cursor images for FileVault 2. Set to true to ensure FileVault 2 compatibility on anything other than on VMs and legacy Macs.
Several virtual machines, including VMware, may have corrupted cursor images in HiDPI mode and thus, may also require enabling this setting.
HashServicesReplaces Hash Services protocols with builtin versions. Set to true to ensure FileVault 2 compatibility on platforms with defective SHA-1 hash implementations. This can be determined by an invalid cursor size when UIScale is set to 02. Platforms earlier than APTIO V (Haswell and older) are typically affected.
OSInfoReplaces the OS Info protocol with a builtin version. This protocol is typically used by the firmware and other applications to receive notifications from the macOS bootloader.
UnicodeCollationReplaces unicode collation services with builtin versions. Set to true to ensure UEFI Shell compatibility on platforms with defective unicode collation implementations. Legacy Insyde and APTIO platforms on Ivy Bridge, and earlier, are typically affected.

8.8 ReservedMemory


ReservedMemory Properties
PropertiesDescription
AddressStart address of the reserved memory region, which should be allocated as reserved effectively marking the memory of this type inaccessible to the operating system.
The addresses written here must be part of the memory map, have a EfiConventionalMemory type, and be page-aligned (4 KBs).
Some types of firmware may not allocate memory areas used by S3 (sleep) and S4 (hibernation) code unless CSM is enabled causing wake failures. After comparing the memory maps with CSM disabled and enabled, these areas can be found in the lower memory and can be fixed up by doing the reservation. Refer to the Sample.plist file for details.
SizeSize of the reserved memory region, must be page-aligned (4 KBs).
Type
Comment
  • Used to provide a reference for the entry.
Enabled
  • Used to Enable or Disable the entry.
  • Enables particular entries when set to true.

8.9 Quirks

QuirksDescription
ActivateHpetSupportEnables HPET support on Legacy Systems.
Older boards like ICH6 may not always have HPET settings in the firmware preferences, this option tries to force enable it.
DisableSecurityPolicyDisable platform security policy.
This setting disables various security features of the firmware, defeating the purpose of any kind of Secure Boot.
Do NOT enable it if using UEFI Secure Boot.
EnableVectorAccelerationEnable AVX vector acceleration of SHA-512 and SHA-384 hashing algorithms.
This option may cause issues on certain laptop firmwares, including Lenovo
EnableVmxEnable Intel virtual machine extensions
Required to allow virtualization in Windows on some Mac hardware. VMX is enabled or disabled and locked by BIOS before OpenCore starts on most firmware. Use BIOS to enable virtualization where possible
ForceOcWriteFlashEnables writing to flash memory for all OpenCore-managed NVRAM system variables.
This value should be disabled on most types of firmware but is left configurable to account for firmware that may have issues with volatile variable storage overflows or similar. Boot issues across multiple OSes can be observed on e.g. Lenovo Thinkpad T430 and T530 without this quirk. Apple variables related to Secure Boot and hibernation are exempt from this for security reasons. Furthermore, some OpenCore variables are exempt for different reasons, such as the boot log due to an available user option, and the TSC frequency due to timing issues. When toggling this option, a NVRAM reset may be required to ensure full functionality
IgnoreInvalidFlexRatioSome types of firmware (such as APTIO IV) may contain invalid values in the MSR_FLEX_RATIO (0x194) MSR register. These values may cause macOS boot failures on Intel platforms.
While the option is not expected to harm unaffected firmware, its use is recommended only when specifically required.
ReleaseUsbOwnershipAttempt to detach USB controller ownership from the firmware driver. While most types of firmware manage to do this properly, or at least have an option for this, some do not. As a result, the operating system may freeze upon boot. Not recommended unless specifically required.
ReloadOptionRomsQuery PCI devices and reload their Option ROMs if available.
For example, this option allows reloading NVIDIA GOP Option ROM on older Macs after the firmware version is upgraded via ForgeUefiSupport.
RequestBootVarRouting
UnblockFsConnectSome types of firmware block partition handles by opening them in By Driver mode, resulting in an inability to install File System protocols.
This quirk is useful in cases where unsuccessful drive detection results in an absence of boot entries.
ExitBootServicesDelayAdds delay in microseconds after EXIT_BOOT_SERVICES event.
This is a very rough workaround to circumvent the Still waiting for root device message on some APTIO IV firmware (ASUS Z87-Pro) particularly when using FileVault 2. It appears that for some reason, they execute code in parallel to EXIT_BOOT_SERVICES, which results in the SATA controller being inaccessible from macOS. A better approach is required and Acidanthera is open to suggestions. Expect 3 to 5 seconds to be adequate when this quirk is needed.
TscSyncTimeout
ResizeGpuBars
 
Last edited:
Universal Settings

- Disable WatchDog
AppleDebug
ApplePanic

Scan Policy = 0

SecureBootModel = Disabled (If you're planning to boot macOS on legacy hardware)

AllowSetDefault


Vendor Specific Settings

These settings applies to vendor wide and is not limited to any CPU generation.

CustomBIOSGuid (Dell and Soony)
LapicKernelPanic (HP)

Update SMBIOSMode - Custom {dell and sony

Dell and Sony

HP
 
Last edited:

Forum statistics

Threads
1,495
Messages
14,225
Members
21,465
Latest member
chebbi54