# Converting common properties from Clover to OpenCore

So this little(well not so little as I reread this...) page is for users who are having issues migrating from Clover to OpenCore as some of their legacy quirks are required or the Configuration.pdf isn't well suited for laptop users.

# Kexts and Firmware drivers

See Kexts and Firmware drivers (opens new window).

# Acpi

ACPI Renames:

So with the transition from Clover to OpenCore we should start removing unneeded patches you may have carried along for some time:

Patches

  • TgtBridge patches:

    • ACPI -> Patch -> ... -> Base
  • DisableASPM:

    • DeviceProperties -> Add -> PciRoot... -> pci-aspm-default | Data | <00>
  • HaltEnabler:

    • ACPI -> Quirks -> FadtEnableReset -> YES

Fixes:

DropTables:

  • ACPI -> Delete

SSDT:

# Boot

Boot Argument:

  • NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> boot-args

NeverHibernate:

  • Misc -> Boot -> HibernateMode -> None

Default Boot Volume:

  • Misc -> Security -> AllowSetDefault -> True
    • Press Ctrl+Enter in the picker to set default device
  • Alternative is Startup Disk in macOS's System Preferences, just like on real Macs

# Boot Graphics

DefaultBackgroundColor:

  • NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> DefaultBackgroundColor
    • 00000000: Syrah Black
    • BFBFBF00: Light Gray
    • To calculate your own, convert an RGB value to HEX

EFILoginHiDPI:

  • Clover only flag, for OpenCore UI scaling see UIScale and UEFI -> Output

flagstate:

  • NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 -> flagstate | Data | <>
    • 0 -> <00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000(dumped from a mac)
    • NVRAM location needs to be double checked for this one

UIScale:

  • UEFI -> Quirks -> UIScale | Integer |
    • 1 —> 1x scaling, corresponds to normal displays.
    • 2 —> 2x scaling, corresponds to HiDPI displays.
    • -1 —> leaves the current variable unchanged.
    • 0 —> automatically chooses scaling based on the current resolution.

# CPU

Type:

HWPEnable: Better alternative is to properly manage MSR 0x770 with HWPEnable (opens new window)

QEMU: Proper VM/KVM support is implemented in OpenCore

TurboDisable: Better alternative is to control your frequencies with CPUFriend (opens new window) or ssdtPRGen (opens new window)

# Devices

USB:

  • FixOwnership: UEFI -> Quirk -> ReleaseUsbOwnership
    • You should also enable XHCI Hand-off in your BIOS
  • ClockID: DeviceProperties -> Add -> PciRoot... -> AAPL,clock-id
  • HighCurrent: DeviceProperties -> Add -> PciRoot... -> AAPL, HighCurrent
    • Irrelevant for OS X 10.11 and newer
    • Newer variant is either PowerProperties defined in IOUSBHostFamily.kext -> AppleUSBHostPlatformProperties or added with a USBX SSDT for Skylake SMBIOS and newer

Audio:

For the following, you will need to know your PciRoot for your audio controller and its name(commonly known as HDEF but also HDAS, HDAU and such), this can be found with gfxutil (opens new window):

path/to/gfxutil -f HDEF
  • Inject: DeviceProperties -> Add -> PciRoot... -> layout-id
  • AFGLowPowerState: DeviceProperties -> Add -> PciRoot... -> AFGLowPowerState -> <01000000>
  • ResetHDA: UEFI -> Audio -> ResetTrafficClass

Add Properties:

  • No equivalent, need to specify with a PciRoot path

Properties:

  • DeviceProperties -> Add

FakeID: For the following, you will need to know your PciRoot for your device and apply their properties with DeviceProperties -> Add, PciRoot can be found with gfxutil (opens new window)

  • USB

    • device-id
    • device_type
    • device_type
  • IMEI

    • device-id
    • vendor-id
  • WIFI

    • name
    • compatible
  • LAN

    • device-id
    • compatible
    • vendor-id
  • XHCI

    • device-id
    • device_type: UHCI
    • device_type: OHCI

device_type: EHCI

  • device-id
  • AAPL,current-available
  • AAPL,current-extra
  • AAPL,current-available
  • AAPL,current-extra
  • AAPL,current-in-sleep
  • built-in

device_type: XHCI

  • device-id
  • AAPL,current-available
  • AAPL,current-extra
  • AAPL,current-available
  • AAPL,current-in-sleep
  • built-in

