# 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:
- EHCI Patches: Recommended to power off the controller with SSDT-EHCx_OFF (opens new window). Skylake and newer users do not have an EHCI controller so no need for this.
- change EHC1 to EH01
- change EHC2 to EH02
- XHCI Patches: Not needed once an Injector kext (opens new window) is made
- change XHCI to XHC
- change XHC1 to XHC
- SATA patches: Purely cosmetic in macOS now
- change SAT0 to SATA
- change SAT1 to SATA
- IMEI Patches: Handled by WhateverGreen (opens new window)
- change HECI to IMEI
- change HEC1 to IMEI
- change MEI to IMEI
- change IDER to MEID
- GFX patches: Handled by WhateverGreen (opens new window)
- change GFX0 to IGPU
- change PEG0 to GFX0
- change PEGP to GFX0
- change SL01 to PEGP
- EC Patches: See here on best solution: Getting started with ACPI (opens new window)
- change EC0 to EC
- change H_EC to EC
- change ECDV to EC
- change PGEC to EC
- Audio renames: Handled by AppleALC (opens new window)
- change HDAS to HDEF
- change CAVS to HDEF
- change AZAL to HDEF
- change ALZA to HDEF
- change B0D3 to HDAU
- Z390 BIOS RTC bug fix: See here on best solution: Getting started with ACPI (opens new window)(SSDT-AWAC)
- change STAS to [Blank]
- Fix Z390 BIOS DSDT Device(RTC) bug
- Fix 300-series RTC Bug
- NVMe patches: NVMeFix (opens new window) fixes power management
- change PXSX to ANS1
- change PXSX to ANS2
- Airport/WiFi Patches: AirportBrcmFixup (opens new window)
- change PXSX to ARPT
- Other purely cosmetic patches:
- change LPC0 to LPCB(use SSDT-SBUS-MCHC (opens new window) for fixing SMBUS support)
- change PC00 to PCIO
- change FPU to MATH
- change TMR to TIMR
- change PIC to IPIC
- change GBE1 to ETH0
Patches
TgtBridge patches:
ACPI -> Patch -> ... -> Base
DisableASPM:
DeviceProperties -> Add -> PciRoot... -> pci-aspm-default | Data | <00>
HaltEnabler:
ACPI -> Quirks -> FadtEnableReset -> YES
Fixes:
FixAirport:
FixIPIC:
- CorpNewt's SSDTTime (opens new window) to make the proper SSDT,
FixHPET - Patch out IRQ Conflicts
- CorpNewt's SSDTTime (opens new window) to make the proper SSDT,
FixSBUS:
FixShutdown:
- FixShutdown-USB-SSDT (opens new window)
_PTS
toZPTS
Patch (opens new window)- This will not harm Windows or Linux installs as this is just adding missing methods that should've been there to start with. Blame the firmware writers
FixDisplay:
- Manual framebuffer patching, WhateverGreen does most of the work already
FixHDA:
- Handled by AppleALC
FixHPET:
- CorpNewt's SSDTTime (opens new window) to make the proper SSDT,
FixHPET - Patch out IRQ Conflicts
- CorpNewt's SSDTTime (opens new window) to make the proper SSDT,
FixSATA:
Kernel -> Quirks -> ExternalDiskIcons -> YES
FixADP1:
- Renames device
AC0_
toADP1
, see Rename-SSDT (opens new window) for an example - Also injects
Name (_PRW, Package (0x02) {0x1C,0x03})
into the device if not present. Source (opens new window)
- Renames device
FixRTC:
- CorpNewt's SSDTTime (opens new window) to make the proper SSDT,
FixHPET - Patch out IRQ Conflicts
- CorpNewt's SSDTTime (opens new window) to make the proper SSDT,
FixTMR:
- CorpNewt's SSDTTime (opens new window) to make the proper SSDT,
FixHPET - Patch out IRQ Conflicts
- CorpNewt's SSDTTime (opens new window) to make the proper SSDT,
AddPNLF:
AddMCHC:
AddIMEI:
- SSDT-SBUS-MCHC (opens new window)
- WhateverGreen will also handle fixing IMEI naming
- For Sandy Bridge on Z77 or IvyBridge on Z67, the IMEI will need to be faked: SSDT-IMEI (opens new window)
FakeLPC:
DeviceProperties -> Add -> PciRoot... -> device-id
- You'll want to spoof it to a supported LPC controller already in AppleLPC
FixIntelGfx:
- WhateverGreen handles this
AddHDMI:
- WhateverGreen handles this
DropTables:
ACPI -> Delete
SSDT:
PluginType:
- SSDT-PLUG (opens new window)
- See Getting started with ACPI (opens new window) for more details
Generate P States: ssdtPRGen.sh (opens new window)(For Sandy Bridge and IvyBridge)
Generate C States: ssdtPRGen.sh (opens new window)(For Sandy Bridge and IvyBridge)
# 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 BlackBFBFBF00
: Light Gray- To calculate your own, convert an
RGB
value toHEX
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
- 0 ->
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:
PlatformInfo -> Generic -> ProcessorType
- See AppleSmBios.h (opens new window) for all supported values
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
- You should also enable
- 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
- Optionally there's also AppleALC's
alctsel=1
boot-arg or JackFix (opens new window)
- Optionally there's also AppleALC's
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
- ie:
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
- ie.
DeviceProperties -> Add -> PciRoot(0x0)/Pci(0x2,0x0) -> vendor-id -> <86800000>
FakeAti:
DeviceProperties -> Add -> PciRoot... -> device-id
- ie:
<B0670000>
for the R9 390X
- ie:
DeviceProperties -> Add -> PciRoot... -> ATY,DeviceID
- ie:
<B067>
for the R9 390X
- ie:
DeviceProperties -> Add -> PciRoot... -> @0,compatible
- ie.
ATY,Elodea
for HD 6970M
- ie.
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>
- 1 ->
NVCAP
display-cfg:
DeviceProperties -> Add -> PciRoot... -> @0,display-cfg
- See fassl's post on the matter: NVIDIA injection (opens new window)
LoadVBios:
- See sample.dsl (opens new window) for more info on custom VBIOS injection
PatchVBios: See LoadVBIOS
NVIDIAGeneric:
DeviceProperties -> Add -> PciRoot... -> model | string | Add the GPU name
NVIDIASingle: See disabling unsupported GPUs (opens new window)
NVIDIANoEFI:
DeviceProperties -> Add -> PciRoot... -> NVDA,noEFI | Boolean | True
- See FredWst' comment for more info: GT 640 scramble (opens new window)
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.
- Radeon-DeInit-SSDT (opens new window)
- Do note that this is meant for GFX0, adjust for your system
# 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:
Kernel -> Patch
- See Common Kernel and Kext patch conversions for common patch conversions
KernelToPatch:
Kernel -> Patch
- See Common Kernel and Kext patch conversions for common patch conversions
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
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
- ex(
Cpuid1Data
(Swap00
forFF
if needing to swap with a longer value)- ex:
FFFFFFFF 00000000 00000000 00000000
- ex:
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 inSystem 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
- 0x0:
# SMBIOS
Product Name:
PlatformInfo -> Generic -> SystemProductName
Serial Number:
PlatformInfo -> Generic -> SystemSerialNumber
Board Serial Number:
PlatformInfo -> Generic -> MLB
SmUUID:
PlatformInfo -> Generic -> SystemUUID
Memory:
PlatformInfo -> CustomMemory -> True
PlatformInfo -> Memory
- See Configuration.pdf (opens new window) for more info
Slots AAPL Injection:
DeviceProperties -> Add -> PciRoot... -> APPL,slot-name | string | Add slot
# System Parameters
CustomUUID:
- Heavily deprecated and not recommended even on Clover, no equivalent on OpenCore
- More info on why: Hardware UUID injection for OpenCore #711 (opens new window)
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>
- 0x0101 ->
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