ForceHPET:

  • UEFI -> Quirks -> ActivateHpetSupport

# Disable Drivers

Just don't add your drivers to UEFI -> Drivers, alternatively add # in-front of the driver in your config.plist for OpenCore to skip it.

# Gui

# Graphics

  • Note: PciRoot... should be replaced with

InjectIntel:

InjectAti:

  • DeviceProperties -> Add -> PciRoot... -> device-id
    • ie: <B0670000> for the R9 390X
  • DeviceProperties -> Add -> PciRoot... -> @0,connector-type
    • You may need to add additional Connectors (ie. @1,connector-type, @2,connector-type) for the amount of ports you have. See here for the list of connector types:
LVDS                    <02 00 00 00>
DVI (Dual Link)         <04 00 00 00>
DVI (Single Link)       <00 02 00 00>
VGA                     <10 00 00 00>
S-Video                 <80 00 00 00>
DP                      <00 04 00 00>
HDMI                    <00 08 00 00>
DUMMY                   <01 00 00 00>

InjectNVIDIA:

FakeIntel:

  • DeviceProperties -> Add -> PciRoot(0x0)/Pci(0x2,0x0) -> device-id
    • ie. 66010003 for the HD 4000
  • DeviceProperties -> Add -> PciRoot(0x0)/Pci(0x2,0x0) -> vendor-id -> <86800000>

FakeAti:

  • DeviceProperties -> Add -> PciRoot... -> device-id
    • ie: <B0670000> for the R9 390X
  • DeviceProperties -> Add -> PciRoot... -> ATY,DeviceID
    • ie: <B067> for the R9 390X
  • DeviceProperties -> Add -> PciRoot... -> @0,compatible
    • ie. ATY,Elodea for HD 6970M
  • DeviceProperties -> Add -> PciRoot... -> vendor-id-> <02100000>
  • DeviceProperties -> Add -> PciRoot... -> ATY,VendorID -> <0210>

Note: See here on making an SSDT for GPU Spoofing, DeviceProperties injection via OpenCore seems to fail sometimes when trying to spoof a GPU: Renaming GPUs (opens new window) For others like InjectAti, see the Sample.dsl (opens new window) in the WhateverGreen docs

Custom EDID

Dual Link:

  • DeviceProperties -> Add -> PciRoot... -> AAPL00,DualLink
    • 1 -> <01000000>
    • 0 -> <00000000>

NVCAP

display-cfg:

LoadVBios:

PatchVBios: See LoadVBIOS

NVIDIAGeneric:

  • DeviceProperties -> Add -> PciRoot... -> model | string | Add the GPU name

NVIDIASingle: See disabling unsupported GPUs (opens new window)

NVIDIANoEFI:

ig-platform-id:

  • DeviceProperties -> Add -> PciRoot(0x0)/Pci(0x2,0x0) -> APPL,ig-platform-id

BootDisplay:

  • DeviceProperties -> Add -> PciRoot... -> @0,AAPL,boot-display

RadeonDeInit:

In most cases it is advisable to use WhateverGreen, which handles this automatically. This SSDT is not needed if WhateverGreen is used.

# Kernel and Kext Patches

KernelPm:

  • Kernel -> Quirks -> AppleXcpmCfgLock -> YES
  • Note that Clover will auto-apply this patch without setting it if the MSR E2 was locked, so you may actually need AppleXcpmCfgLock even if Clover didn't

AppleIntelCPUPM:

  • Kernel -> Quirks -> AppleCpuPmCfgLock -> YES

DellSMBIOSPatch:

An odd quirk for Dell systems running APTIO V

  • Kernel -> Quirks -> CustomSMBIOSGuid -> YES
  • PlatformInfo -> UpdateSMBIOSMode -> Custom

KextsToPatch:

KernelToPatch:

ForceKextsToLoad:

  • Kernel -> Force

Kernel LAPIC:

  • Kernel -> Quirks -> LapicKernelPanic -> YES

KernelXCPM:

  • Kernel -> Quirks -> AppleXcpmExtraMsrs -> YES

For an extensive list of patches, please compare OpenCore's CommonPatches.c (opens new window) with Clover's kernel_patcher.c (opens new window). Some patches are not transferred over so if you're having issues this is the section to check, example is converting the KernelIvyBridgeXCPM() (opens new window) to OpenCore:

Base: _xcpm_bootstrap
Comment: _xcpm_bootstrap (Ivy Bridge) 10.15
Count: 1
Enabled: YES
Find: 8D43C43C22
Identifier: kernel
Limit: 0
Mask: FFFF00FFFF
MinKernel: 19.
MaxKernel: 19.99.99
Replace: 8D43C63C22
ReplaceMask: 0000FF0000
Skip: 0

Source (opens new window)

For Low end Haswell+ like Celerons, please see here for recommended patches: Bugtracker Issues 365 (opens new window)

USB Port Limit Patches:

  • Kernel -> Quirks -> XhciPortLimit -> YES

External Icons Patch:

  • Kernel -> Quirks -> ExternalDiskIcons -> YES
  • Used for when you internal disk are seen as external on macOS

AppleRTC

Issue with AppleRTC, quite a simple fix:

  • config.plist -> Kernel -> Quirks -> DisableRtcChecksum -> true

For some versions of MacOS (e.g. Catalina), boot.efi may write to the RTC. To prevent this, the below needs to be added as well:

  • config.plist -> NVRAM -> Add -> 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:rtc-blacklist = <58 59>

Note: If you still have issues, you'll need to use RTCMemoryFixup (opens new window) and exclude ranges. See here for more info (opens new window), and here (opens new window) for a guide.

FakeCPUID:

  • Kernel -> Emulate:
    • Cpuid1Mask: <Clover_FCPUID_Extended_to_4_bytes_Swapped_Bytes> | 00 00 00 00 | 00 00 00 00 | 00 00 00 00
      • ex(0x0306A9): A9060300 00000000 00000000 00000000
    • Cpuid1Data(Swap 00 for FF if needing to swap with a longer value)
      • ex: FFFFFFFF 00000000 00000000 00000000

Note: Finding CPUID's for Intel can be a bit harder than looking at Intel ARK, easiest way to find it is via Microsoft's Intel microcode update notes (opens new window)

# Rt Variables

ROM:

  • No direct translation for UseMacAddr0 as you need to provide your hardware ROM, can be found in System Preferences -> Network -> Advanced -> Hardware
  • Also verify your En0 is still built-in when running OpenCore, this can break iMessage and iCloud when there's no built-in property.

MLB:

  • PlatformInfo -> Generic -> MLB

BooterConfig:

  • UEFI -> Quirks -> UIScale | Integer |
    • 1 —> 1x scaling, corresponds to normal displays.
    • 2 —> 2x scaling, corresponds to HiDPI displays.
    • -1 —> leaves the current variable unchanged.
    • 0 —> automatically chooses scaling based on the current resolution.

CsrActiveConfig:

  • NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> csr-active-config:

    • 0x0: 00000000
    • 0x3: 03000000
    • 0x67: 67000000
    • 0x3E7: E7030000

# SMBIOS

Product Name:

  • PlatformInfo -> Generic -> SystemProductName

Serial Number:

  • PlatformInfo -> Generic -> SystemSerialNumber

Board Serial Number:

  • PlatformInfo -> Generic -> MLB

SmUUID:

  • PlatformInfo -> Generic -> SystemUUID

Memory:

Slots AAPL Injection:

  • DeviceProperties -> Add -> PciRoot... -> APPL,slot-name | string | Add slot

# System Parameters

CustomUUID:

InjectSystemID:

  • Also legacy as it's used for replicating Chameleon user's UUIDs

BacklightLevel:

  • Property set in NVRAM
  • NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> backlight-level | Data | <Insert value>
    • 0x0101 -> <0101>

InjectKexts:

  • No equivalent but you really have no excuse to keep FakeSMC inside macOS

NoCaches:

  • This only works up to 10.7 on Clover, and OpenCore requires an OS that supports a prelinked(10.7) so there can't be an equivalent

ExposeSysVariables:

  • Just add your SMBIOS properties under PlatformInfo
  • Confusing quirk tbh, it's not even mentioned in more recent versions of the Clover docs on AppleLife

NVIDIAWeb:

  • What this does is apply sudo nvram nvda_drv=1 on every boot. To get a similar effect you can find it under the following path:
  • NVRAM -> Add -> 7C436110-AB2A-4BBB-A880-FE41995C9F82 -> nvda_drv: <31>

# Status

Section finished 100%:

  • Boot Graphics
  • Disable Drivers
  • KernelAndKextPatches
  • RTVariables
  • SMBIOS
  • SystemParameters

Section mostly finished:

  • Acpi
  • Boot
  • CPU
  • Device

Section missing:

  • GUI