From d7f25f66f21589d9a8ae752855528b6c305109a7 Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com> Date: Sun, 15 Mar 2020 12:35:53 -0600 Subject: [PATCH 1/8] Intial renames --- AMD/AMD-config.md | 8 ++++---- clover-conversion/clover-efi.md | 8 ++++---- config-HEDT/broadwell-e.md | 10 +++++----- config-HEDT/haswell-e.md | 10 +++++----- config-HEDT/skylake-x.md | 10 +++++----- config.plist/coffee-lake.md | 10 +++++----- config.plist/haswell.md | 10 +++++----- config.plist/ivy-bridge.md | 10 +++++----- config.plist/kaby-lake.md | 10 +++++----- config.plist/skylake.md | 10 +++++----- extras/kalsr-fix.md | 4 ++-- extras/legacy.md | 2 +- installer-guide/opencore-efi.md | 4 ++-- ktext.md | 4 ++-- post-install/nvram.md | 2 +- post-install/security.md | 6 +++--- post-install/update.md | 2 +- troubleshooting/troubleshooting.md | 8 ++++---- update.md | 31 ------------------------------ 19 files changed, 64 insertions(+), 95 deletions(-) delete mode 100644 update.md diff --git a/AMD/AMD-config.md b/AMD/AMD-config.md index 309fc01496..98a870b8bb 100644 --- a/AMD/AMD-config.md +++ b/AMD/AMD-config.md @@ -78,7 +78,7 @@ Settings relating to ACPI, leave everything here as default. ![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) -This section is dedicated to quirks relating to boot.efi patching with FwRuntimeServices, the replacement for AptioMemoryFix.efi +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi **MmioWhitelist**: @@ -217,7 +217,7 @@ Settings relating to the kernel, for us we'll be enabling `DummyPowerManagement` * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use AppleUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: * `Cmd+V`: Enables verbose * `Cmd+Opt+P+R`: Cleans NVRAM * `Cmd+R`: Boots Recovery partition @@ -412,7 +412,7 @@ Only drivers present here should be: * HFSPlus.efi * ApfsDriverLoader.efi -* FwRuntimeServices.efi +* OpenRuntime.efi **Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS @@ -440,7 +440,7 @@ Only drivers present here should be: * **KeyMergeThreshold**: `2` * The length of time that a key will be registered before resetting, for best results use `2` milliseconds * **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with AppleUsbKbDxe.efi + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi * **KeySupportMode**: `Auto` * Keyboard translation for OpenCore * **KeySwap**: `NO` diff --git a/clover-conversion/clover-efi.md b/clover-conversion/clover-efi.md index 1b85193809..22f04f125b 100644 --- a/clover-conversion/clover-efi.md +++ b/clover-conversion/clover-efi.md @@ -7,11 +7,11 @@ Main thing to note is that you must specify your kexts and firmware drivers in y **Supported ones:** * ApfsDriverLoader.efi -* FwRuntimeServices.efi +* OpenRuntime.efi * HFSPlus.efi * VBoxHfs.efi * EnhancedFatDxe.efi -* AppleUsbKbDxe.efi +* OpenUsbKbDxe.efi * UsbMouseDxe.efi * XhciDxe.efi * AudioDxe.efi @@ -57,9 +57,9 @@ Main thing to note is that you must specify your kexts and firmware drivers in y * OsxFatBinaryDrv.efi * OsxLowMemFixDrv.efi * SMCHelper.efi -* UsbKbDxe.efi(replaced with AppleUsbKbDxe.efi) +* UsbKbDxe.efi(replaced with OpenUsbKbDxe.efi) # AptioMemoryFix -Well before we actually get started on converting the Clover config, we must first talk about converting from AptioMemoryFix. The main thing to note is that it's inside of OpenCore with FwRuntimeServices being an extension, this means that AptioMemoryFix and that there's also a lot more settings to choose from. Please see the hardware specific sections of the OpenCore guide to know what booter settings your system may require(HEDT like X99 and X299 should look to the closest CPU like Skylake-X should refer to Skylake guide and **read the comments** as they mention specifics for your system). +Well before we actually get started on converting the Clover config, we must first talk about converting from AptioMemoryFix. The main thing to note is that it's inside of OpenCore with OpenRuntime being an extension, this means that AptioMemoryFix and that there's also a lot more settings to choose from. Please see the hardware specific sections of the OpenCore guide to know what booter settings your system may require(HEDT like X99 and X299 should look to the closest CPU like Skylake-X should refer to Skylake guide and **read the comments** as they mention specifics for your system). diff --git a/config-HEDT/broadwell-e.md b/config-HEDT/broadwell-e.md index 0bfb4a4c62..480f176e81 100644 --- a/config-HEDT/broadwell-e.md +++ b/config-HEDT/broadwell-e.md @@ -75,7 +75,7 @@ Settings relating to ACPI, leave everything here as default. ![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) -This section is dedicated to quirks relating to boot.efi patching with FwRuntimeServices, the replacement for AptioMemoryFix.efi +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi **MmioWhitelist**: @@ -206,7 +206,7 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use AppleUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: * `Cmd+V`: Enables verbose * `Cmd+Opt+P+R`: Cleans NVRAM * `Cmd+R`: Boots Recovery partition @@ -252,7 +252,7 @@ We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `Req * Self-explanatory, enables or disables * **Path** * Path to file after the `Tools` folder - * ex: [Shell.efi](https://github.com/acidanthera/OpenCoreShell/releases) + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) **Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore @@ -394,7 +394,7 @@ Only drivers present here should be: * HFSPlus.efi * ApfsDriverLoader.efi -* FwRuntimeServices.efi +* OpenRuntime.efi **Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS @@ -422,7 +422,7 @@ Only drivers present here should be: * **KeyMergeThreshold**: `2` * The length of time that a key will be registered before resetting, for best results use `2` milliseconds * **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with AppleUsbKbDxe.efi + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi * **KeySupportMode**: `Auto` * Keyboard translation for OpenCore * **KeySwap**: `NO` diff --git a/config-HEDT/haswell-e.md b/config-HEDT/haswell-e.md index 91f2ba80c0..63ff3e9dbd 100644 --- a/config-HEDT/haswell-e.md +++ b/config-HEDT/haswell-e.md @@ -75,7 +75,7 @@ Settings relating to ACPI, leave everything here as default. ![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) -This section is dedicated to quirks relating to boot.efi patching with FwRuntimeServices, the replacement for AptioMemoryFix.efi +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi **MmioWhitelist**: @@ -206,7 +206,7 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use AppleUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: * `Cmd+V`: Enables verbose * `Cmd+Opt+P+R`: Cleans NVRAM * `Cmd+R`: Boots Recovery partition @@ -252,7 +252,7 @@ We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `Req * Self-explanatory, enables or disables * **Path** * Path to file after the `Tools` folder - * ex: [Shell.efi](https://github.com/acidanthera/OpenCoreShell/releases) + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) **Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore @@ -394,7 +394,7 @@ Only drivers present here should be: * HFSPlus.efi * ApfsDriverLoader.efi -* FwRuntimeServices.efi +* OpenRuntime.efi **Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS @@ -422,7 +422,7 @@ Only drivers present here should be: * **KeyMergeThreshold**: `2` * The length of time that a key will be registered before resetting, for best results use `2` milliseconds * **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with AppleUsbKbDxe.efi + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi * **KeySupportMode**: `Auto` * Keyboard translation for OpenCore * **KeySwap**: `NO` diff --git a/config-HEDT/skylake-x.md b/config-HEDT/skylake-x.md index 24899ce3c5..76acc3ac3d 100644 --- a/config-HEDT/skylake-x.md +++ b/config-HEDT/skylake-x.md @@ -76,7 +76,7 @@ Settings relating to ACPI, leave everything here as default. ![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) -This section is dedicated to quirks relating to boot.efi patching with FwRuntimeServices, the replacement for AptioMemoryFix.efi +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi **MmioWhitelist**: @@ -203,7 +203,7 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use AppleUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: * `Cmd+V`: Enables verbose * `Cmd+Opt+P+R`: Cleans NVRAM * `Cmd+R`: Boots Recovery partition @@ -249,7 +249,7 @@ We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `Req * Self-explanatory, enables or disables * **Path** * Path to file after the `Tools` folder - * ex: [Shell.efi](https://github.com/acidanthera/OpenCoreShell/releases) + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) **Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore @@ -391,7 +391,7 @@ Only drivers present here should be: * HFSPlus.efi * ApfsDriverLoader.efi -* FwRuntimeServices.efi +* OpenRuntime.efi **Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS @@ -419,7 +419,7 @@ Only drivers present here should be: * **KeyMergeThreshold**: `2` * The length of time that a key will be registered before resetting, for best results use `2` milliseconds * **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with AppleUsbKbDxe.efi + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi * **KeySupportMode**: `Auto` * Keyboard translation for OpenCore * **KeySwap**: `NO` diff --git a/config.plist/coffee-lake.md b/config.plist/coffee-lake.md index 14afc6cabc..a16b7d7fec 100644 --- a/config.plist/coffee-lake.md +++ b/config.plist/coffee-lake.md @@ -79,7 +79,7 @@ Settings relating to ACPI, leave everything here as default. ![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) -This section is dedicated to quirks relating to boot.efi patching with FwRuntimeServices, the replacement for AptioMemoryFix.efi +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi **MmioWhitelist**: @@ -239,7 +239,7 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use AppleUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: * `Cmd+V`: Enables verbose * `Cmd+Opt+P+R`: Cleans NVRAM * `Cmd+R`: Boots Recovery partition @@ -285,7 +285,7 @@ We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `Req * Self-explanatory, enables or disables * **Path** * Path to file after the `Tools` folder - * ex: [Shell.efi](https://github.com/acidanthera/OpenCoreShell/releases) + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) **Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore @@ -431,7 +431,7 @@ Only drivers present here should be: * HFSPlus.efi * ApfsDriverLoader.efi -* FwRuntimeServices.efi +* OpenRuntime.efi **Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS @@ -459,7 +459,7 @@ Only drivers present here should be: * **KeyMergeThreshold**: `2` * The length of time that a key will be registered before resetting, for best results use `2` milliseconds * **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with AppleUsbKbDxe.efi + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi * **KeySupportMode**: `Auto` * Keyboard translation for OpenCore * **KeySwap**: `NO` diff --git a/config.plist/haswell.md b/config.plist/haswell.md index 44dea00821..be07bc98e1 100644 --- a/config.plist/haswell.md +++ b/config.plist/haswell.md @@ -77,7 +77,7 @@ Settings relating to ACPI, leave everything here as default. ![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) -This section is dedicated to quirks relating to boot.efi patching with FwRuntimeServices, the replacement for AptioMemoryFix.efi +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi **MmioWhitelist**: @@ -242,7 +242,7 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use AppleUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: * `Cmd+V`: Enables verbose * `Cmd+Opt+P+R`: Cleans NVRAM * `Cmd+R`: Boots Recovery partition @@ -288,7 +288,7 @@ We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `Req * Self-explanatory, enables or disables * **Path** * Path to file after the `Tools` folder - * ex: [Shell.efi](https://github.com/acidanthera/OpenCoreShell/releases) + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) **Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore @@ -437,7 +437,7 @@ Only drivers present here should be: * HFSPlus.efi * ApfsDriverLoader.efi -* FwRuntimeServices.efi +* OpenRuntime.efi **Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS @@ -465,7 +465,7 @@ Only drivers present here should be: * **KeyMergeThreshold**: `2` * The length of time that a key will be registered before resetting, for best results use `2` milliseconds * **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with AppleUsbKbDxe.efi + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi * **KeySupportMode**: `Auto` * Keyboard translation for OpenCore * **KeySwap**: `NO` diff --git a/config.plist/ivy-bridge.md b/config.plist/ivy-bridge.md index 22ef814ad4..fc79370a55 100644 --- a/config.plist/ivy-bridge.md +++ b/config.plist/ivy-bridge.md @@ -77,7 +77,7 @@ Settings relating to ACPI, leave everything here as default. ![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) -This section is dedicated to quirks relating to boot.efi patching with FwRuntimeServices, the replacement for AptioMemoryFix.efi +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi **MmioWhitelist**: @@ -231,7 +231,7 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use AppleUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: * `Cmd+V`: Enables verbose * `Cmd+Opt+P+R`: Cleans NVRAM * `Cmd+R`: Boots Recovery partition @@ -277,7 +277,7 @@ We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `Req * Self-explanatory, enables or disables * **Path** * Path to file after the `Tools` folder - * ex: [Shell.efi](https://github.com/acidanthera/OpenCoreShell/releases) + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) **Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore @@ -419,7 +419,7 @@ Only drivers present here should be: * HFSPlus.efi * ApfsDriverLoader.efi -* FwRuntimeServices.efi +* OpenRuntime.efi **Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS @@ -447,7 +447,7 @@ Only drivers present here should be: * **KeyMergeThreshold**: `2` * The length of time that a key will be registered before resetting, for best results use `2` milliseconds * **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with AppleUsbKbDxe.efi + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi * **KeySupportMode**: `Auto` * Keyboard translation for OpenCore * **KeySwap**: `NO` diff --git a/config.plist/kaby-lake.md b/config.plist/kaby-lake.md index 5950ed4b65..49ec529219 100644 --- a/config.plist/kaby-lake.md +++ b/config.plist/kaby-lake.md @@ -74,7 +74,7 @@ Settings relating to ACPI, leave everything here as default. ![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) -This section is dedicated to quirks relating to boot.efi patching with FwRuntimeServices, the replacement for AptioMemoryFix.efi +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi **MmioWhitelist**: @@ -230,7 +230,7 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use AppleUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: * `Cmd+V`: Enables verbose * `Cmd+Opt+P+R`: Cleans NVRAM * `Cmd+R`: Boots Recovery partition @@ -276,7 +276,7 @@ We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `Req * Self-explanatory, enables or disables * **Path** * Path to file after the `Tools` folder - * ex: [Shell.efi](https://github.com/acidanthera/OpenCoreShell/releases) + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) **Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore @@ -422,7 +422,7 @@ Only drivers present here should be: * HFSPlus.efi * ApfsDriverLoader.efi -* FwRuntimeServices.efi +* OpenRuntime.efi **Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS @@ -450,7 +450,7 @@ Only drivers present here should be: * **KeyMergeThreshold**: `2` * The length of time that a key will be registered before resetting, for best results use `2` milliseconds * **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with AppleUsbKbDxe.efi + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi * **KeySupportMode**: `Auto` * Keyboard translation for OpenCore * **KeySwap**: `NO` diff --git a/config.plist/skylake.md b/config.plist/skylake.md index cbf469b08c..d296a3d896 100644 --- a/config.plist/skylake.md +++ b/config.plist/skylake.md @@ -74,7 +74,7 @@ Settings relating to ACPI, leave everything here as default. ![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) -This section is dedicated to quirks relating to boot.efi patching with FwRuntimeServices, the replacement for AptioMemoryFix.efi +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi **MmioWhitelist**: @@ -230,7 +230,7 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use AppleUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: * `Cmd+V`: Enables verbose * `Cmd+Opt+P+R`: Cleans NVRAM * `Cmd+R`: Boots Recovery partition @@ -276,7 +276,7 @@ We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `Req * Self-explanatory, enables or disables * **Path** * Path to file after the `Tools` folder - * ex: [Shell.efi](https://github.com/acidanthera/OpenCoreShell/releases) + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) **Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore @@ -418,7 +418,7 @@ Only drivers present here should be: * HFSPlus.efi * ApfsDriverLoader.efi -* FwRuntimeServices.efi +* OpenRuntime.efi **Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS @@ -446,7 +446,7 @@ Only drivers present here should be: * **KeyMergeThreshold**: `2` * The length of time that a key will be registered before resetting, for best results use `2` milliseconds * **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with AppleUsbKbDxe.efi + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi * **KeySupportMode**: `Auto` * Keyboard translation for OpenCore * **KeySwap**: `NO` diff --git a/extras/kalsr-fix.md b/extras/kalsr-fix.md index de0185ea15..361cfb921a 100644 --- a/extras/kalsr-fix.md +++ b/extras/kalsr-fix.md @@ -45,8 +45,8 @@ The real fix to this is quite simple actually, the process is both the same for * [AptioMemoryFix](https://github.com/acidanthera/AptioFixPkg/releases)(Don't mix Aptio fixes together or use OsxAptioFixDrvX, only AptioMemoryFix is supported in this guide) * Clover Shell(most users already have this included, usually called shell64.efi or some variation) * OpenCore users: - * [FwRuntimeServices](https://github.com/acidanthera/OpenCorePkg/releases) - * [OpenCoreShell](https://github.com/acidanthera/OpenCoreShell/releases)(Don't forget to enable this under `Root->Misc->Tools`) + * [OpenRuntime](https://github.com/acidanthera/OpenCorePkg/releases) + * [OpenCorePkg](https://github.com/acidanthera/OpenCorePkg/releases)(Don't forget to enable this under `Root->Misc->Tools`) * Config.plist settings: * AvoidRuntimeDefrag: `YES` * Fixes UEFI runtime services like date, time, NVRAM, etc diff --git a/extras/legacy.md b/extras/legacy.md index 9e109c8492..5ab32dda70 100644 --- a/extras/legacy.md +++ b/extras/legacy.md @@ -33,7 +33,7 @@ This will provide you with an EFI partition with a `boot` file, this is where we **Note**: The firmware drivers used for legacy users differ slightly: -* [AppleUsbKbDxe.efi](https://github.com/acidanthera/OpenCorePkg/releases) +* [OpenUsbKbDxe.efi](https://github.com/acidanthera/OpenCorePkg/releases) * For picker support in the Opencore menu * [HfsPlusLegacy.efi](https://github.com/acidanthera/OcBinaryData/blob/master/Drivers/HfsPlusLegacy.efi) * Needed for seeing Hfs drives like installers, the legacy variant is required for SnadyBridge and older due to missing RDRAND instruction support diff --git a/installer-guide/opencore-efi.md b/installer-guide/opencore-efi.md index e2228c1b03..9cd4904a40 100644 --- a/installer-guide/opencore-efi.md +++ b/installer-guide/opencore-efi.md @@ -28,14 +28,14 @@ To setup OpenCore’s folder structure, you’ll want to grab the EFI folder fou Now something you'll notice is that it comes with a bunch of files in `Drivers` and `Tools` folder, we don't want most of these: * **Remove from Drivers:** - * AppleUsbKbDxe.efi + * OpenUsbKbDxe.efi * Used for OpenCore picker on **legacy systems running DuetPkg**, [not recommended and even harmful on Ivy Bridge and newer](https://applelife.ru/threads/opencore-obsuzhdenie-i-ustanovka.2944066/page-176#post-856653) * NvmExpressDxe.efi * Used for Haswell and older when no NVMe driver is built into the firmware * XhciDxe.efi * Used for Sandy Bridge and older when no XHCI driver is built into the firmware * HiiDatabase.efi - * Used for fixing GUI support like Shell.efi on Sandy Bridge and older + * Used for fixing GUI support like OpenShell.efi on Sandy Bridge and older * **Remove everything from Tools:** * BootKicker.efi diff --git a/ktext.md b/ktext.md index d42b95a504..9b73d30b76 100644 --- a/ktext.md +++ b/ktext.md @@ -16,12 +16,12 @@ These are the drivers used by OpenCore, for the majority of systems you only nee * Needed for seeing APFS volumes(ie. macOS) * [VboxHfs.efi](https://github.com/acidanthera/AppleSupportPkg/releases) **or** [HfsPlus.efi](https://github.com/acidanthera/OcBinaryData/blob/master/Drivers/HfsPlus.efi) * Needed for seeing HFS volumes(ie. macOS Installers and Recovery partitions/images). **Do not mix HFS drivers** -* [FwRuntimeServices.efi](https://github.com/acidanthera/OpenCorePkg/releases) +* [OpenRuntime.efi](https://github.com/acidanthera/OpenCorePkg/releases) * Replacement for [AptioMemoryFix.efi](https://github.com/acidanthera/AptioFixPkg), used for patching boot.efi for NVRAM fixes and better memory management. For legacy users: -* [AppleUsbKbDxe.efi](https://github.com/acidanthera/OpenCorePkg/releases) +* [OpenUsbKbDxe.efi](https://github.com/acidanthera/OpenCorePkg/releases) * Used for OpenCore picker on **legacy systems running DuetPkg**, [not recommended and even harmful on UEFI(Ivy Bridge and newer)](https://applelife.ru/threads/opencore-obsuzhdenie-i-ustanovka.2944066/page-176#post-856653) * [NvmExpressDxe.efi](https://github.com/acidanthera/OpenCorePkg/releases) * Used for Haswell and older when no NVMe driver is built into the firmware, not needed if you're not using an NVMe drive diff --git a/post-install/nvram.md b/post-install/nvram.md index 13107bd904..e334d19be0 100644 --- a/post-install/nvram.md +++ b/post-install/nvram.md @@ -68,7 +68,7 @@ Within your config.plist: And within your EFI: -* `FwRuntimeServices.efi` driver(this is needed for proper sleep, shutdown and other services to work correctly +* `OpenRuntime.efi` driver(this is needed for proper sleep, shutdown and other services to work correctly Now grab the 'LogoutHook.command' and place it somewhere safe (e.g. within your user directory, as shown below): diff --git a/post-install/security.md b/post-install/security.md index b517258369..9ab8d6ee6a 100644 --- a/post-install/security.md +++ b/post-install/security.md @@ -14,8 +14,8 @@ FileVault is macOS's builtin drive encyption, and with OpenCore support for it h To start, you'll need the following .efi drivers: -* FwRuntimeServices.efi - * [AppleUsbKbDxe.efi](https://github.com/acidanthera/AppleSupportPkg/releases) for DuetPkg users(systems without UEFI support) +* OpenRuntime.efi + * [OpenUsbKbDxe.efi](https://github.com/acidanthera/AppleSupportPkg/releases) for DuetPkg users(systems without UEFI support) **Do not use VirtualSMC.efi with OpenCore, its already baked inside**. You do however require VirtualSMC.kext still @@ -28,7 +28,7 @@ Setting in your config.plist: * NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 * `UIScale` set to `02` for high resolution small displays * UEFI -> Input - * `KeySupport` set to YES(Only when using OpenCore's builtin input, users of AppleUsbKbDxe should avoid) + * `KeySupport` set to YES(Only when using OpenCore's builtin input, users of OpenUsbKbDxe should avoid) * UEFI -> Output * `ProvideConsoleGOP` to YES * UEFI -> Protocols diff --git a/post-install/update.md b/post-install/update.md index 7819dcc2d7..9bdde7fe39 100644 --- a/post-install/update.md +++ b/post-install/update.md @@ -37,7 +37,7 @@ So the process goes as follows: * `EFI/BOOT/BOOTx64.efi` * `EFI/OC/OpenCore.efi` - * `EFI/OC/Drivers/FwRuntimeServices`(**Don't forget this one, OpenCore will not boot with mismatched versions**) + * `EFI/OC/Drivers/OpenRuntime`(**Don't forget this one, OpenCore will not boot with mismatched versions**) * You can also update other drivers you have if present, these are just the ones that **must** be updated in order to boot correctly diff --git a/troubleshooting/troubleshooting.md b/troubleshooting/troubleshooting.md index f8dc569bf4..cd1ba7af89 100644 --- a/troubleshooting/troubleshooting.md +++ b/troubleshooting/troubleshooting.md @@ -159,14 +159,14 @@ Missing or incorrect `Executable path` * AMD kernel patches aren't working(AMD Users only): * Either outdated or missing kernel patches * Incompatible keyboard driver: - * Disable `PollAppleHotKeys` and enable `KeySupport`, then remove [AppleUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) from your config.plist -> UEFI -> Drivers - * If the above doesn't work, reverse: disable `KeySupport`, then add [AppleUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) to your config.plist -> UEFI -> Drivers + * Disable `PollAppleHotKeys` and enable `KeySupport`, then remove [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) from your config.plist -> UEFI -> Drivers + * If the above doesn't work, reverse: disable `KeySupport`, then add [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) to your config.plist -> UEFI -> Drivers ## Can't select anything in the picker * Incompatible keyboard driver: - * Disable `PollAppleHotKeys` and enable `KeySupport`, then remove [AppleUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) from your config.plist -> UEFI -> Drivers - * If the above doesn't work, reverse: disable `KeySupport`, then add [AppleUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) to your config.plist -> UEFI -> Drivers + * Disable `PollAppleHotKeys` and enable `KeySupport`, then remove [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) from your config.plist -> UEFI -> Drivers + * If the above doesn't work, reverse: disable `KeySupport`, then add [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) to your config.plist -> UEFI -> Drivers ## Stuck on `This version of Mac OS X is not supported: Reason Mac...` diff --git a/update.md b/update.md deleted file mode 100644 index 750267749e..0000000000 --- a/update.md +++ /dev/null @@ -1,31 +0,0 @@ -# To-do list - -0.5.5 Changes: - -* ~~Remove NullCPUPowerManagement.kext~~ -* ~~Add DummyPowerManagement~~ -* ~~Replace SupportsCsm with AdviseWindows~~ -* ~~Add TakeoffDelay~~ - - -0.5.4 Changes: - -* ~~Remove all mentions of VirtualSMC.efi~~ -* ~~Add info for FileVault, AppleSmcIo~~ - * ~~Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi~~ -* ~~Add AuthRestart info~~ - * ~~Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional~~ -* ~~AllowSetDefault~~ - * Allow CTRL+Enter and CTRL+Index to set default boot device in the picker -* ~~Add SupportsCsm info for Windows~~ - * ~~Used for when the EFI partition isn't the first partition on the windows disk~~ -* ~~Add WriteFlash~~ - * Enables writing to flash memory for all added variables, recommeneded for most firmwares -* ~~Add LegacyOverwrite~~ - * ~~Permits overwriting firmware variables from nvram.plist, only needed for systems requiring emulated NVRAM like Z390~~ -* ~~Add AppleXcpmForceBoost~~ - * ~~Forces maximum multiplier, only recommended to enable on scientific or media calculation machines~~ -* ~~Rename UsbKbDxe to AppleUsbKbDxe~~ -* ~~Moved VerifyMsrE2 to OpenCorePkg~~ -* ~~Add IncreasePciBarSize quirk~~ - * ~~Expands IOPCIFamily's size from 1GB to 4GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this~~ From 4d61d83396753842d6e4cce09099f14de20b7fd9 Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com> Date: Sun, 15 Mar 2020 18:25:31 -0600 Subject: [PATCH 2/8] Fix misc --- AMD/AMD-config.md | 31 +++++++++++++++--------- README.md | 8 +++--- clover-conversion/clover-efi.md | 2 +- config-HEDT/broadwell-e.md | 35 ++++++++++++++++----------- config-HEDT/haswell-e.md | 35 ++++++++++++++++----------- config-HEDT/skylake-x.md | 35 ++++++++++++++++----------- config.plist/coffee-lake.md | 39 ++++++++++++++++++------------ config.plist/haswell.md | 37 ++++++++++++++++------------ config.plist/ivy-bridge.md | 37 ++++++++++++++++------------ config.plist/kaby-lake.md | 37 ++++++++++++++++------------ config.plist/skylake.md | 37 ++++++++++++++++------------ extras/kalsr-fix.md | 8 +++--- post-install/nvram.md | 2 +- post-install/security.md | 14 +++++------ post-install/spoof.md | 2 +- troubleshooting/debug.md | 4 +-- troubleshooting/troubleshooting.md | 14 +++++------ 17 files changed, 221 insertions(+), 156 deletions(-) diff --git a/AMD/AMD-config.md b/AMD/AMD-config.md index 98a870b8bb..e7795ccd06 100644 --- a/AMD/AMD-config.md +++ b/AMD/AMD-config.md @@ -49,7 +49,7 @@ This is where you'll add SSDTs for your system, these are very important to **bo Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension\(Assembled\) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. **Block** @@ -108,6 +108,8 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **SetupVirtualMap**: YES @@ -230,7 +232,10 @@ Settings relating to the kernel, for us we'll be enabling `DummyPowerManagement` **Debug**: Helpful for debuggin OpenCore boot issues(We'll be chnging everything *but* `DisplayDelay`) -* **DisableWatchDog**: YES \(May need to be set for YES if OpenCore is stalling on something while booting, can also help for early macOS boot issues\) +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues * **Target**: `67` * Shows more debug information, requires debug version of OpenCore * **DisplayLevel**: `2147483714` @@ -279,7 +284,7 @@ Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidant * **UIScale**: * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`\) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) * **DefaultBackgroundColor**: Background color used by boot.efi * `00000000`: Syrah Black @@ -306,9 +311,9 @@ csr-active-config is set to `00000000` which enables System Integrity Protection Recommended to leave enabled for best security practices -* **nvda\_drv**: <> +* **nvda\_drv**: <> * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> +* **prev-lang:kbd**: <> * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): * American: `en-US:0`(`656e2d55533a30` in HEX) * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) @@ -361,15 +366,15 @@ SmUUID: DEA17B2D-2F9F-4955-B266-A74C47678AD3 The order is `Product | Serial | Board Serial (MLB)` -The `Type` part gets copied to Generic -> SystemProductName. +The `Type` part gets copied to Generic -> SystemProductName. -The `Serial` part gets copied to Generic -> SystemSerialNumber. +The `Serial` part gets copied to Generic -> SystemSerialNumber. -The `Board Serial` part gets copied to Generic -> MLB. +The `Board Serial` part gets copied to Generic -> MLB. -The `SmUUID` part gets copied toto Generic -> SystemUUID. +The `SmUUID` part gets copied toto Generic -> SystemUUID. -We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) **Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** @@ -410,7 +415,7 @@ We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your Only drivers present here should be: -* HFSPlus.efi +* HfsPlus.efi * ApfsDriverLoader.efi * OpenRuntime.efi @@ -435,6 +440,8 @@ Only drivers present here should be: **Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards * **KeyForgetThreshold**: `5` * The delay between each key input when holding a key down, for best results use `5` milliseconds * **KeyMergeThreshold**: `2` @@ -491,7 +498,7 @@ Only drivers present here should be: * **ExitBootServicesDelay**: `0` * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 * **IgnoreInvalidFlexRatio**: NO - * Fix for when MSR\_FLEX\_RATIO \(0x194\) can't be disabled in the BIOS, required for all pre-skylake based systems + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems * **ReleaseUsbOwnership**: NO * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` * **RequestBootVarFallback**: YES diff --git a/README.md b/README.md index b994bcee7a..4d8d8ce9f8 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Lastly, this guide is only meant to be a starting point in your journey with Ope * Kernel extensions are loaded in the order specified in your config file, so you must load an extension's dependencies before you load the extension itself. For example, Lilu must be loaded before WhateverGreen or VirtualSMC. * ACPI patches and SSDTs are applied to all operating systems. Adjust your SSDTs with `If (_OSI ("Darwin")) {}` or use [rEFind](http://rodsbooks.com/refind/) in conjunction with OpenCore. -* Some systems require pure UEFI mode to boot. \(This setting is commonly called "Windows 8.1/10 UEFI Mode" by motherboard manufacturers. See also on [flashing a UEFI ROM onto older GPUs](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.Radeon.en.md)\) +* Some systems require pure UEFI mode to boot. (This setting is commonly called "Windows 8.1/10 UEFI Mode" by motherboard manufacturers. See also on [flashing a UEFI ROM onto older GPUs](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.Radeon.en.md)) * Issues can occur if NVMe devices are set up as SATA devices in the BIOS. * OpenCore requires a version of macOS that supports a prelinked kernel, this means any installs of OS X 10.7 Lion or newer are supported with some later versions of OS X 10.6 Snow Leopard also having support. @@ -41,8 +41,8 @@ Lastly, this guide is only meant to be a starting point in your journey with Ope * Thunderbolt * Intel SGX * Intel Platform Trust -* CFG Lock\(MSR 0xE2 write protection\) - * If this can't be turned off in the BIOS\(or even found\) please consider patching it out. See [Fixing CFG Lock](extras/msr-lock.md) for more info. +* CFG Lock(MSR 0xE2 write protection) + * If this can't be turned off in the BIOS(or even found) please consider patching it out. See [Fixing CFG Lock](extras/msr-lock.md) for more info. * AMD CPU users don't need to worry about. **Enable:** @@ -53,5 +53,5 @@ Lastly, this guide is only meant to be a starting point in your journey with Ope * Execute Disable Bit * EHCI/XHCI Hand-off * OS type: Windows 8.1/10 UEFI Mode -* Legacy RTC Device\(Relevant for Z370+\) +* Legacy RTC Device(Relevant for Z370+) diff --git a/clover-conversion/clover-efi.md b/clover-conversion/clover-efi.md index 22f04f125b..ddad5ef060 100644 --- a/clover-conversion/clover-efi.md +++ b/clover-conversion/clover-efi.md @@ -8,7 +8,7 @@ Main thing to note is that you must specify your kexts and firmware drivers in y * ApfsDriverLoader.efi * OpenRuntime.efi -* HFSPlus.efi +* HfsPlus.efi * VBoxHfs.efi * EnhancedFatDxe.efi * OpenUsbKbDxe.efi diff --git a/config-HEDT/broadwell-e.md b/config-HEDT/broadwell-e.md index 480f176e81..3c40ea4782 100644 --- a/config-HEDT/broadwell-e.md +++ b/config-HEDT/broadwell-e.md @@ -45,7 +45,7 @@ For us we'll need a couple of SSDTs to bring back functionality that Clover prov Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension\(Assembled\) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. **Block** @@ -105,6 +105,8 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **SetupVirtualMap**: YES @@ -219,7 +221,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w **Debug**: Helpful for debuggin OpenCore boot issues(We'll be chnging everything *but* `DisplayDelay`) -* **DisableWatchDog**: YES \(May need to be set for YES if OpenCore is stalling on something while booting, can also help for early macOS boot issues\) +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues * **Target**: `67` * Shows more debug information, requires debug version of OpenCore * **DisplayLevel**: `2147483714` @@ -268,7 +273,7 @@ Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidant * **UIScale**: * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`\) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) * **DefaultBackgroundColor**: Background color used by boot.efi * `00000000`: Syrah Black @@ -293,9 +298,9 @@ csr-active-config is set to `00000000` which enables System Integrity Protection Recommended to leave enabled for best security practices -* **nvda\_drv**: <> +* **nvda\_drv**: <> * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> +* **prev-lang:kbd**: <> * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): * American: `en-US:0`(`656e2d55533a30` in HEX) * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) @@ -339,15 +344,15 @@ Serial: C02YX0TZHX87 Board Serial: C029269024NJG36CB SmUUID: DEA17B2D-2F9F-4955-B266-A74C47678AD3 ``` -The `Type` part gets copied to Generic -> SystemProductName. +The `Type` part gets copied to Generic -> SystemProductName. -The `Serial` part gets copied to Generic -> SystemSerialNumber. +The `Serial` part gets copied to Generic -> SystemSerialNumber. -The `Board Serial` part gets copied to Generic -> MLB. +The `Board Serial` part gets copied to Generic -> MLB. -The `SmUUID` part gets copied toto Generic -> SystemUUID. +The `SmUUID` part gets copied toto Generic -> SystemUUID. -We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) **Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** @@ -392,7 +397,7 @@ We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your Only drivers present here should be: -* HFSPlus.efi +* HfsPlus.efi * ApfsDriverLoader.efi * OpenRuntime.efi @@ -417,6 +422,8 @@ Only drivers present here should be: **Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards * **KeyForgetThreshold**: `5` * The delay between each key input when holding a key down, for best results use `5` milliseconds * **KeyMergeThreshold**: `2` @@ -473,7 +480,7 @@ Only drivers present here should be: * **ExitBootServicesDelay**: `0` * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 * **IgnoreInvalidFlexRatio**: YES - * Fix for when MSR\_FLEX\_RATIO \(0x194\) can't be disabled in the BIOS, required for all pre-skylake based systems + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems * **ReleaseUsbOwnership**: NO * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` * **RequestBootVarFallback**: YES @@ -503,12 +510,12 @@ So thanks to the efforts of Ramus, we also have an amazing tool to help verify y **Disable:** * Fast Boot -* VT-d\(can be enabled if you set `DisableIoMapper` to YES\) +* VT-d(can be enabled if you set `DisableIoMapper` to YES) * CSM * Thunderbolt * Intel SGX * Intel Platform Trust -* CFG Lock\(MSR 0xE2 write protection\)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) **Enable:** diff --git a/config-HEDT/haswell-e.md b/config-HEDT/haswell-e.md index 63ff3e9dbd..6819700fc4 100644 --- a/config-HEDT/haswell-e.md +++ b/config-HEDT/haswell-e.md @@ -45,7 +45,7 @@ For us we'll need a couple of SSDTs to bring back functionality that Clover prov Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension\(Assembled\) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. **Block** @@ -105,6 +105,8 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **SetupVirtualMap**: YES @@ -219,7 +221,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w **Debug**: Helpful for debuggin OpenCore boot issues(We'll be chnging everything *but* `DisplayDelay`) -* **DisableWatchDog**: YES \(May need to be set for YES if OpenCore is stalling on something while booting, can also help for early macOS boot issues\) +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues * **Target**: `67` * Shows more debug information, requires debug version of OpenCore * **DisplayLevel**: `2147483714` @@ -268,7 +273,7 @@ Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidant * **UIScale**: * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`\) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) * **DefaultBackgroundColor**: Background color used by boot.efi * `00000000`: Syrah Black @@ -293,9 +298,9 @@ csr-active-config is set to `00000000` which enables System Integrity Protection Recommended to leave enabled for best security practices -* **nvda\_drv**: <> +* **nvda\_drv**: <> * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> +* **prev-lang:kbd**: <> * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): * American: `en-US:0`(`656e2d55533a30` in HEX) * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) @@ -339,15 +344,15 @@ Serial: C02YX0TZHX87 Board Serial: C029269024NJG36CB SmUUID: DEA17B2D-2F9F-4955-B266-A74C47678AD3 ``` -The `Type` part gets copied to Generic -> SystemProductName. +The `Type` part gets copied to Generic -> SystemProductName. -The `Serial` part gets copied to Generic -> SystemSerialNumber. +The `Serial` part gets copied to Generic -> SystemSerialNumber. -The `Board Serial` part gets copied to Generic -> MLB. +The `Board Serial` part gets copied to Generic -> MLB. -The `SmUUID` part gets copied toto Generic -> SystemUUID. +The `SmUUID` part gets copied toto Generic -> SystemUUID. -We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) **Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** @@ -392,7 +397,7 @@ We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your Only drivers present here should be: -* HFSPlus.efi +* HfsPlus.efi * ApfsDriverLoader.efi * OpenRuntime.efi @@ -417,6 +422,8 @@ Only drivers present here should be: **Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards * **KeyForgetThreshold**: `5` * The delay between each key input when holding a key down, for best results use `5` milliseconds * **KeyMergeThreshold**: `2` @@ -473,7 +480,7 @@ Only drivers present here should be: * **ExitBootServicesDelay**: `0` * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 * **IgnoreInvalidFlexRatio**: YES - * Fix for when MSR\_FLEX\_RATIO \(0x194\) can't be disabled in the BIOS, required for all pre-skylake based systems + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems * **ReleaseUsbOwnership**: NO * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` * **RequestBootVarFallback**: YES @@ -503,12 +510,12 @@ So thanks to the efforts of Ramus, we also have an amazing tool to help verify y **Disable:** * Fast Boot -* VT-d\(can be enabled if you set `DisableIoMapper` to YES\) +* VT-d(can be enabled if you set `DisableIoMapper` to YES) * CSM * Thunderbolt * Intel SGX * Intel Platform Trust -* CFG Lock\(MSR 0xE2 write protection\)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) **Enable:** diff --git a/config-HEDT/skylake-x.md b/config-HEDT/skylake-x.md index 76acc3ac3d..5556f2b5c9 100644 --- a/config-HEDT/skylake-x.md +++ b/config-HEDT/skylake-x.md @@ -46,7 +46,7 @@ For us we'll need a couple of SSDTs to bring back functionality that Clover prov Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension\(Assembled\) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. **Block** @@ -106,6 +106,8 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **SetupVirtualMap**: YES @@ -216,7 +218,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w **Debug**: Helpful for debuggin OpenCore boot issues(We'll be chnging everything *but* `DisplayDelay`) -* **DisableWatchDog**: YES \(May need to be set for YES if OpenCore is stalling on something while booting, can also help for early macOS boot issues\) +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues * **Target**: `67` * Shows more debug information, requires debug version of OpenCore * **DisplayLevel**: `2147483714` @@ -265,7 +270,7 @@ Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidant * **UIScale**: * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`\) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) * **DefaultBackgroundColor**: Background color used by boot.efi * `00000000`: Syrah Black @@ -290,9 +295,9 @@ csr-active-config is set to `00000000` which enables System Integrity Protection Recommended to leave enabled for best security practices -* **nvda\_drv**: <> +* **nvda\_drv**: <> * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> +* **prev-lang:kbd**: <> * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): * American: `en-US:0`(`656e2d55533a30` in HEX) * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) @@ -336,15 +341,15 @@ Serial: C02YX0TZHX87 Board Serial: C029269024NJG36CB SmUUID: DEA17B2D-2F9F-4955-B266-A74C47678AD3 ``` -The `Type` part gets copied to Generic -> SystemProductName. +The `Type` part gets copied to Generic -> SystemProductName. -The `Serial` part gets copied to Generic -> SystemSerialNumber. +The `Serial` part gets copied to Generic -> SystemSerialNumber. -The `Board Serial` part gets copied to Generic -> MLB. +The `Board Serial` part gets copied to Generic -> MLB. -The `SmUUID` part gets copied toto Generic -> SystemUUID. +The `SmUUID` part gets copied toto Generic -> SystemUUID. -We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) **Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** @@ -389,7 +394,7 @@ We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your Only drivers present here should be: -* HFSPlus.efi +* HfsPlus.efi * ApfsDriverLoader.efi * OpenRuntime.efi @@ -414,6 +419,8 @@ Only drivers present here should be: **Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards * **KeyForgetThreshold**: `5` * The delay between each key input when holding a key down, for best results use `5` milliseconds * **KeyMergeThreshold**: `2` @@ -470,7 +477,7 @@ Only drivers present here should be: * **ExitBootServicesDelay**: `0` * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 * **IgnoreInvalidFlexRatio**: NO - * Fix for when MSR\_FLEX\_RATIO \(0x194\) can't be disabled in the BIOS, required for all pre-skylake based systems + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems * **ReleaseUsbOwnership**: NO * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` * **RequestBootVarFallback**: YES @@ -500,12 +507,12 @@ So thanks to the efforts of Ramus, we also have an amazing tool to help verify y **Disable:** * Fast Boot -* VT-d\(can be enabled if you set `DisableIoMapper` to YES\) +* VT-d(can be enabled if you set `DisableIoMapper` to YES) * CSM * Thunderbolt * Intel SGX * Intel Platform Trust -* CFG Lock\(MSR 0xE2 write protection\)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) **Enable:** * VT-x diff --git a/config.plist/coffee-lake.md b/config.plist/coffee-lake.md index a16b7d7fec..d7812d5a02 100644 --- a/config.plist/coffee-lake.md +++ b/config.plist/coffee-lake.md @@ -49,7 +49,7 @@ For us we'll need a couple of SSDTs to bring back functionality that Clover prov Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension\(Assembled\) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. **Block** @@ -109,6 +109,8 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **SetupVirtualMap**: YES @@ -135,7 +137,7 @@ The two ig-platform-id's we use are as follows: * `0x3E920003` - this is used when the iGPU is only used for computing tasks and doesn't drive a display * `0300923E` when hex-swapped -Worth noting that for 10.12 -> 10.13.5, you would need to fake the iGPU to the same values in the Kaby Lake guide, as this was before native Coffee Lake iGPU showed up. 10.13.6 natively supports Coffee Lake +Worth noting that for 10.12 -> 10.13.5, you would need to fake the iGPU to the same values in the Kaby Lake guide, as this was before native Coffee Lake iGPU showed up. 10.13.6 natively supports Coffee Lake We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. @@ -149,7 +151,7 @@ For users with black screen issues after verbose on B360, B365, H310, H370, Z390 (This is an example for an UHD 630 without a dGPU and no BIOS options for iGPU memory) -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` * Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). @@ -252,7 +254,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w **Debug**: Helpful for debuggin OpenCore boot issues(We'll be chnging everything *but* `DisplayDelay`) -* **DisableWatchDog**: YES \(May need to be set for YES if OpenCore is stalling on something while booting, can also help for early macOS boot issues\) +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues * **Target**: `67` * Shows more debug information, requires debug version of OpenCore * **DisplayLevel**: `2147483714` @@ -301,7 +306,7 @@ Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidant * **UIScale**: * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`\) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) * **DefaultBackgroundColor**: Background color used by boot.efi * `00000000`: Syrah Black @@ -326,9 +331,9 @@ csr-active-config is set to `00000000` which enables System Integrity Protection Recommended to leave enabled for best security practices -* **nvda\_drv**: <> +* **nvda\_drv**: <> * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> +* **prev-lang:kbd**: <> * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): * American: `en-US:0`(`656e2d55533a30` in HEX) * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) @@ -376,15 +381,15 @@ Serial: C02XG0FDH7JY Board Serial: C02839303QXH69FJA SmUUID: DBB364D6-44B2-4A02-B922-AB4396F16DA8 ``` -The `Type` part gets copied to Generic -> SystemProductName. +The `Type` part gets copied to Generic -> SystemProductName. -The `Serial` part gets copied to Generic -> SystemSerialNumber. +The `Serial` part gets copied to Generic -> SystemSerialNumber. -The `Board Serial` part gets copied to Generic -> MLB. +The `Board Serial` part gets copied to Generic -> MLB. -The `SmUUID` part gets copied toto Generic -> SystemUUID. +The `SmUUID` part gets copied toto Generic -> SystemUUID. -We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) **Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** @@ -429,7 +434,7 @@ We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your Only drivers present here should be: -* HFSPlus.efi +* HfsPlus.efi * ApfsDriverLoader.efi * OpenRuntime.efi @@ -454,6 +459,8 @@ Only drivers present here should be: **Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards * **KeyForgetThreshold**: `5` * The delay between each key input when holding a key down, for best results use `5` milliseconds * **KeyMergeThreshold**: `2` @@ -510,7 +517,7 @@ Only drivers present here should be: * **ExitBootServicesDelay**: `0` * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 * **IgnoreInvalidFlexRatio**: NO - * Fix for when MSR\_FLEX\_RATIO \(0x194\) can't be disabled in the BIOS, required for all pre-skylake based systems + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems * **ReleaseUsbOwnership**: NO * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` * **RequestBootVarFallback**: YES @@ -540,12 +547,12 @@ So thanks to the efforts of Ramus, we also have an amazing tool to help verify y **Disable:** * Fast Boot -* VT-d\(can be enabled if you set `DisableIoMapper` to YES\) +* VT-d(can be enabled if you set `DisableIoMapper` to YES) * CSM * Thunderbolt * Intel SGX * Intel Platform Trust -* CFG Lock\(MSR 0xE2 write protection\)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) **Enable:** diff --git a/config.plist/haswell.md b/config.plist/haswell.md index be07bc98e1..d9d6d79429 100644 --- a/config.plist/haswell.md +++ b/config.plist/haswell.md @@ -47,7 +47,7 @@ For us we'll need a couple of SSDTs to bring back functionality that Clover prov Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension\(Assembled\) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. **Block** @@ -107,6 +107,8 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **SetupVirtualMap**: YES @@ -152,7 +154,7 @@ We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stole (This is an example for an HD 4400 without a dGPU and no BIOS options for iGPU memory) -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` * Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). @@ -255,7 +257,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w **Debug**: Helpful for debuggin OpenCore boot issues(We'll be chnging everything *but* `DisplayDelay`) -* **DisableWatchDog**: YES \(May need to be set for YES if OpenCore is stalling on something while booting, can also help for early macOS boot issues\) +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues * **Target**: `67` * Shows more debug information, requires debug version of OpenCore * **DisplayLevel**: `2147483714` @@ -304,7 +309,7 @@ Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidant * **UIScale**: * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`\) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) * **DefaultBackgroundColor**: Background color used by boot.efi * `00000000`: Syrah Black @@ -329,9 +334,9 @@ csr-active-config is set to `00000000` which enables System Integrity Protection Recommended to leave enabled for best security practices -* **nvda\_drv**: <> +* **nvda\_drv**: <> * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> +* **prev-lang:kbd**: <> * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): * American: `en-US:0`(`656e2d55533a30` in HEX) * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) @@ -382,15 +387,15 @@ Serial: C02M9SYJFY10 Board Serial: C02408101J9G2Y7A8 SmUUID: 7B227BEC-660D-405F-8E60-411B3E4EF055 ``` -The `Type` part gets copied to Generic -> SystemProductName. +The `Type` part gets copied to Generic -> SystemProductName. -The `Serial` part gets copied to Generic -> SystemSerialNumber. +The `Serial` part gets copied to Generic -> SystemSerialNumber. -The `Board Serial` part gets copied to Generic -> MLB. +The `Board Serial` part gets copied to Generic -> MLB. -The `SmUUID` part gets copied toto Generic -> SystemUUID. +The `SmUUID` part gets copied toto Generic -> SystemUUID. -We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) **Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** @@ -435,7 +440,7 @@ We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your Only drivers present here should be: -* HFSPlus.efi +* HfsPlus.efi * ApfsDriverLoader.efi * OpenRuntime.efi @@ -460,6 +465,8 @@ Only drivers present here should be: **Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards * **KeyForgetThreshold**: `5` * The delay between each key input when holding a key down, for best results use `5` milliseconds * **KeyMergeThreshold**: `2` @@ -516,7 +523,7 @@ Only drivers present here should be: * **ExitBootServicesDelay**: `0` * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 * **IgnoreInvalidFlexRatio**: YES - * Fix for when MSR\_FLEX\_RATIO \(0x194\) can't be disabled in the BIOS, required for all pre-skylake based systems + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems * **ReleaseUsbOwnership**: NO * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` * **RequestBootVarFallback**: YES @@ -546,12 +553,12 @@ So thanks to the efforts of Ramus, we also have an amazing tool to help verify y **Disable:** * Fast Boot -* VT-d\(can be enabled if you set `DisableIoMapper` to YES\) +* VT-d(can be enabled if you set `DisableIoMapper` to YES) * CSM * Thunderbolt * Intel SGX * Intel Platform Trust -* CFG Lock\(MSR 0xE2 write protection\)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) **Enable:** diff --git a/config.plist/ivy-bridge.md b/config.plist/ivy-bridge.md index fc79370a55..f197a9e3a1 100644 --- a/config.plist/ivy-bridge.md +++ b/config.plist/ivy-bridge.md @@ -47,7 +47,7 @@ For us we'll need a couple of SSDTs to bring back functionality that Clover prov Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension\(Assembled\) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. **Block** @@ -107,6 +107,8 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **SetupVirtualMap**: YES @@ -141,7 +143,7 @@ We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stole -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` * Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). @@ -244,7 +246,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w **Debug**: Helpful for debuggin OpenCore boot issues(We'll be chnging everything *but* `DisplayDelay`) -* **DisableWatchDog**: YES \(May need to be set for YES if OpenCore is stalling on something while booting, can also help for early macOS boot issues\) +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues * **Target**: `67` * Shows more debug information, requires debug version of OpenCore * **DisplayLevel**: `2147483714` @@ -293,7 +298,7 @@ Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidant * **UIScale**: * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`\) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) * **DefaultBackgroundColor**: Background color used by boot.efi * `00000000`: Syrah Black @@ -318,9 +323,9 @@ csr-active-config is set to `00000000` which enables System Integrity Protection Recommended to leave enabled for best security practices -* **nvda\_drv**: <> +* **nvda\_drv**: <> * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> +* **prev-lang:kbd**: <> * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): * American: `en-US:0`(`656e2d55533a30` in HEX) * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) @@ -364,15 +369,15 @@ Serial: C02KCYZLDNCW Board Serial: C02309301QXF2FRJC SmUUID: A154B586-874B-4E57-A1FF-9D6E503E4580 ``` -The `Type` part gets copied to Generic -> SystemProductName. +The `Type` part gets copied to Generic -> SystemProductName. -The `Serial` part gets copied to Generic -> SystemSerialNumber. +The `Serial` part gets copied to Generic -> SystemSerialNumber. -The `Board Serial` part gets copied to Generic -> MLB. +The `Board Serial` part gets copied to Generic -> MLB. -The `SmUUID` part gets copied toto Generic -> SystemUUID. +The `SmUUID` part gets copied toto Generic -> SystemUUID. -We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) **Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** @@ -417,7 +422,7 @@ We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your Only drivers present here should be: -* HFSPlus.efi +* HfsPlus.efi * ApfsDriverLoader.efi * OpenRuntime.efi @@ -442,6 +447,8 @@ Only drivers present here should be: **Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards * **KeyForgetThreshold**: `5` * The delay between each key input when holding a key down, for best results use `5` milliseconds * **KeyMergeThreshold**: `2` @@ -498,7 +505,7 @@ Only drivers present here should be: * **ExitBootServicesDelay**: `0` * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 * **IgnoreInvalidFlexRatio**: YES - * Fix for when MSR\_FLEX\_RATIO \(0x194\) can't be disabled in the BIOS, required for all pre-skylake based systems + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems * **ReleaseUsbOwnership**: NO * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` * **RequestBootVarFallback**: YES @@ -528,12 +535,12 @@ So thanks to the efforts of Ramus, we also have an amazing tool to help verify y **Disable:** * Fast Boot -* VT-d\(can be enabled if you set `DisableIoMapper` to YES\) +* VT-d(can be enabled if you set `DisableIoMapper` to YES) * CSM * Thunderbolt * Intel SGX * Intel Platform Trust -* CFG Lock\(MSR 0xE2 write protection\)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) **Enable:** diff --git a/config.plist/kaby-lake.md b/config.plist/kaby-lake.md index 49ec529219..fe5d8c1ade 100644 --- a/config.plist/kaby-lake.md +++ b/config.plist/kaby-lake.md @@ -44,7 +44,7 @@ For us we'll need a couple of SSDTs to bring back functionality that Clover prov Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension\(Assembled\) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. **Block** @@ -104,6 +104,8 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **SetupVirtualMap**: YES @@ -140,7 +142,7 @@ We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stole (This is an example for an HD 630 without a dGPU and no BIOS options for iGPU memory) -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` * Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). @@ -243,7 +245,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w **Debug**: Helpful for debuggin OpenCore boot issues(We'll be chnging everything *but* `DisplayDelay`) -* **DisableWatchDog**: YES \(May need to be set for YES if OpenCore is stalling on something while booting, can also help for early macOS boot issues\) +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues * **Target**: `67` * Shows more debug information, requires debug version of OpenCore * **DisplayLevel**: `2147483714` @@ -292,7 +297,7 @@ Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidant * **UIScale**: * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`\) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) * **DefaultBackgroundColor**: Background color used by boot.efi * `00000000`: Syrah Black @@ -317,9 +322,9 @@ csr-active-config is set to `00000000` which enables System Integrity Protection Recommended to leave enabled for best security practices -* **nvda\_drv**: <> +* **nvda\_drv**: <> * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> +* **prev-lang:kbd**: <> * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): * American: `en-US:0`(`656e2d55533a30` in HEX) * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) @@ -367,15 +372,15 @@ Serial: C02Z2CZ5H7JY Board Serial: C02928701GUH69FFB SmUUID: AA043F8D-33B6-4A1A-94F7-46972AAD0607 ``` -The `Type` part gets copied to Generic -> SystemProductName. +The `Type` part gets copied to Generic -> SystemProductName. -The `Serial` part gets copied to Generic -> SystemSerialNumber. +The `Serial` part gets copied to Generic -> SystemSerialNumber. -The `Board Serial` part gets copied to Generic -> MLB. +The `Board Serial` part gets copied to Generic -> MLB. -The `SmUUID` part gets copied toto Generic -> SystemUUID. +The `SmUUID` part gets copied toto Generic -> SystemUUID. -We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) **Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** @@ -420,7 +425,7 @@ We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your Only drivers present here should be: -* HFSPlus.efi +* HfsPlus.efi * ApfsDriverLoader.efi * OpenRuntime.efi @@ -445,6 +450,8 @@ Only drivers present here should be: **Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards * **KeyForgetThreshold**: `5` * The delay between each key input when holding a key down, for best results use `5` milliseconds * **KeyMergeThreshold**: `2` @@ -501,7 +508,7 @@ Only drivers present here should be: * **ExitBootServicesDelay**: `0` * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 * **IgnoreInvalidFlexRatio**: NO - * Fix for when MSR\_FLEX\_RATIO \(0x194\) can't be disabled in the BIOS, required for all pre-skylake based systems + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems * **ReleaseUsbOwnership**: NO * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` * **RequestBootVarFallback**: YES @@ -531,12 +538,12 @@ So thanks to the efforts of Ramus, we also have an amazing tool to help verify y **Disable:** * Fast Boot -* VT-d\(can be enabled if you set `DisableIoMapper` to YES\) +* VT-d(can be enabled if you set `DisableIoMapper` to YES) * CSM * Thunderbolt * Intel SGX * Intel Platform Trust -* CFG Lock\(MSR 0xE2 write protection\)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) **Enable:** diff --git a/config.plist/skylake.md b/config.plist/skylake.md index d296a3d896..8d6a27f83b 100644 --- a/config.plist/skylake.md +++ b/config.plist/skylake.md @@ -44,7 +44,7 @@ For us we'll need a couple of SSDTs to bring back functionality that Clover prov Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension\(Assembled\) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. **Block** @@ -104,6 +104,8 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **SetupVirtualMap**: YES @@ -140,7 +142,7 @@ We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stole (This is an example for an HD 530 without a dGPU and no BIOS options for iGPU memory) -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` * Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). @@ -243,7 +245,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w **Debug**: Helpful for debuggin OpenCore boot issues(We'll be chnging everything *but* `DisplayDelay`) -* **DisableWatchDog**: YES \(May need to be set for YES if OpenCore is stalling on something while booting, can also help for early macOS boot issues\) +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues * **Target**: `67` * Shows more debug information, requires debug version of OpenCore * **DisplayLevel**: `2147483714` @@ -292,7 +297,7 @@ Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidant * **UIScale**: * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`\) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) * **DefaultBackgroundColor**: Background color used by boot.efi * `00000000`: Syrah Black @@ -317,9 +322,9 @@ csr-active-config is set to `00000000` which enables System Integrity Protection Recommended to leave enabled for best security practices -* **nvda\_drv**: <> +* **nvda\_drv**: <> * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> +* **prev-lang:kbd**: <> * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): * American: `en-US:0`(`656e2d55533a30` in HEX) * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) @@ -363,15 +368,15 @@ Serial: C02S3HYWGG7L Board Serial: C02629102GUGPF7AD SmUUID: 3508AD44-B67D-4AD7-A109-7955130A1033 ``` -The `Type` part gets copied to Generic -> SystemProductName. +The `Type` part gets copied to Generic -> SystemProductName. -The `Serial` part gets copied to Generic -> SystemSerialNumber. +The `Serial` part gets copied to Generic -> SystemSerialNumber. -The `Board Serial` part gets copied to Generic -> MLB. +The `Board Serial` part gets copied to Generic -> MLB. -The `SmUUID` part gets copied toto Generic -> SystemUUID. +The `SmUUID` part gets copied toto Generic -> SystemUUID. -We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) **Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** @@ -416,7 +421,7 @@ We set Generic -> ROM to either an Apple ROM \(dumped from a real Mac\), your Only drivers present here should be: -* HFSPlus.efi +* HfsPlus.efi * ApfsDriverLoader.efi * OpenRuntime.efi @@ -441,6 +446,8 @@ Only drivers present here should be: **Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards * **KeyForgetThreshold**: `5` * The delay between each key input when holding a key down, for best results use `5` milliseconds * **KeyMergeThreshold**: `2` @@ -497,7 +504,7 @@ Only drivers present here should be: * **ExitBootServicesDelay**: `0` * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 * **IgnoreInvalidFlexRatio**: NO - * Fix for when MSR\_FLEX\_RATIO \(0x194\) can't be disabled in the BIOS, required for all pre-skylake based systems + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems * **ReleaseUsbOwnership**: NO * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` * **RequestBootVarFallback**: YES @@ -527,12 +534,12 @@ So thanks to the efforts of Ramus, we also have an amazing tool to help verify y **Disable:** * Fast Boot -* VT-d\(can be enabled if you set `DisableIoMapper` to YES\) +* VT-d(can be enabled if you set `DisableIoMapper` to YES) * CSM * Thunderbolt * Intel SGX * Intel Platform Trust -* CFG Lock\(MSR 0xE2 write protection\)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) **Enable:** diff --git a/extras/kalsr-fix.md b/extras/kalsr-fix.md index 361cfb921a..cb86c327cf 100644 --- a/extras/kalsr-fix.md +++ b/extras/kalsr-fix.md @@ -46,7 +46,7 @@ The real fix to this is quite simple actually, the process is both the same for * Clover Shell(most users already have this included, usually called shell64.efi or some variation) * OpenCore users: * [OpenRuntime](https://github.com/acidanthera/OpenCorePkg/releases) - * [OpenCorePkg](https://github.com/acidanthera/OpenCorePkg/releases)(Don't forget to enable this under `Root->Misc->Tools`) + * [OpenShell](https://github.com/acidanthera/OpenCorePkg/releases)(Don't forget to enable this under `Root->Misc->Tools`) * Config.plist settings: * AvoidRuntimeDefrag: `YES` * Fixes UEFI runtime services like date, time, NVRAM, etc @@ -56,6 +56,8 @@ The real fix to this is quite simple actually, the process is both the same for * Allows us to use slide in safe mode, just so if you have other issues troubleshooting won't mess it up. * EnableWriteUnprotector: `YES` * Allows us to write to certain areas that the firmware locks, specifically the CR0 register. + * ProtectUefiServices: `YES` + * This is extremly important to enable on Icelake and Coffeelake machines, otherwise DevirtualiseMmio will not work due to memory protetions in place * ProvideCustomSlide: `YES` * Kinda need that slide to do any real work. * SetupVirtualMap: `YES` @@ -120,7 +122,7 @@ Whenever the returned value is **not** the original(`0x6B500000` vs `0x6B626000` > But wait for just a second, this is higher than 256! -That is correct, this is caused by memory maps that include `Above4GDecoding` sectors which cannot be used. So you will need to keep going down the list until you find a small enough value(for us that would be `0000000000100000`) +That is correct, this is caused by memory maps that include `Above4GDecoding` sectors which cannot be used. So you will need to keep going down the list until you find a small enough value(for us that would be `0000000000100000`). And just to make it a bit clearer on the formula: @@ -149,5 +151,5 @@ Directory of fs0:\ fs0:\> memmap > memmap.txt ``` -This will add a `memmap.txt` file to the root of your EFI, you can then proceed to drop it into the r/Hackintosh discord and type `$slide [insert a link to memmap.txt]`. Do note that this doesn't always work so so may still need to do this manually. +This will add a `memmap.txt` file to the root of your EFI, you can then proceed to drop it into the r/Hackintosh discord in the #Sandbox channel and type `$slide [insert a link to memmap.txt]` diff --git a/post-install/nvram.md b/post-install/nvram.md index e334d19be0..fd13ddf743 100644 --- a/post-install/nvram.md +++ b/post-install/nvram.md @@ -57,7 +57,7 @@ Within your config.plist: * **Booter**: * `DisableVariableWrite`: set to `YES` -* **Misc -> Security**: +* **Misc -> Security**: * `ExposeSensitiveData`: set to `0x3` * **NVRAM**: * `LegacyEnable`: set to `YES` diff --git a/post-install/security.md b/post-install/security.md index 9ab8d6ee6a..ce15ea107a 100644 --- a/post-install/security.md +++ b/post-install/security.md @@ -21,21 +21,21 @@ To start, you'll need the following .efi drivers: Setting in your config.plist: -* Misc -> Boot - * `PollAppleHotKeys` set to YES(While not needed can be helpfu\) -* Misc -> Security +* Misc -> Boot + * `PollAppleHotKeys` set to YES(While not needed can be helpfu) +* Misc -> Security * `AuthRestart` set to YES(Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional) -* NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 +* NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 * `UIScale` set to `02` for high resolution small displays -* UEFI -> Input +* UEFI -> Input * `KeySupport` set to YES(Only when using OpenCore's builtin input, users of OpenUsbKbDxe should avoid) * UEFI -> Output * `ProvideConsoleGOP` to YES -* UEFI -> Protocols +* UEFI -> Protocols * `FirmwareVolume` set to YES * `HashServices` set to YES for Haswell and older(this includes X99), this is needed for systems with broken SHA-1 hashing * `AppleSmcIo` set to YES(this replaces VirtualSMC.efi) -* UEFI -> Quirks +* UEFI -> Quirks * `RequestBootVarRouting` set to YES * `ExitBootServicesDelay` set to `3000`-`5000` if you recieve `Still waiting for root device` on Aptio IV firmwares(Broadwell and older) diff --git a/post-install/spoof.md b/post-install/spoof.md index 93eb92e899..de6564af97 100644 --- a/post-install/spoof.md +++ b/post-install/spoof.md @@ -102,7 +102,7 @@ Example of device path: } -A copy of this SSDT can be found here: [Spoof-SSDT.dsl](https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extra-files/Spoof-SSDT.dsl) You will need [MaciASL](https://github.com/acidanthera/MaciASL/releases) to compile this, reminder that .aml is assembled and .dsl is source code. You can compile with MaciASL by running File -> Save As -> ACPI Machine Language. +A copy of this SSDT can be found here: [Spoof-SSDT.dsl](https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extra-files/Spoof-SSDT.dsl) You will need [MaciASL](https://github.com/acidanthera/MaciASL/releases) to compile this, reminder that .aml is assembled and .dsl is source code. You can compile with MaciASL by running File -> Save As -> ACPI Machine Language. Source: CorpNewt diff --git a/troubleshooting/debug.md b/troubleshooting/debug.md index f1b2c8b113..ba91136dd7 100644 --- a/troubleshooting/debug.md +++ b/troubleshooting/debug.md @@ -27,7 +27,7 @@ To calculate the target, we can use a HEX calculator and then convert it to deci `0x53` converted to decimal becomes `83` -So we can set `Misc` -> `Debug` -> `Target` -> `83` +So we can set `Misc` -> `Debug` -> `Target` -> `83` **DisplayLevel** @@ -48,7 +48,7 @@ For us we just want the following: Just like with `Target`, we use a HEX calculator then convert to decimal: -`0x80000042` Converted to decimal `Misc` -> `Debug` -> `DisplayLevel` -> `2147483714` +`0x80000042` Converted to decimal `Misc` -> `Debug` -> `DisplayLevel` -> `2147483714` **DisableWatchdog**: YES Disables the UEFI watchdog, used for when OpenCore is stalling on something non-critical. diff --git a/troubleshooting/troubleshooting.md b/troubleshooting/troubleshooting.md index cd1ba7af89..d0511ae998 100644 --- a/troubleshooting/troubleshooting.md +++ b/troubleshooting/troubleshooting.md @@ -72,7 +72,7 @@ Another other possible problem is IRQ conflicts, Clover has plenty of different Main things to check: * ScanPolicy set to `0` to show all drives -* Have the proper firmware drivers such as ApfsDriverLoader and HFSPlus(or VBoxHfs) +* Have the proper firmware drivers such as ApfsDriverLoader and HfsPlus(or VBoxHfs) * Enable `AvoidHighAlloc` if you're running a network recovery install ## Black screen after picker @@ -107,7 +107,7 @@ Same fix as `OCB: OcScanForBootEntries failure - Not Found`, OpenCore is unable ## Stuck on `OCABC: Memory pool allocation failure - Not Found` -This is due to either incorrect BIOS settings and/or incorrect Booter values. Make sure config.plist -> Booter -> Quirks is correct and verify your BIOS settings: +This is due to either incorrect BIOS settings and/or incorrect Booter values. Make sure config.plist -> Booter -> Quirks is correct and verify your BIOS settings: * Above4GDecoding is Enabled * CSM is Disabled(Enabling Windows8.1/10 WHQL Mode can do the same on some boards) @@ -118,7 +118,7 @@ This is due to either using a Clover config with OpenCore or using a configurato ## Stuck on `OC: Driver XXX.efi at 0 cannot be found` -Verify that your EFI/OC/Drivers matches up with your config.plist -> UEFi -> Drivers +Verify that your EFI/OC/Drivers matches up with your config.plist -> UEFi -> Drivers ## Stuck on `Buffer Too Small` @@ -159,14 +159,14 @@ Missing or incorrect `Executable path` * AMD kernel patches aren't working(AMD Users only): * Either outdated or missing kernel patches * Incompatible keyboard driver: - * Disable `PollAppleHotKeys` and enable `KeySupport`, then remove [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) from your config.plist -> UEFI -> Drivers - * If the above doesn't work, reverse: disable `KeySupport`, then add [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) to your config.plist -> UEFI -> Drivers + * Disable `PollAppleHotKeys` and enable `KeySupport`, then remove [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) from your config.plist -> UEFI -> Drivers + * If the above doesn't work, reverse: disable `KeySupport`, then add [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) to your config.plist -> UEFI -> Drivers ## Can't select anything in the picker * Incompatible keyboard driver: - * Disable `PollAppleHotKeys` and enable `KeySupport`, then remove [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) from your config.plist -> UEFI -> Drivers - * If the above doesn't work, reverse: disable `KeySupport`, then add [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) to your config.plist -> UEFI -> Drivers + * Disable `PollAppleHotKeys` and enable `KeySupport`, then remove [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) from your config.plist -> UEFI -> Drivers + * If the above doesn't work, reverse: disable `KeySupport`, then add [OpenUsbKbDxe](https://github.com/acidanthera/OpenCorePkg/releases) to your config.plist -> UEFI -> Drivers ## Stuck on `This version of Mac OS X is not supported: Reason Mac...` From d2e9d5ffa55972d692a6060cb8b90f90b6f95bf0 Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com> Date: Tue, 17 Mar 2020 12:59:30 -0600 Subject: [PATCH 3/8] Update coffee-lake.md --- config.plist/coffee-lake.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/config.plist/coffee-lake.md b/config.plist/coffee-lake.md index d7812d5a02..0519a76795 100644 --- a/config.plist/coffee-lake.md +++ b/config.plist/coffee-lake.md @@ -92,7 +92,7 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * **AvoidRuntimeDefrag**: YES * Fixes UEFI runtime services like date, time, NVRAM, power control, etc * **DevirtualiseMmio**: YES - * Reduces Stolen Memory Footprint, expands options for `slide=N` values and very helpful with fixing Memory Allocation issues on Z390 + * Reduces Stolen Memory Footprint, expands options for `slide=N` values and very helpful with fixing Memory Allocation issues on Z390. Requires `ProtectUefiServices` as well on IceLake and Z390 Coffeelake * **DisableSingleUser**: NO * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines * **DisableVariableWrite**: NO @@ -110,7 +110,8 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares * **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and Z390 systems' + * If on Z390, **enable this quirk** * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **SetupVirtualMap**: YES From bea2889b0bfa0bc4e6a5c1ca2ba9980461e6a112 Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com> Date: Thu, 26 Mar 2020 14:38:06 -0600 Subject: [PATCH 4/8] Inital commit for laptop --- AMD/AMD-USB-map.md | 3 +- AMD/AMD-config.md | 3 +- AMD/NullCPU-patch.md | 3 +- README.md | 4 +- clover-conversion/Clover-boot-arg.md | 3 +- clover-conversion/Clover-config.md | 3 +- clover-conversion/README.md | 3 +- clover-conversion/clover-efi.md | 3 +- config-HEDT/broadwell-e.md | 3 +- config-HEDT/haswell-e.md | 3 +- config-HEDT/skylake-x.md | 3 +- config-laptop.plist/broadwell.md | 614 +++++++++++++++++++++++ config-laptop.plist/coffee-lake-plus.md | 597 +++++++++++++++++++++++ config-laptop.plist/coffee-lake.md | 595 +++++++++++++++++++++++ config-laptop.plist/haswell.md | 615 ++++++++++++++++++++++++ config-laptop.plist/ivy-bridge.md | 589 +++++++++++++++++++++++ config-laptop.plist/kaby-lake.md | 588 ++++++++++++++++++++++ config-laptop.plist/skylake.md | 589 +++++++++++++++++++++++ config.plist/coffee-lake.md | 3 +- config.plist/haswell.md | 3 +- config.plist/ivy-bridge.md | 3 +- config.plist/kaby-lake.md | 3 +- config.plist/skylake.md | 3 +- extras/acpi.md | 3 +- extras/gpu-patches.md | 3 +- extras/hardware.md | 3 +- extras/kalsr-fix.md | 3 +- extras/legacy.md | 3 +- extras/msr-lock.md | 3 +- installer-guide/android-install.md | 3 +- installer-guide/linux-install.md | 3 +- installer-guide/mac-install.md | 3 +- installer-guide/opencore-efi.md | 3 +- installer-guide/winblows-install.md | 3 +- ktext.md | 3 +- misc/credit.md | 3 +- post-install/README.md | 3 +- post-install/audio.md | 3 +- post-install/iservices.md | 3 +- post-install/nvram.md | 3 +- post-install/oc2hdd.md | 3 +- post-install/security.md | 3 +- post-install/spoof.md | 3 +- post-install/update.md | 3 +- troubleshooting/debug.md | 3 +- troubleshooting/troubleshooting.md | 3 +- troubleshooting/verbose.md | 3 +- 47 files changed, 4228 insertions(+), 80 deletions(-) create mode 100644 config-laptop.plist/broadwell.md create mode 100644 config-laptop.plist/coffee-lake-plus.md create mode 100644 config-laptop.plist/coffee-lake.md create mode 100644 config-laptop.plist/haswell.md create mode 100644 config-laptop.plist/ivy-bridge.md create mode 100644 config-laptop.plist/kaby-lake.md create mode 100644 config-laptop.plist/skylake.md diff --git a/AMD/AMD-USB-map.md b/AMD/AMD-USB-map.md index b87fcb4004..625e7d0609 100644 --- a/AMD/AMD-USB-map.md +++ b/AMD/AMD-USB-map.md @@ -1,5 +1,4 @@ -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 With OpenCore I think it's about time we finally destroy some AMD myths, like how USB is just screwed on AMD and can't be mapped. Well, that is false! And I will show you the path of enlightenment. diff --git a/AMD/AMD-config.md b/AMD/AMD-config.md index ede85e8434..3477cb55b5 100644 --- a/AMD/AMD-config.md +++ b/AMD/AMD-config.md @@ -1,7 +1,6 @@ # AMD -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## Starting Point diff --git a/AMD/NullCPU-patch.md b/AMD/NullCPU-patch.md index 4497712cb0..1cea598d59 100644 --- a/AMD/NullCPU-patch.md +++ b/AMD/NullCPU-patch.md @@ -1,7 +1,6 @@ # Improve GPU power management and remove nullcpupowermanagement.kext -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 What you'll need: diff --git a/README.md b/README.md index c1ff8e09e9..9a58b4117e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Introduction -* Last edited: March 15, 2020 -* Supported version: 0.5.6 + +* Supported version: 0.5.7 * [GitHub Pages link with Darkmode support](https://khronokernel.github.io/Opencore-Vanilla-Desktop-Guide/) ### About diff --git a/clover-conversion/Clover-boot-arg.md b/clover-conversion/Clover-boot-arg.md index 01234f108f..3db798b7a8 100644 --- a/clover-conversion/Clover-boot-arg.md +++ b/clover-conversion/Clover-boot-arg.md @@ -1,7 +1,6 @@ # Clover Boot Arg Conversion -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 This section is mainly used for explaining what boot-args are no longer relevant, it's quite common for users to be still carrying legacy args which have little to no real affect in newer versions of macOS or have little use in OpenCore diff --git a/clover-conversion/Clover-config.md b/clover-conversion/Clover-config.md index f649287629..24fb8f2058 100644 --- a/clover-conversion/Clover-config.md +++ b/clover-conversion/Clover-config.md @@ -1,7 +1,6 @@ # Converting common properties from Clover to Opencore -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 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. diff --git a/clover-conversion/README.md b/clover-conversion/README.md index f32ec1d644..77671c0c75 100644 --- a/clover-conversion/README.md +++ b/clover-conversion/README.md @@ -1,7 +1,6 @@ # Converting from Clover to OpenCore -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 So you see the new fancy Opencore bootloader and just dying to try it out, well you've come to the right place! Many things in Clover have feature parity with Opencore but many do not, here we'll be going over what you can bring over and what you cannot. diff --git a/clover-conversion/clover-efi.md b/clover-conversion/clover-efi.md index aed3df795a..87c83373ff 100644 --- a/clover-conversion/clover-efi.md +++ b/clover-conversion/clover-efi.md @@ -1,7 +1,6 @@ # Clover Firmware driver conversion -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 Main thing to note is that you must specify your kexts and firmware drivers in your config.plist, or else they will not load. All kexts that are currently supported on Clover will work on Opencore, firmware drivers are a bit different. diff --git a/config-HEDT/broadwell-e.md b/config-HEDT/broadwell-e.md index df5e89b454..6a8b5f7921 100644 --- a/config-HEDT/broadwell-e.md +++ b/config-HEDT/broadwell-e.md @@ -1,7 +1,6 @@ # Broadwell-E -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## Starting Point diff --git a/config-HEDT/haswell-e.md b/config-HEDT/haswell-e.md index 3d332909ee..e7e569bd9a 100644 --- a/config-HEDT/haswell-e.md +++ b/config-HEDT/haswell-e.md @@ -1,7 +1,6 @@ # Haswell-E -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## Starting Point diff --git a/config-HEDT/skylake-x.md b/config-HEDT/skylake-x.md index d3bbc1ce11..9b33823b08 100644 --- a/config-HEDT/skylake-x.md +++ b/config-HEDT/skylake-x.md @@ -1,7 +1,6 @@ # Skylake-X -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## Starting Point diff --git a/config-laptop.plist/broadwell.md b/config-laptop.plist/broadwell.md new file mode 100644 index 0000000000..6b994bcb3d --- /dev/null +++ b/config-laptop.plist/broadwell.md @@ -0,0 +1,614 @@ +# Broadwell + +* Supported version: 0.5.7 + +## Starting Point + +So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: + +* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. +* **The Sample.plist cannot be used As-Is**, you must configure it to your system +* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! + +Now with all that, we'll need some things to get started: + +* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore +* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS +* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download + +Now with those downloaded, we can get to really get started: + +* Grab the **Sample.plist** and rename to **config.plist** +* Open your new config.plist in ProperTree + * macOS: `ProperTree.command` + * Windows: `ProperTree.bat` +* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), + * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config + * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting + +**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** + +## ACPI + +![ACPI](https://i.imgur.com/2T0ubhy.png) + + +**Add:** + +This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) + +For us we'll need a couple of SSDTs to bring back functionality that Clover provided: + +* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) + * Allows for native CPU power management, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType`. Do note that this SSDT is made for systems where `AppleACPICPU` attaches `CPU0`, though some ACPI tables have theirs starting at `PR00` so adjust accordingly. Seeing what device has AppleACPICPU connected first in [IORegistryExplorer](https://github.com/toleda/audio_ALCInjection/raw/master/IORegistryExplorer_v2.1.zip) can also give you a hint +* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) + * Adds brightness control support +* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) + * Used for enabling Windows features in macOS, mainly needed for I2C controllers +* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) + * Creates a stub so VoodooI2C can connect + +Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. + +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. + + +**Block** + +This blocks certain ACPI tabes from loading, for us we can ignore this + +**Patch**: + +This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: + +* EC Rename + * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches +* OSI rename + * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT + +| Comment | String | Change XXXX to EC | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | xxxxxxxx | +| Replace | Data | 45435f5f | + +| Comment | String | Change _OSI to XOSI | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | 5f4f5349 | +| Replace | Data | 584f5349 | + +**Quirk**: + +Settings relating to ACPI, leave everything here as default. + +* **FadtEnableReset**: NO + * Enable reboot and shutdown on legacy hardware, not recommended unless needed +* **NormalizeHeaders**: NO + * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 +* **RebaseRegions**: NO + * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. +* **ResetHwSig**: NO + * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation +* **ResetLogoStatus**: NO + * Workaround for OEM Windows logo not drawing on systems with BGRT tables. + +## Booter + +![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) + +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi + +**MmioWhitelist**: + +This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with `DevirtualiseMmio` + +**Quirks**: + +Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` + +* **AvoidRuntimeDefrag**: YES + * Fixes UEFI runtime services like date, time, NVRAM, power control, etc +* **DevirtualiseMmio**: NO + * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems +* **DisableSingleUser**: NO + * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines +* **DisableVariableWrite**: NO + * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works +* **DiscardHibernateMap**: NO + * Reuse original hibernate memory map, only needed for certain legacy hardware +* **EnableSafeModeSlide**: YES + * Allows for slide values to be used in Safemode +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution +* **ForceExitBootServices**: NO + * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary +* **ProtectCsmRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectSecureBoot**: NO + * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems +* **ProvideCustomSlide**: YES + * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **SetupVirtualMap**: YES + * Fixes SetVirtualAddresses calls to virtual addresses +* **ShrinkMemoryMap**: NO + * Needed for systems with large memory maps that don't fit, don't use unless necessary +* **SignalAppleOS**: NO + * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used + +## DeviceProperties + +![DeviceProperties](https://i.imgur.com/vgLIhOo.png) + +**Add**: Sets device properties from a map. + +This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. + +If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` + +The two ig-platform-id's we use are as follows: + +* `0x0D220003` - this is used when the Desktop Haswell iGPU is used to drive a display + * `0300220D` when hex-swapped +* `0x04120004` - this is used when the Desktop Haswell iGPU is only used for computing tasks and doesn't drive a display + * `04001204` when hex-swapped +* `0x0D220003` - this is used when the Desktop Broadwell iGPU + * `07002216` when hex-swapped + +I added another portion as well that shows a `device-id` fake in case you have an HD 4400 which is unsupported in macOS. + +The device-id fake is set up like so: + +* `0x04120000` - this is the device id for HD 4600 which does have support in macOS + * `12040000` when hex swapped + +We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. + +| Key | Type | Value | +| :--- | :--- | :--- | +| AAPL,ig-platform-id | Data | 0300220D | +| framebuffer-patch-enable | Data | 01000000 | +| framebuffer-stolenmem | Data | 00003001 | +| device-id | Data | 12040000 | + +(This is an example for a desktop HD 4400 without a dGPU and no BIOS options for iGPU memory) + +| Key | Type | Value | +| :--- | :--- | :--- | +| AAPL,ig-platform-id | Data | 07002216 | +| framebuffer-patch-enable | Data | 01000000 | +| framebuffer-stolenmem | Data | 00003001 | + +(This is an example for a desktop Iris Pro 6200 and no BIOS options for iGPU memory) + +**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) + +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` + +* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). + +For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present + +Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! + +**Block**: Removes device properties from the map, for us we can ignore this + +## Kernel + +![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) + +**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. + +* **BundlePath** + * Name of the kext + * ex: `Lilu.kext` +* **Enabled** + * Self-explanatory, either enables or disables the kext +* **ExecutablePath** + * 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. Do note that plist only kexts do not need this filled in. + * ex: `Contents/MacOS/Lilu` +* **PlistPath** + * Path to the `info.plist` hidden within the kext + * ex: `Contents/Info.plist` + +**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons + +* **CpuidMask**: Leave this blank +* **CpuidData**: Leave this blank + +**Block**: Blocks kexts from loading. Not relevant for us + +**Patch**: Patches both the kernel and kexts + +**Quirks**: + +Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default + +* **AppleCpuPmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmExtraMsrs**: NO + * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. +* **AppleXcpmForceBoost**: NO + * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this +* **CustomSMBIOSGuid**: NO + * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops +* **DisableIoMapper**: YES + * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina +* **DummyPowerManagement**: NO + * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore +* **ExternalDiskIcons**: NO + * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. +* **IncreasePciBarSize**: NO + * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this +* **LapicKernelPanic**: NO + * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` +* **PanicNoKextDump**: YES + * Allows for reading kernel panics logs when kernel panics occur +* **PowerTimeoutKernelPanic**: YES + * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. +* **ThirdPartyDrives**: NO + * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM +* **XhciPortLimit**: YES + * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. + +The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such + +## Misc + +![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) + +**Boot**: Settings for boot screen (Leave everything as default) +* **HibernateMode**: None + * Best to avoid hibernation with Hackintoshes all together +* **PickerMode**: `Builtin` + * Sets OpenCore to use the builtin picker +* **HideAuxiliary**: NO + * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour +* **HideSelf**: YES + * Hides the EFI partition as a boot option in OC's boot picker +* **PickerAttributes**: + * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAudioAssist**: NO + * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled +* **PollAppleHotKeys**: NO + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * `Cmd+V`: Enables verbose + * `Cmd+Opt+P+R`: Cleans NVRAM + * `Cmd+R`: Boots Recovery partition + * `Cmd+S`: Boot in Single-user mode + * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key +* **TakeoffDelay**: `0` + * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support +* **Timeout**: `5` + * This sets how long OpenCore will wait until it automatically boots from the default selection + +**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) + +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues +* **Target**: `67` + * Shows more debug information, requires debug version of OpenCore +* **DisplayLevel**: `2147483714` + * Shows even more debug information, requires debug version of OpenCore + +These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) + + +**Security**: Security is pretty self-explanatory, **do not skip** + +We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` + +* **AllowNvramReset**: YES + * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` +* **AllowSetDefault**: YES + * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker +* **AuthRestart**: NO: + * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional +* **ExposeSensitiveData**: `6` + * Shows more debug information, requires debug version of OpenCore +* **Vault**: `Optional` + * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** +* **ScanPolicy**: `0` + * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** + +**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools +* **Name** + * Name shown in OpenCore +* **Enabled** + * Self-explanatory, enables or disables +* **Path** + * Path to file after the `Tools` folder + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) + +**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore + +Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info + +## NVRAM + +![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) + +**Add**: + +4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) + +* **UIScale**: + * `01`: Standard resolution(Clover equivalent is `0x28`) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) + +* **DefaultBackgroundColor**: Background color used by boot.efi + * `00000000`: Syrah Black + * `BFBFBF00`: Light Gary + +7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) + +* **boot-args**: + * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. + * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. + * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. + * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. + * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported + + +* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition + +csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: + +* `00000000` - SIP completely enabled +* `03000000` - Allow unsigned kexts and writing to protected fs locations +* `E7030000` - SIP completely disabled + +Recommended to leave enabled for best security practices + +* **nvda\_drv**: <> + * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** +* **prev-lang:kbd**: <> + * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): + * American: `en-US:0`(`656e2d55533a30` in HEX) + * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) + * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX + +| Key | Type | Value | +| :--- | :--- | :--- | +| prev-lang:kbd | String | en-US:0 | + +**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. + +**LegacyEnable**: NO +* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM + +**LegacyOverwrite**: NO +* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM + +**LegacySchema** +* Used for assigning NVRAM variables, used with LegacyEnable set to YES + +**WriteFlash**: YES +* Enables writing to flash memory for all added variables. + +## Platforminfo + +![PlatformInfo](https://i.imgur.com/XlxjsAd.png) + +For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. + +For this Broadwell example, we chose the MacBookPro12,1 SMBIOS. The typical breakdown is as follows: + +| SMBIOS | CPU Type | GPU Type | Display Size | +| :--- | :--- | :--- | :--- | +| MacBook8,1 | Dual Core 7w(Low End) | iGPU: HD 5300 | 12" | +| MacBookAir7,1 | Dual Core 15w | iGPU: HD 6000 | 11" | +| MacBookAir7,2 | Dual Core 15w | iGPU: HD 6000 | 13" | +| MacBookPro12,1 | Dual Core 28w(High End) | iGPU: Iris 6100 | 13" | +| MacBookPro11,2 | Quad Core 45w | iGPU: Iris Pro 5200 | 15" | +| MacBookPro11,3 | Quad Core 45w | iGPU: Iris Pro 5200 + dGPU: GT750M | 15" | +| MacBookPro11,4 | Quad Core 45w | iGPU: Iris Pro 5200 | 15" | +| MacBookPro11,5 | Quad Core 45w | iGPU: Iris Pro 5200 + dGPU: R9 M370X | 15" | + +Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: + +```text + ####################################################### + # MacBookPro12,1 SMBIOS Info # +####################################################### + +Type: MacBookPro12,1 +Serial: C02M9SYJFY10 +Board Serial: C02408101J9G2Y7A8 +SmUUID: 7B227BEC-660D-405F-8E60-411B3E4EF055 +``` +The `Type` part gets copied to Generic -> SystemProductName. + +The `Serial` part gets copied to Generic -> SystemSerialNumber. + +The `Board Serial` part gets copied to Generic -> MLB. + +The `SmUUID` part gets copied toto Generic -> SystemUUID. + +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) + +**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** + +[Apple Check Coverage page](https://checkcoverage.apple.com) + +**Automatic**: YES + +* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections + +**Generic**: + +* **SpoofVendor**: YES + * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case +* **SupportsCsm**: NO + * Used for when the EFI partition isn't first on the windows drive + +**UpdateDataHub**: YES + +* Update Data Hub fields + +**UpdateNVRAM**: YES + +* Update NVRAM fields + +**UpdateSMBIOS**: YES + +* Updates SMBIOS fields + +**UpdateSMBIOSMode**: Create + +* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk + +## UEFI + +![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518166915481677/Screen_Shot_2020-02-29_at_8.36.55_PM.png) + +**ConnectDrivers**: YES + +* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. + +**Drivers**: Add your .efi drivers here + +Only drivers present here should be: + +* HfsPlus.efi +* ApfsDriverLoader.efi +* OpenRuntime.efi + +**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS + +* **AudioSupport**: NO + * Used for enabling the audio port out, this requires AudioOut +* **AudioDevice**: [Blank] + * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this +* **AudioCodec**: 0 + * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService +* **AudioOut**: 0 + * Specifies which output is used, use the debug log to see what your board has + * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) +* **MinimumVolume**: 20 + * Default sound level for audio output +* **PlayChime**: NO + * Emulates the iconic Mac startup sound + * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio +* **VolumeAmplifier**: 0 + * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation + +**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support + +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards +* **KeyForgetThreshold**: `5` + * The delay between each key input when holding a key down, for best results use `5` milliseconds +* **KeyMergeThreshold**: `2` + * The length of time that a key will be registered before resetting, for best results use `2` milliseconds +* **KeySupport**: `YES` + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi +* **KeySupportMode**: `Auto` + * Keyboard translation for OpenCore +* **KeySwap**: `NO` + * Swaps `Option` and `Cmd` key +* **PointerSupport**: `NO` + * Used for fixing broken pointer support, commonly used for Z87 Asus boards +* **PointerSupportMode**: + * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank +* **TimerResolution**: `50000` + * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some + +**Output**: Relating to visual output + +* **TextRenderer**: `BuiltinGraphics` + * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly +* **ConsoleMode**: [Blank] + * Specifies Console output size, best to keep it blank +* **Resolution**: `Max` + * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) +* **ClearScreenOnModeSwitch**: NO + * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer +* **IgnoreTextInGraphics**: NO + * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer +* **ProvideConsoleGop**: YES + * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** +* **DirectGopRendering**: NO + * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users +* **ReconnectOnResChange**: NO +* **ReplaceTabWithSpace**: NO + * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed +* **SanitiseClearScreen**: NO + * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer + +**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) + +* **AppleSmcIo**: NO + * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault +* **FirmwareVolume**: NO + * Fixes UI regarding Filevault, set to YES for better FileVault compatibility +* **HashServices**: NO + * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility +* **UnicodeCollation**: NO + * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) + + +**Quirks**: + +* **ExitBootServicesDelay**: `0` + * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 +* **IgnoreInvalidFlexRatio**: YES + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems +* **ReleaseUsbOwnership**: NO + * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` +* **RequestBootVarFallback**: YES + * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. +* **RequestBootVarRouting**: YES + * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. +* **UnblockFsConnect**: NO + * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed + +## Cleaning up + +And now you're ready to save and place it into your EFI under EFI/OC. + +For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: + +* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) +* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) + +**Sanity check**: + +So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: + +* [**Sanity Checker**](https://opencore.slowgeek.com) + +# Intel BIOS settings + +**Disable:** + +* Fast Boot +* VT-d(can be enabled if you set `DisableIoMapper` to YES) +* CSM +* Thunderbolt +* Intel SGX +* Intel Platform Trust +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) + +**Enable:** + +* VT-x +* Above 4G decoding +* Hyper-Threading +* Execute Disable Bit +* EHCI/XHCI Hand-off +* OS type: Windows 8.1/10 UEFI Mode +* DVMT Pre-Allocated(iGPU Memory): 64MB + +# [Post-install](/post-install/README.md) + diff --git a/config-laptop.plist/coffee-lake-plus.md b/config-laptop.plist/coffee-lake-plus.md new file mode 100644 index 0000000000..902b78bce5 --- /dev/null +++ b/config-laptop.plist/coffee-lake-plus.md @@ -0,0 +1,597 @@ +# Coffee Lake Plus + +* Supported version: 0.5.7 + +## Starting Point + +So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: + +* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. +* **The Sample.plist cannot be used As-Is**, you must configure it to your system +* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! + +Now with all that, we'll need some things to get started: + +* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore +* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS +* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download + +Now with those downloaded, we can get to really get started: + +* Grab the **Sample.plist** and rename to **config.plist** +* Open your new config.plist in ProperTree + * macOS: `ProperTree.command` + * Windows: `ProperTree.bat` +* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), + * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config + * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting + +**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** + +## ACPI + +![ACPI](https://i.imgur.com/IkLFucw.png) + +**Add:** + +This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) + +For us we'll need a couple of SSDTs to bring back functionality that Clover provided: +* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) + * Allows for native CPU power management on Haswell and newer, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType` +* [SSDT-AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl) + * This is the [300 series RTC patch](https://www.hackintosh-forum.de/forum/thread/39846-asrock-z390-taichi-ultimate/?pageNo=2), required for 9t gen and newer boards which prevent systems from booting macOS. The alternative is [SSDT-RTC0](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0.dsl) for when AWAC SSDT is incompatible due to missing the Legacy RTC clock, to check whether you need it and which to use please see [Getting started with ACPI](https://khronokernel.github.io/Getting-Started-With-ACPI/) page. +* [SSDT-PMC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PMC.dsl) + * 9th gen and newer don't declare the FW chip as MMIO in ACPI and so XNU ignores the MMIO region declared by the UEFI memory map. This SSDT brings back NVRAM support and uses the scope `PCI0.LPCB`, this is the most common scope so a pre-made can be found here: [SSDT-PMC.aml](https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extra-files/SSDT-PMC.aml) +* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) + * Adds brightness control support +* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) + * Used for enabling Windows features in macOS, mainly needed for I2C controllers +* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) + * Creates a stub so VoodooI2C can connect + + +Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. + +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. + + +**Block** + +This blocks certain ACPI tabes from loading, for us we can ignore this + +**Patch**: + +This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: + +* EC Rename + * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers (Laptop) Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches +* OSI rename + * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT + +| Comment | String | Change XXXX to EC | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | xxxxxxxx | +| Replace | Data | 45435f5f | + +| Comment | String | Change _OSI to XOSI | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | 5f4f5349 | +| Replace | Data | 584f5349 | + +**Quirk**: + +Settings relating to ACPI, leave everything here as default. + +* **FadtEnableReset**: NO + * Enable reboot and shutdown on legacy hardware, not recommended unless needed +* **NormalizeHeaders**: NO + * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 +* **RebaseRegions**: NO + * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. +* **ResetHwSig**: NO + * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation +* **ResetLogoStatus**: NO + * Workaround for OEM Windows logo not drawing on systems with BGRT tables. + +## Booter + +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) + +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi + +**MmioWhitelist**: + +This section is allowing devices to be passthrough to macOS that are generally ignored, for us we can ignore this section. + +**Quirks**: + +Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio` and `SetupVirtualMap` + +* **AvoidRuntimeDefrag**: YES + * Fixes UEFI runtime services like date, time, NVRAM, power control, etc +* **DevirtualiseMmio**: YES + * Reduces Stolen Memory Footprint, expands options for `slide=N` values and very helpful with fixing Memory Allocation issues on Z390. Requires `ProtectUefiServices` as well on IceLake and Z390 Coffeelake +* **DisableSingleUser**: NO + * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines +* **DisableVariableWrite**: NO + * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works +* **DiscardHibernateMap**: NO + * Reuse original hibernate memory map, only needed for certain legacy hardware +* **EnableSafeModeSlide**: YES + * Allows for slide values to be used in Safemode +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution +* **ForceExitBootServices**: NO + * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary +* **ProtectCsmRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectSecureBoot**: NO + * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and Z390 systems' + * If on Z390, **enable this quirk** +* **ProvideCustomSlide**: YES + * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **SetupVirtualMap**: YES + * Fixes SetVirtualAddresses calls to virtual addresses +* **ShrinkMemoryMap**: NO + * Needed for systems with large memory maps that don't fit, don't use unless necessary +* **SignalAppleOS**: NO + * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used + +## DeviceProperties + +![DeviceProperties](https://i.imgur.com/kHKNvgl.png) + +**Add**: Sets device properties from a map. + +This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. + +If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` + +The two ig-platform-id's we use are as follows: + +* `0x3E9B0007` - this is used when the Desktop iGPU is used to drive a display + * `07009B3E` when hex-swapped +* `0x3E920003` - this is used when the Desktop iGPU is only used for computing tasks and doesn't drive a display + * `0300923E` when hex-swapped + +Worth noting that for 10.12 -> 10.13.5, you would need to fake the iGPU to the same values in the Kaby Lake guide, as this was before native Coffee Lake iGPU showed up. 10.13.6 natively supports Coffee Lake + +We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. + +For users with black screen issues after verbose on B360, B365, H310, H370, Z390, please see the [BusID iGPU patching](/extras/gpu-patches.md#iGPU-BusID-Patching) page + +| Key | Type | Value | +| :--- | :--- | :--- | +| AAPL,ig-platform-id | Data | 07009B3E | +| framebuffer-patch-enable | Data | 01000000 | +| framebuffer-stolenmem | Data | 00003001 | + +(This is an example for a desktop UHD 630 without a dGPU and no BIOS options for iGPU memory) + +**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) + +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` + +* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). + +For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present + +Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! + +**Block**: Removes device properties from the map, for us we can ignore this + +## Kernel + +![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) + +**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. + +* **BundlePath** + * Name of the kext + * ex: `Lilu.kext` +* **Enabled** + * Self-explanatory, either enables or disables the kext +* **ExecutablePath** + * 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. Do note that plist only kexts do not need this filled in. + * ex: `Contents/MacOS/Lilu` +* **PlistPath** + * Path to the `info.plist` hidden within the kext + * ex: `Contents/Info.plist` + +**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons + +* **CpuidMask**: Leave this blank +* **CpuidData**: Leave this blank + +**Block**: Blocks kexts from loading. Not relevant for us + +**Patch**: Patches both the kernel and kexts + +**Quirks**: + +Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default + +* **AppleCpuPmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmExtraMsrs**: NO + * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. +* **AppleXcpmForceBoost**: NO + * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this +* **CustomSMBIOSGuid**: NO + * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops +* **DisableIoMapper**: YES + * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina +* **DummyPowerManagement**: NO + * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore +* **ExternalDiskIcons**: NO + * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. +* **IncreasePciBarSize**: NO + * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this +* **LapicKernelPanic**: NO + * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` +* **PanicNoKextDump**: YES + * Allows for reading kernel panics logs when kernel panics occur +* **PowerTimeoutKernelPanic**: YES + * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. +* **ThirdPartyDrives**: NO + * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM +* **XhciPortLimit**: YES + * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. + +The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such + +## Misc + +![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) + +**Boot**: Settings for boot screen (Leave everything as default) +* **HibernateMode**: None + * Best to avoid hibernation with Hackintoshes all together +* **PickerMode**: `Builtin` + * Sets OpenCore to use the builtin picker +* **HideAuxiliary**: NO + * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour +* **HideSelf**: YES + * Hides the EFI partition as a boot option in OC's boot picker +* **PickerAttributes**: + * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAudioAssist**: NO + * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled +* **PollAppleHotKeys**: NO + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * `Cmd+V`: Enables verbose + * `Cmd+Opt+P+R`: Cleans NVRAM + * `Cmd+R`: Boots Recovery partition + * `Cmd+S`: Boot in Single-user mode + * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key +* **TakeoffDelay**: `0` + * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support +* **Timeout**: `5` + * This sets how long OpenCore will wait until it automatically boots from the default selection + +**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) + +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues +* **Target**: `67` + * Shows more debug information, requires debug version of OpenCore +* **DisplayLevel**: `2147483714` + * Shows even more debug information, requires debug version of OpenCore + +These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) + + +**Security**: Security is pretty self-explanatory, **do not skip** + +We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` + +* **AllowNvramReset**: YES + * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` +* **AllowSetDefault**: YES + * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker +* **AuthRestart**: NO: + * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional +* **ExposeSensitiveData**: `6` + * Shows more debug information, requires debug version of OpenCore +* **Vault**: `Optional` + * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** +* **ScanPolicy**: `0` + * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** + +**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools +* **Name** + * Name shown in OpenCore +* **Enabled** + * Self-explanatory, enables or disables +* **Path** + * Path to file after the `Tools` folder + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) + +**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore + +Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info + +## NVRAM + +![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) + +**Add**: + +4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) + +* **UIScale**: + * `01`: Standard resolution(Clover equivalent is `0x28`) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) + +* **DefaultBackgroundColor**: Background color used by boot.efi + * `00000000`: Syrah Black + * `BFBFBF00`: Light Gary + +7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) + +* **boot-args**: + * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. + * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. + * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. + * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. + * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported + + +* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition + +csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: + +* `00000000` - SIP completely enabled +* `03000000` - Allow unsigned kexts and writing to protected fs locations +* `E7030000` - SIP completely disabled + +Recommended to leave enabled for best security practices + +* **nvda\_drv**: <> + * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** +* **prev-lang:kbd**: <> + * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): + * American: `en-US:0`(`656e2d55533a30` in HEX) + * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) + * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX + +| Key | Type | Value | +| :--- | :--- | :--- | +| prev-lang:kbd | String | en-US:0 | + +**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. + +**LegacyEnable**: NO +* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM + +**LegacyOverwrite**: NO +* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM + +**LegacySchema** +* Used for assigning NVRAM variables, used with LegacyEnable set to YES + +**WriteFlash**: YES +* Enables writing to flash memory for all added variables. + +## Platforminfo + +![PlatformInfo](https://i.imgur.com/JpLxh35.png) + +For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. + +For this Coffee Lake Plus example, I chose the MacBookPro16,1 SMBIOS - this is done intentionally for compatibility's sake. The breakdown is as follows: + +| SMBIOS | CPU Type | GPU Type | Display Size | +| :--- | :--- | :--- | :--- | +| MacBookPro16,1 | Hexa/Octa Core 45w | iGPU: UHD 630 + dGPU: 5300/5500M | 15" | +| MacBookPro15,2 | Quad Core 15w | iGPU: Iris 655 | 13" | + +Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: + +```text + ####################################################### + # MacBookPro16,1 SMBIOS Info # +####################################################### + +Type: MacBookPro16,1 +Serial: C02XG0FDH7JY +Board Serial: C02839303QXH69FJA +SmUUID: DBB364D6-44B2-4A02-B922-AB4396F16DA8 +``` +The `Type` part gets copied to Generic -> SystemProductName. + +The `Serial` part gets copied to Generic -> SystemSerialNumber. + +The `Board Serial` part gets copied to Generic -> MLB. + +The `SmUUID` part gets copied toto Generic -> SystemUUID. + +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) + +**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** + +[Apple Check Coverage page](https://checkcoverage.apple.com) + +**Automatic**: YES + +* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections + +**Generic**: + +* **SpoofVendor**: YES + * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case +* **SupportsCsm**: NO + * Used for when the EFI partition isn't first on the windows drive + +**UpdateDataHub**: YES + +* Update Data Hub fields + +**UpdateNVRAM**: YES + +* Update NVRAM fields + +**UpdateSMBIOS**: YES + +* Updates SMBIOS fields + +**UpdateSMBIOSMode**: Create + +* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk + +## UEFI + +![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518959873425639/Screen_Shot_2020-02-29_at_8.40.06_PM.png) + +**ConnectDrivers**: YES + +* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. + +**Drivers**: Add your .efi drivers here + +Only drivers present here should be: + +* HfsPlus.efi +* ApfsDriverLoader.efi +* OpenRuntime.efi + +**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS + +* **AudioSupport**: NO + * Used for enabling the audio port out, this requires AudioOut +* **AudioDevice**: [Blank] + * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this +* **AudioCodec**: 0 + * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService +* **AudioOut**: 0 + * Specifies which output is used, use the debug log to see what your board has + * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) +* **MinimumVolume**: 20 + * Default sound level for audio output +* **PlayChime**: NO + * Emulates the iconic Mac startup sound + * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio +* **VolumeAmplifier**: 0 + * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation + +**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support + +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards +* **KeyForgetThreshold**: `5` + * The delay between each key input when holding a key down, for best results use `5` milliseconds +* **KeyMergeThreshold**: `2` + * The length of time that a key will be registered before resetting, for best results use `2` milliseconds +* **KeySupport**: `YES` + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi +* **KeySupportMode**: `Auto` + * Keyboard translation for OpenCore +* **KeySwap**: `NO` + * Swaps `Option` and `Cmd` key +* **PointerSupport**: `NO` + * Used for fixing broken pointer support, commonly used for Z87 Asus boards +* **PointerSupportMode**: + * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank +* **TimerResolution**: `50000` + * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some + +**Output**: Relating to visual output + +* **TextRenderer**: `BuiltinGraphics` + * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly +* **ConsoleMode**: [Blank] + * Specifies Console output size, best to keep it blank +* **Resolution**: `Max` + * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) +* **ClearScreenOnModeSwitch**: NO + * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer +* **IgnoreTextInGraphics**: NO + * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer +* **ProvideConsoleGop**: YES + * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** +* **DirectGopRendering**: NO + * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users +* **ReconnectOnResChange**: NO +* **ReplaceTabWithSpace**: NO + * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed +* **SanitiseClearScreen**: NO + * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer + +**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) + +* **AppleSmcIo**: NO + * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault +* **FirmwareVolume**: NO + * Fixes UI regarding Filevault, set to YES for better FileVault compatibility +* **HashServices**: NO + * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility +* **UnicodeCollation**: NO + * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) + + +**Quirks**: + +* **ExitBootServicesDelay**: `0` + * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 +* **IgnoreInvalidFlexRatio**: NO + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems +* **ReleaseUsbOwnership**: NO + * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` +* **RequestBootVarFallback**: YES + * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. +* **RequestBootVarRouting**: YES + * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. +* **UnblockFsConnect**: NO + * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed + +## Cleaning up + +And now you're ready to save and place it into your EFI under EFI/OC. + +For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: + +* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) +* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) + +**Sanity check**: + +So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: + +* [**Sanity Checker**](https://opencore.slowgeek.com) + +# Intel BIOS settings + +**Disable:** + +* Fast Boot +* VT-d(can be enabled if you set `DisableIoMapper` to YES) +* CSM +* Thunderbolt +* Intel SGX +* Intel Platform Trust +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) + +**Enable:** + +* VT-x +* Above 4G decoding +* Hyper-Threading +* Execute Disable Bit +* EHCI/XHCI Hand-off +* OS type: Windows 8.1/10 UEFI Mode +* DVMT Pre-Allocated(iGPU Memory): 64MB + +# [Post-install](/post-install/README.md) diff --git a/config-laptop.plist/coffee-lake.md b/config-laptop.plist/coffee-lake.md new file mode 100644 index 0000000000..2e3d94e4d4 --- /dev/null +++ b/config-laptop.plist/coffee-lake.md @@ -0,0 +1,595 @@ +# Coffee Lake + +* Supported version: 0.5.7 + +## Starting Point + +So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: + +* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. +* **The Sample.plist cannot be used As-Is**, you must configure it to your system +* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! + +Now with all that, we'll need some things to get started: + +* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore +* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS +* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download + +Now with those downloaded, we can get to really get started: + +* Grab the **Sample.plist** and rename to **config.plist** +* Open your new config.plist in ProperTree + * macOS: `ProperTree.command` + * Windows: `ProperTree.bat` +* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), + * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config + * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting + +**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** + +## ACPI + +![ACPI](https://i.imgur.com/IkLFucw.png) + +**Add:** + +This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) + +For us we'll need a couple of SSDTs to bring back functionality that Clover provided: + +* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) + * Allows for native CPU power management, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType`. Do note that this SSDT is made for systems where `AppleACPICPU` attaches `CPU0`, though some ACPI tables have theirs starting at `PR00` so adjust accordingly. Seeing what device has AppleACPICPU connected first in [IORegistryExplorer](https://github.com/toleda/audio_ALCInjection/raw/master/IORegistryExplorer_v2.1.zip) can also give you a hint +* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) + * Adds brightness control support +* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) + * Used for enabling Windows features in macOS, mainly needed for I2C controllers +* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) + * Creates a stub so VoodooI2C can connect + +Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. + +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. + + +**Block** + +This blocks certain ACPI tabes from loading, for us we can ignore this + +**Patch**: + +This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: + +* EC Rename + * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches +* OSI rename + * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT + +| Comment | String | Change XXXX to EC | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | xxxxxxxx | +| Replace | Data | 45435f5f | + +| Comment | String | Change _OSI to XOSI | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | 5f4f5349 | +| Replace | Data | 584f5349 | + +**Quirk**: + +Settings relating to ACPI, leave everything here as default. + +* **FadtEnableReset**: NO + * Enable reboot and shutdown on legacy hardware, not recommended unless needed +* **NormalizeHeaders**: NO + * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 +* **RebaseRegions**: NO + * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. +* **ResetHwSig**: NO + * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation +* **ResetLogoStatus**: NO + * Workaround for OEM Windows logo not drawing on systems with BGRT tables. + +## Booter + +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) + +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi + +**MmioWhitelist**: + +This section is allowing devices to be passthrough to macOS that are generally ignored, for us we can ignore this section. + +**Quirks**: + +Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio` and `SetupVirtualMap` + +* **AvoidRuntimeDefrag**: YES + * Fixes UEFI runtime services like date, time, NVRAM, power control, etc +* **DevirtualiseMmio**: YES + * Reduces Stolen Memory Footprint, expands options for `slide=N` values and very helpful with fixing Memory Allocation issues on Z390. Requires `ProtectUefiServices` as well on IceLake and Z390 Coffeelake +* **DisableSingleUser**: NO + * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines +* **DisableVariableWrite**: NO + * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works +* **DiscardHibernateMap**: NO + * Reuse original hibernate memory map, only needed for certain legacy hardware +* **EnableSafeModeSlide**: YES + * Allows for slide values to be used in Safemode +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution +* **ForceExitBootServices**: NO + * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary +* **ProtectCsmRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectSecureBoot**: NO + * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and Z390 systems' + * If on Z390, **enable this quirk** +* **ProvideCustomSlide**: YES + * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **SetupVirtualMap**: YES + * Fixes SetVirtualAddresses calls to virtual addresses +* **ShrinkMemoryMap**: NO + * Needed for systems with large memory maps that don't fit, don't use unless necessary +* **SignalAppleOS**: NO + * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used + +## DeviceProperties + +![DeviceProperties](https://i.imgur.com/kHKNvgl.png) + +**Add**: Sets device properties from a map. + +This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. + +If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` + +The two ig-platform-id's we use are as follows: + +* `0x3E9B0007` - this is used when the Desktop iGPU is used to drive a display + * `07009B3E` when hex-swapped +* `0x3E920003` - this is used when the Desktop iGPU is only used for computing tasks and doesn't drive a display + * `0300923E` when hex-swapped + +Worth noting that for 10.12 -> 10.13.5, you would need to fake the iGPU to the same values in the Kaby Lake guide, as this was before native Coffee Lake iGPU showed up. 10.13.6 natively supports Coffee Lake + +We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. + +For users with black screen issues after verbose on B360, B365, H310, H370, Z390, please see the [BusID iGPU patching](/extras/gpu-patches.md#iGPU-BusID-Patching) page + +| Key | Type | Value | +| :--- | :--- | :--- | +| AAPL,ig-platform-id | Data | 07009B3E | +| framebuffer-patch-enable | Data | 01000000 | +| framebuffer-stolenmem | Data | 00003001 | + +(This is an example for a desktop UHD 630 without a dGPU and no BIOS options for iGPU memory) + +**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) + +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` + +* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). + +For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present + +Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! + +**Block**: Removes device properties from the map, for us we can ignore this + +## Kernel + +![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) + +**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. + +* **BundlePath** + * Name of the kext + * ex: `Lilu.kext` +* **Enabled** + * Self-explanatory, either enables or disables the kext +* **ExecutablePath** + * 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. Do note that plist only kexts do not need this filled in. + * ex: `Contents/MacOS/Lilu` +* **PlistPath** + * Path to the `info.plist` hidden within the kext + * ex: `Contents/Info.plist` + +**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons + +* **CpuidMask**: Leave this blank +* **CpuidData**: Leave this blank + +**Block**: Blocks kexts from loading. Not relevant for us + +**Patch**: Patches both the kernel and kexts + +**Quirks**: + +Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default + +* **AppleCpuPmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmExtraMsrs**: NO + * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. +* **AppleXcpmForceBoost**: NO + * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this +* **CustomSMBIOSGuid**: NO + * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops +* **DisableIoMapper**: YES + * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina +* **DummyPowerManagement**: NO + * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore +* **ExternalDiskIcons**: NO + * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. +* **IncreasePciBarSize**: NO + * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this +* **LapicKernelPanic**: NO + * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` +* **PanicNoKextDump**: YES + * Allows for reading kernel panics logs when kernel panics occur +* **PowerTimeoutKernelPanic**: YES + * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. +* **ThirdPartyDrives**: NO + * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM +* **XhciPortLimit**: YES + * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. + +The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such + +## Misc + +![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) + +**Boot**: Settings for boot screen (Leave everything as default) +* **HibernateMode**: None + * Best to avoid hibernation with Hackintoshes all together +* **PickerMode**: `Builtin` + * Sets OpenCore to use the builtin picker +* **HideAuxiliary**: NO + * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour +* **HideSelf**: YES + * Hides the EFI partition as a boot option in OC's boot picker +* **PickerAttributes**: + * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAudioAssist**: NO + * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled +* **PollAppleHotKeys**: NO + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * `Cmd+V`: Enables verbose + * `Cmd+Opt+P+R`: Cleans NVRAM + * `Cmd+R`: Boots Recovery partition + * `Cmd+S`: Boot in Single-user mode + * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key +* **TakeoffDelay**: `0` + * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support +* **Timeout**: `5` + * This sets how long OpenCore will wait until it automatically boots from the default selection + +**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) + +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues +* **Target**: `67` + * Shows more debug information, requires debug version of OpenCore +* **DisplayLevel**: `2147483714` + * Shows even more debug information, requires debug version of OpenCore + +These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) + + +**Security**: Security is pretty self-explanatory, **do not skip** + +We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` + +* **AllowNvramReset**: YES + * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` +* **AllowSetDefault**: YES + * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker +* **AuthRestart**: NO: + * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional +* **ExposeSensitiveData**: `6` + * Shows more debug information, requires debug version of OpenCore +* **Vault**: `Optional` + * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** +* **ScanPolicy**: `0` + * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** + +**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools +* **Name** + * Name shown in OpenCore +* **Enabled** + * Self-explanatory, enables or disables +* **Path** + * Path to file after the `Tools` folder + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) + +**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore + +Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info + +## NVRAM + +![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) + +**Add**: + +4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) + +* **UIScale**: + * `01`: Standard resolution(Clover equivalent is `0x28`) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) + +* **DefaultBackgroundColor**: Background color used by boot.efi + * `00000000`: Syrah Black + * `BFBFBF00`: Light Gary + +7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) + +* **boot-args**: + * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. + * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. + * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. + * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. + * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported + + +* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition + +csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: + +* `00000000` - SIP completely enabled +* `03000000` - Allow unsigned kexts and writing to protected fs locations +* `E7030000` - SIP completely disabled + +Recommended to leave enabled for best security practices + +* **nvda\_drv**: <> + * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** +* **prev-lang:kbd**: <> + * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): + * American: `en-US:0`(`656e2d55533a30` in HEX) + * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) + * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX + +| Key | Type | Value | +| :--- | :--- | :--- | +| prev-lang:kbd | String | en-US:0 | + +**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. + +**LegacyEnable**: NO +* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM + +**LegacyOverwrite**: NO +* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM + +**LegacySchema** +* Used for assigning NVRAM variables, used with LegacyEnable set to YES + +**WriteFlash**: YES +* Enables writing to flash memory for all added variables. + +## Platforminfo + +![PlatformInfo](https://i.imgur.com/JpLxh35.png) + +For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. + +For this Coffee Lake example, I chose the MacBookPro15,1 SMBIOS - this is done intentionally for compatibility's sake. The breakdown is as follows: + +| SMBIOS | CPU Type | GPU Type | Display Size | +| :--- | :--- | :--- | :--- | +| MacBookPro15,1 | Hexa Core 45w | iGPU: UHD 630 + dGPU: RP555/560X | 15" | +| MacBookPro15,2 | Quad Core 15w | iGPU: Iris 655 | 13" | +| MacBookPro15,3 | Hexa Core 45w | iGPU: UHD 630 + dGPU: Vega16/20 | 15" | +| MacBookPro15,4 | Quad Core 15w | iGPU: Iris 645 | 13" | + +Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: + +```text + ####################################################### + # MacBookPro15,1 SMBIOS Info # +####################################################### + +Type: MacBookPro15,1 +Serial: C02XG0FDH7JY +Board Serial: C02839303QXH69FJA +SmUUID: DBB364D6-44B2-4A02-B922-AB4396F16DA8 +``` +The `Type` part gets copied to Generic -> SystemProductName. + +The `Serial` part gets copied to Generic -> SystemSerialNumber. + +The `Board Serial` part gets copied to Generic -> MLB. + +The `SmUUID` part gets copied toto Generic -> SystemUUID. + +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) + +**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** + +[Apple Check Coverage page](https://checkcoverage.apple.com) + +**Automatic**: YES + +* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections + +**Generic**: + +* **SpoofVendor**: YES + * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case +* **SupportsCsm**: NO + * Used for when the EFI partition isn't first on the windows drive + +**UpdateDataHub**: YES + +* Update Data Hub fields + +**UpdateNVRAM**: YES + +* Update NVRAM fields + +**UpdateSMBIOS**: YES + +* Updates SMBIOS fields + +**UpdateSMBIOSMode**: Create + +* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk + +## UEFI + +![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518959873425639/Screen_Shot_2020-02-29_at_8.40.06_PM.png) + +**ConnectDrivers**: YES + +* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. + +**Drivers**: Add your .efi drivers here + +Only drivers present here should be: + +* HfsPlus.efi +* ApfsDriverLoader.efi +* OpenRuntime.efi + +**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS + +* **AudioSupport**: NO + * Used for enabling the audio port out, this requires AudioOut +* **AudioDevice**: [Blank] + * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this +* **AudioCodec**: 0 + * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService +* **AudioOut**: 0 + * Specifies which output is used, use the debug log to see what your board has + * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) +* **MinimumVolume**: 20 + * Default sound level for audio output +* **PlayChime**: NO + * Emulates the iconic Mac startup sound + * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio +* **VolumeAmplifier**: 0 + * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation + +**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support + +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards +* **KeyForgetThreshold**: `5` + * The delay between each key input when holding a key down, for best results use `5` milliseconds +* **KeyMergeThreshold**: `2` + * The length of time that a key will be registered before resetting, for best results use `2` milliseconds +* **KeySupport**: `YES` + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi +* **KeySupportMode**: `Auto` + * Keyboard translation for OpenCore +* **KeySwap**: `NO` + * Swaps `Option` and `Cmd` key +* **PointerSupport**: `NO` + * Used for fixing broken pointer support, commonly used for Z87 Asus boards +* **PointerSupportMode**: + * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank +* **TimerResolution**: `50000` + * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some + +**Output**: Relating to visual output + +* **TextRenderer**: `BuiltinGraphics` + * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly +* **ConsoleMode**: [Blank] + * Specifies Console output size, best to keep it blank +* **Resolution**: `Max` + * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) +* **ClearScreenOnModeSwitch**: NO + * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer +* **IgnoreTextInGraphics**: NO + * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer +* **ProvideConsoleGop**: YES + * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** +* **DirectGopRendering**: NO + * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users +* **ReconnectOnResChange**: NO +* **ReplaceTabWithSpace**: NO + * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed +* **SanitiseClearScreen**: NO + * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer + +**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) + +* **AppleSmcIo**: NO + * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault +* **FirmwareVolume**: NO + * Fixes UI regarding Filevault, set to YES for better FileVault compatibility +* **HashServices**: NO + * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility +* **UnicodeCollation**: NO + * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) + + +**Quirks**: + +* **ExitBootServicesDelay**: `0` + * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 +* **IgnoreInvalidFlexRatio**: NO + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems +* **ReleaseUsbOwnership**: NO + * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` +* **RequestBootVarFallback**: YES + * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. +* **RequestBootVarRouting**: YES + * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. +* **UnblockFsConnect**: NO + * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed + +## Cleaning up + +And now you're ready to save and place it into your EFI under EFI/OC. + +For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: + +* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) +* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) + +**Sanity check**: + +So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: + +* [**Sanity Checker**](https://opencore.slowgeek.com) + +# Intel BIOS settings + +**Disable:** + +* Fast Boot +* VT-d(can be enabled if you set `DisableIoMapper` to YES) +* CSM +* Thunderbolt +* Intel SGX +* Intel Platform Trust +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) + +**Enable:** + +* VT-x +* Above 4G decoding +* Hyper-Threading +* Execute Disable Bit +* EHCI/XHCI Hand-off +* OS type: Windows 8.1/10 UEFI Mode +* DVMT Pre-Allocated(iGPU Memory): 64MB + +# [Post-install](/post-install/README.md) diff --git a/config-laptop.plist/haswell.md b/config-laptop.plist/haswell.md new file mode 100644 index 0000000000..8e676ce90c --- /dev/null +++ b/config-laptop.plist/haswell.md @@ -0,0 +1,615 @@ +# Haswell + +* Supported version: 0.5.7 + +## Starting Point + +So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: + +* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. +* **The Sample.plist cannot be used As-Is**, you must configure it to your system +* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! + +Now with all that, we'll need some things to get started: + +* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore +* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS +* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download + +Now with those downloaded, we can get to really get started: + +* Grab the **Sample.plist** and rename to **config.plist** +* Open your new config.plist in ProperTree + * macOS: `ProperTree.command` + * Windows: `ProperTree.bat` +* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), + * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config + * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting + +**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** + +## ACPI + +![ACPI](https://i.imgur.com/2T0ubhy.png) + + +**Add:** + +This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) + +For us we'll need a couple of SSDTs to bring back functionality that Clover provided: + +* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) + * Allows for native CPU power management, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType`. Do note that this SSDT is made for systems where `AppleACPICPU` attaches `CPU0`, though some ACPI tables have theirs starting at `PR00` so adjust accordingly. Seeing what device has AppleACPICPU connected first in [IORegistryExplorer](https://github.com/toleda/audio_ALCInjection/raw/master/IORegistryExplorer_v2.1.zip) can also give you a hint +* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) + * Adds brightness control support +* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) + * Used for enabling Windows features in macOS, mainly needed for I2C controllers +* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) + * Creates a stub so VoodooI2C can connect + +Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. + +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. + + +**Block** + +This blocks certain ACPI tabes from loading, for us we can ignore this + +**Patch**: + +This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: + +* EC Rename + * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches +* OSI rename + * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT + +| Comment | String | Change XXXX to EC | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | xxxxxxxx | +| Replace | Data | 45435f5f | + +| Comment | String | Change _OSI to XOSI | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | 5f4f5349 | +| Replace | Data | 584f5349 | + +**Quirk**: + +Settings relating to ACPI, leave everything here as default. + +* **FadtEnableReset**: NO + * Enable reboot and shutdown on legacy hardware, not recommended unless needed +* **NormalizeHeaders**: NO + * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 +* **RebaseRegions**: NO + * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. +* **ResetHwSig**: NO + * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation +* **ResetLogoStatus**: NO + * Workaround for OEM Windows logo not drawing on systems with BGRT tables. + +## Booter + +![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) + +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi + +**MmioWhitelist**: + +This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with `DevirtualiseMmio` + +**Quirks**: + +Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` + +* **AvoidRuntimeDefrag**: YES + * Fixes UEFI runtime services like date, time, NVRAM, power control, etc +* **DevirtualiseMmio**: NO + * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems +* **DisableSingleUser**: NO + * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines +* **DisableVariableWrite**: NO + * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works +* **DiscardHibernateMap**: NO + * Reuse original hibernate memory map, only needed for certain legacy hardware +* **EnableSafeModeSlide**: YES + * Allows for slide values to be used in Safemode +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution +* **ForceExitBootServices**: NO + * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary +* **ProtectCsmRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectSecureBoot**: NO + * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems +* **ProvideCustomSlide**: YES + * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **SetupVirtualMap**: YES + * Fixes SetVirtualAddresses calls to virtual addresses +* **ShrinkMemoryMap**: NO + * Needed for systems with large memory maps that don't fit, don't use unless necessary +* **SignalAppleOS**: NO + * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used + +## DeviceProperties + +![DeviceProperties](https://i.imgur.com/vgLIhOo.png) + +**Add**: Sets device properties from a map. + +This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. + +If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` + +The two ig-platform-id's we use are as follows: + +* `0x0D220003` - this is used when the Desktop Haswell iGPU is used to drive a display + * `0300220D` when hex-swapped +* `0x04120004` - this is used when the Desktop Haswell iGPU is only used for computing tasks and doesn't drive a display + * `04001204` when hex-swapped +* `0x0D220003` - this is used when the Desktop Broadwell iGPU + * `07002216` when hex-swapped + +I added another portion as well that shows a `device-id` fake in case you have an HD 4400 which is unsupported in macOS. + +The device-id fake is set up like so: + +* `0x04120000` - this is the device id for HD 4600 which does have support in macOS + * `12040000` when hex swapped + +We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. + +| Key | Type | Value | +| :--- | :--- | :--- | +| AAPL,ig-platform-id | Data | 0300220D | +| framebuffer-patch-enable | Data | 01000000 | +| framebuffer-stolenmem | Data | 00003001 | +| device-id | Data | 12040000 | + +(This is an example for a desktop HD 4400 without a dGPU and no BIOS options for iGPU memory) + +| Key | Type | Value | +| :--- | :--- | :--- | +| AAPL,ig-platform-id | Data | 07002216 | +| framebuffer-patch-enable | Data | 01000000 | +| framebuffer-stolenmem | Data | 00003001 | + +(This is an example for a desktop Iris Pro 6200 and no BIOS options for iGPU memory) + +**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) + +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` + +* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). + +For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present + +Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! + +**Block**: Removes device properties from the map, for us we can ignore this + +## Kernel + +![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) + +**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. + +* **BundlePath** + * Name of the kext + * ex: `Lilu.kext` +* **Enabled** + * Self-explanatory, either enables or disables the kext +* **ExecutablePath** + * 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. Do note that plist only kexts do not need this filled in. + * ex: `Contents/MacOS/Lilu` +* **PlistPath** + * Path to the `info.plist` hidden within the kext + * ex: `Contents/Info.plist` + +**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons + +* **CpuidMask**: Leave this blank +* **CpuidData**: Leave this blank + +**Block**: Blocks kexts from loading. Not relevant for us + +**Patch**: Patches both the kernel and kexts + +**Quirks**: + +Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default + +* **AppleCpuPmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmExtraMsrs**: NO + * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. +* **AppleXcpmForceBoost**: NO + * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this +* **CustomSMBIOSGuid**: NO + * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops +* **DisableIoMapper**: YES + * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina +* **DummyPowerManagement**: NO + * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore +* **ExternalDiskIcons**: NO + * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. +* **IncreasePciBarSize**: NO + * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this +* **LapicKernelPanic**: NO + * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` +* **PanicNoKextDump**: YES + * Allows for reading kernel panics logs when kernel panics occur +* **PowerTimeoutKernelPanic**: YES + * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. +* **ThirdPartyDrives**: NO + * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM +* **XhciPortLimit**: YES + * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. + +The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such + +## Misc + +![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) + +**Boot**: Settings for boot screen (Leave everything as default) +* **HibernateMode**: None + * Best to avoid hibernation with Hackintoshes all together +* **PickerMode**: `Builtin` + * Sets OpenCore to use the builtin picker +* **HideAuxiliary**: NO + * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour +* **HideSelf**: YES + * Hides the EFI partition as a boot option in OC's boot picker +* **PickerAttributes**: + * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAudioAssist**: NO + * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled +* **PollAppleHotKeys**: NO + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * `Cmd+V`: Enables verbose + * `Cmd+Opt+P+R`: Cleans NVRAM + * `Cmd+R`: Boots Recovery partition + * `Cmd+S`: Boot in Single-user mode + * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key +* **TakeoffDelay**: `0` + * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support +* **Timeout**: `5` + * This sets how long OpenCore will wait until it automatically boots from the default selection + +**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) + +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues +* **Target**: `67` + * Shows more debug information, requires debug version of OpenCore +* **DisplayLevel**: `2147483714` + * Shows even more debug information, requires debug version of OpenCore + +These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) + + +**Security**: Security is pretty self-explanatory, **do not skip** + +We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` + +* **AllowNvramReset**: YES + * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` +* **AllowSetDefault**: YES + * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker +* **AuthRestart**: NO: + * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional +* **ExposeSensitiveData**: `6` + * Shows more debug information, requires debug version of OpenCore +* **Vault**: `Optional` + * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** +* **ScanPolicy**: `0` + * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** + +**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools +* **Name** + * Name shown in OpenCore +* **Enabled** + * Self-explanatory, enables or disables +* **Path** + * Path to file after the `Tools` folder + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) + +**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore + +Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info + +## NVRAM + +![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) + +**Add**: + +4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) + +* **UIScale**: + * `01`: Standard resolution(Clover equivalent is `0x28`) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) + +* **DefaultBackgroundColor**: Background color used by boot.efi + * `00000000`: Syrah Black + * `BFBFBF00`: Light Gary + +7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) + +* **boot-args**: + * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. + * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. + * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. + * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. + * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported + + +* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition + +csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: + +* `00000000` - SIP completely enabled +* `03000000` - Allow unsigned kexts and writing to protected fs locations +* `E7030000` - SIP completely disabled + +Recommended to leave enabled for best security practices + +* **nvda\_drv**: <> + * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** +* **prev-lang:kbd**: <> + * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): + * American: `en-US:0`(`656e2d55533a30` in HEX) + * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) + * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX + +| Key | Type | Value | +| :--- | :--- | :--- | +| prev-lang:kbd | String | en-US:0 | + +**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. + +**LegacyEnable**: NO +* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM + +**LegacyOverwrite**: NO +* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM + +**LegacySchema** +* Used for assigning NVRAM variables, used with LegacyEnable set to YES + +**WriteFlash**: YES +* Enables writing to flash memory for all added variables. + +## Platforminfo + +![PlatformInfo](https://i.imgur.com/XlxjsAd.png) + +For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. + +For this Haswell example, we chose the MacBookPro11,1 SMBIOS. The typical breakdown is as follows: + +| SMBIOS | CPU Type | GPU Type | Display Size | +| :--- | :--- | :--- | :--- | +| MacBookAir6,1 | Dual Core 15w | iGPU: HD 5000 | 11" | +| MacBookAir6,2 | Dual Core 15w | iGPU: HD 5000 | 13" | +| MacBookPro11,1 | Dual Core 28w | iGPU: Iris 5100 | 13" | +| MacBookPro11,2 | Quad Core 45w | iGPU: Iris Pro 5200 | 15" | +| MacBookPro11,3 | Quad Core 45w | iGPU: Iris Pro 5200 + dGPU: GT750M | 15" | +| MacBookPro11,4 | Quad Core 45w | iGPU: Iris Pro 5200 | 15" | +| MacBookPro11,5 | Quad Core 45w | iGPU: Iris Pro 5200 + dGPU: R9 M370X | 15" | + +**Note**: Mobile users should refer to the SMBIOS page on which to choose: [Mobile SMBIOS](https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extras/smbios.md) + +Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: + +```text + ####################################################### + # MacBookPro11,1 SMBIOS Info # +####################################################### + +Type: MacBookPro11,1 +Serial: C02M9SYJFY10 +Board Serial: C02408101J9G2Y7A8 +SmUUID: 7B227BEC-660D-405F-8E60-411B3E4EF055 +``` +The `Type` part gets copied to Generic -> SystemProductName. + +The `Serial` part gets copied to Generic -> SystemSerialNumber. + +The `Board Serial` part gets copied to Generic -> MLB. + +The `SmUUID` part gets copied toto Generic -> SystemUUID. + +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) + +**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** + +[Apple Check Coverage page](https://checkcoverage.apple.com) + +**Automatic**: YES + +* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections + +**Generic**: + +* **SpoofVendor**: YES + * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case +* **SupportsCsm**: NO + * Used for when the EFI partition isn't first on the windows drive + +**UpdateDataHub**: YES + +* Update Data Hub fields + +**UpdateNVRAM**: YES + +* Update NVRAM fields + +**UpdateSMBIOS**: YES + +* Updates SMBIOS fields + +**UpdateSMBIOSMode**: Create + +* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk + +## UEFI + +![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518166915481677/Screen_Shot_2020-02-29_at_8.36.55_PM.png) + +**ConnectDrivers**: YES + +* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. + +**Drivers**: Add your .efi drivers here + +Only drivers present here should be: + +* HfsPlus.efi +* ApfsDriverLoader.efi +* OpenRuntime.efi + +**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS + +* **AudioSupport**: NO + * Used for enabling the audio port out, this requires AudioOut +* **AudioDevice**: [Blank] + * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this +* **AudioCodec**: 0 + * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService +* **AudioOut**: 0 + * Specifies which output is used, use the debug log to see what your board has + * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) +* **MinimumVolume**: 20 + * Default sound level for audio output +* **PlayChime**: NO + * Emulates the iconic Mac startup sound + * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio +* **VolumeAmplifier**: 0 + * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation + +**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support + +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards +* **KeyForgetThreshold**: `5` + * The delay between each key input when holding a key down, for best results use `5` milliseconds +* **KeyMergeThreshold**: `2` + * The length of time that a key will be registered before resetting, for best results use `2` milliseconds +* **KeySupport**: `YES` + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi +* **KeySupportMode**: `Auto` + * Keyboard translation for OpenCore +* **KeySwap**: `NO` + * Swaps `Option` and `Cmd` key +* **PointerSupport**: `NO` + * Used for fixing broken pointer support, commonly used for Z87 Asus boards +* **PointerSupportMode**: + * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank +* **TimerResolution**: `50000` + * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some + +**Output**: Relating to visual output + +* **TextRenderer**: `BuiltinGraphics` + * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly +* **ConsoleMode**: [Blank] + * Specifies Console output size, best to keep it blank +* **Resolution**: `Max` + * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) +* **ClearScreenOnModeSwitch**: NO + * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer +* **IgnoreTextInGraphics**: NO + * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer +* **ProvideConsoleGop**: YES + * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** +* **DirectGopRendering**: NO + * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users +* **ReconnectOnResChange**: NO +* **ReplaceTabWithSpace**: NO + * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed +* **SanitiseClearScreen**: NO + * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer + +**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) + +* **AppleSmcIo**: NO + * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault +* **FirmwareVolume**: NO + * Fixes UI regarding Filevault, set to YES for better FileVault compatibility +* **HashServices**: NO + * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility +* **UnicodeCollation**: NO + * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) + + +**Quirks**: + +* **ExitBootServicesDelay**: `0` + * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 +* **IgnoreInvalidFlexRatio**: YES + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems +* **ReleaseUsbOwnership**: NO + * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` +* **RequestBootVarFallback**: YES + * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. +* **RequestBootVarRouting**: YES + * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. +* **UnblockFsConnect**: NO + * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed + +## Cleaning up + +And now you're ready to save and place it into your EFI under EFI/OC. + +For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: + +* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) +* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) + +**Sanity check**: + +So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: + +* [**Sanity Checker**](https://opencore.slowgeek.com) + +# Intel BIOS settings + +**Disable:** + +* Fast Boot +* VT-d(can be enabled if you set `DisableIoMapper` to YES) +* CSM +* Thunderbolt +* Intel SGX +* Intel Platform Trust +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) + +**Enable:** + +* VT-x +* Above 4G decoding +* Hyper-Threading +* Execute Disable Bit +* EHCI/XHCI Hand-off +* OS type: Windows 8.1/10 UEFI Mode +* DVMT Pre-Allocated(iGPU Memory): 64MB + +# [Post-install](/post-install/README.md) + diff --git a/config-laptop.plist/ivy-bridge.md b/config-laptop.plist/ivy-bridge.md new file mode 100644 index 0000000000..ac3164be3e --- /dev/null +++ b/config-laptop.plist/ivy-bridge.md @@ -0,0 +1,589 @@ +# Ivy Bridge + +* Supported version: 0.5.7 + +## Starting Point + +So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: + +* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. +* **The Sample.plist cannot be used As-Is**, you must configure it to your system +* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! + +Now with all that, we'll need some things to get started: + +* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore +* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS +* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download + +Now with those downloaded, we can get to really get started: + +* Grab the **Sample.plist** and rename to **config.plist** +* Open your new config.plist in ProperTree + * macOS: `ProperTree.command` + * Windows: `ProperTree.bat` +* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), + * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config + * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting + +**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** + +## ACPI + +![ACPI](https://i.imgur.com/QFsl9R1.png) + +**Add:** + +This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) + +For us we'll need a couple of SSDTs to bring back functionality that Clover provided: + +* [CPU-PM](https://github.com/Piker-Alpha/ssdtPRGen.sh) + * Needed for proper CPU power management, you will need to run Pike's ssdtPRGen.sh script to generate this file. This will be run in post install. +* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) + * Adds brightness control support +* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) + * Used for enabling Windows features in macOS, mainly needed for I2C controllers +* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) + * Creates a stub so VoodooI2C can connect + +Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. + +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. + + +**Block** + +This blocks certain ACPI tabes from loading, for us we can ignore this + +**Patch**: + +This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: + +* EC Rename + * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches +* OSI rename + * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT + +| Comment | String | Change XXXX to EC | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | xxxxxxxx | +| Replace | Data | 45435f5f | + +| Comment | String | Change _OSI to XOSI | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | 5f4f5349 | +| Replace | Data | 584f5349 | + +**Quirk**: + +Settings relating to ACPI, leave everything here as default. + +* **FadtEnableReset**: NO + * Enable reboot and shutdown on legacy hardware, not recommended unless needed +* **NormalizeHeaders**: NO + * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 +* **RebaseRegions**: NO + * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. +* **ResetHwSig**: NO + * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation +* **ResetLogoStatus**: NO + * Workaround for OEM Windows logo not drawing on systems with BGRT tables. + +## Booter + +![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) + +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi + +**MmioWhitelist**: + +This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with `DevirtualiseMmio` + +**Quirks**: + +Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` + +* **AvoidRuntimeDefrag**: YES + * Fixes UEFI runtime services like date, time, NVRAM, power control, etc +* **DevirtualiseMmio**: NO + * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems +* **DisableSingleUser**: NO + * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines +* **DisableVariableWrite**: NO + * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works +* **DiscardHibernateMap**: NO + * Reuse original hibernate memory map, only needed for certain legacy hardware +* **EnableSafeModeSlide**: YES + * Allows for slide values to be used in Safemode +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution +* **ForceExitBootServices**: NO + * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary +* **ProtectCsmRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectSecureBoot**: NO + * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems +* **ProvideCustomSlide**: YES + * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **SetupVirtualMap**: YES + * Fixes SetVirtualAddresses calls to virtual addresses +* **ShrinkMemoryMap**: NO + * Needed for systems with large memory maps that don't fit, don't use unless necessary +* **SignalAppleOS**: NO + * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used + +## DeviceProperties +![DeviceProperties](https://i.imgur.com/Aw9t9vI.png) + +**Add**: Sets device properties from a map. + +This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. + + +If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` + +The ig-platform-id's we use is as follows: + +* `0x0166000A` - this is the standard hex for the ig-plat + * `0A006601` when hex-swapped + +We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(32MB recommended) but required when not available. + +| Key | Type | Value | +| :--- | :--- | :--- | +| AAPL,ig-platform-id | Data | 0A006601 | +| framebuffer-patch-enable | Data | 01000000 | +| framebuffer-stolenmem | Data | 00003001 | + +(This is an example for a desktop HD 4000 and no BIOS options for iGPU memory) + +**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) + +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` + +* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). + +For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present + +**Block**: Removes device properties from the map, for us we can ignore this + +Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! + +## Kernel + +![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) + +**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. + +* **BundlePath** + * Name of the kext + * ex: `Lilu.kext` +* **Enabled** + * Self-explanatory, either enables or disables the kext +* **ExecutablePath** + * 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. Do note that plist only kexts do not need this filled in. + * ex: `Contents/MacOS/Lilu` +* **PlistPath** + * Path to the `info.plist` hidden within the kext + * ex: `Contents/Info.plist` + +**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons + +* **CpuidMask**: Leave this blank +* **CpuidData**: Leave this blank + +**Block**: Blocks kexts from loading. Not relevant for us + +**Patch**: Patches both the kernel and kexts + +**Quirks**: + +Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default + +* **AppleCpuPmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmExtraMsrs**: NO + * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. +* **AppleXcpmForceBoost**: NO + * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this +* **CustomSMBIOSGuid**: NO + * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops +* **DisableIoMapper**: YES + * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina +* **DummyPowerManagement**: NO + * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore +* **ExternalDiskIcons**: NO + * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. +* **IncreasePciBarSize**: NO + * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this +* **LapicKernelPanic**: NO + * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` +* **PanicNoKextDump**: YES + * Allows for reading kernel panics logs when kernel panics occur +* **PowerTimeoutKernelPanic**: YES + * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. +* **ThirdPartyDrives**: NO + * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM +* **XhciPortLimit**: YES + * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. + +The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such + +## Misc + +![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) + +**Boot**: Settings for boot screen (Leave everything as default) +* **HibernateMode**: None + * Best to avoid hibernation with Hackintoshes all together +* **PickerMode**: `Builtin` + * Sets OpenCore to use the builtin picker +* **HideAuxiliary**: NO + * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour +* **HideSelf**: YES + * Hides the EFI partition as a boot option in OC's boot picker +* **PickerAttributes**: + * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAudioAssist**: NO + * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled +* **PollAppleHotKeys**: NO + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * `Cmd+V`: Enables verbose + * `Cmd+Opt+P+R`: Cleans NVRAM + * `Cmd+R`: Boots Recovery partition + * `Cmd+S`: Boot in Single-user mode + * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key +* **TakeoffDelay**: `0` + * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support +* **Timeout**: `5` + * This sets how long OpenCore will wait until it automatically boots from the default selection + +**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) + +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues +* **Target**: `67` + * Shows more debug information, requires debug version of OpenCore +* **DisplayLevel**: `2147483714` + * Shows even more debug information, requires debug version of OpenCore + +These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) + + +**Security**: Security is pretty self-explanatory, **do not skip** + +We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` + +* **AllowNvramReset**: YES + * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` +* **AllowSetDefault**: YES + * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker +* **AuthRestart**: NO: + * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional +* **ExposeSensitiveData**: `6` + * Shows more debug information, requires debug version of OpenCore +* **Vault**: `Optional` + * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** +* **ScanPolicy**: `0` + * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** + +**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools +* **Name** + * Name shown in OpenCore +* **Enabled** + * Self-explanatory, enables or disables +* **Path** + * Path to file after the `Tools` folder + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) + +**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore + +Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info + +## NVRAM + +![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) + +**Add**: + +4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) + +* **UIScale**: + * `01`: Standard resolution(Clover equivalent is `0x28`) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) + +* **DefaultBackgroundColor**: Background color used by boot.efi + * `00000000`: Syrah Black + * `BFBFBF00`: Light Gary + +7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) + +* **boot-args**: + * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. + * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. + * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. + * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. + * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported + + +* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition + +csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: + +* `00000000` - SIP completely enabled +* `03000000` - Allow unsigned kexts and writing to protected fs locations +* `E7030000` - SIP completely disabled + +Recommended to leave enabled for best security practices + +* **nvda\_drv**: <> + * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** +* **prev-lang:kbd**: <> + * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): + * American: `en-US:0`(`656e2d55533a30` in HEX) + * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) + * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX + +| Key | Type | Value | +| :--- | :--- | :--- | +| prev-lang:kbd | String | en-US:0 | + +**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. + +**LegacyEnable**: NO +* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM + +**LegacyOverwrite**: NO +* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM + +**LegacySchema** +* Used for assigning NVRAM variables, used with LegacyEnable set to YES + +**WriteFlash**: YES +* Enables writing to flash memory for all added variables. + +## Platforminfo + +![PlatformInfo](https://i.imgur.com/5rl12dZ.png) + +For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. + +For this Ivy Bridge example, we'll chose the iMac13,2 SMBIOS - this is done intentionally for compatibility's sake. The typical breakdown is as follows: + +| SMBIOS | CPU Type | GPU Type | Display Size | +| :--- | :--- | :--- | :--- | +| MacBookAir5,1 | Dual Core 17w | iGPU: HD 4000 | 11" | +| MacBookAir5,2 | Dual Core 17w | iGPU: HD 4000 | 13" | +| MacBookPro10,1 | Quad Core 45w | iGPU: HD 4000 + dGPU: GT650M | 15" | +| MacBookPro10,2 | Dual Core 35w(High End) | iGPU: HD 4000 | 13" | + +Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: + +```text + ####################################################### + # MacBookPro10,2 SMBIOS Info # +####################################################### + +Type: MacBookPro10,2 +Serial: C02KCYZLDNCW +Board Serial: C02309301QXF2FRJC +SmUUID: A154B586-874B-4E57-A1FF-9D6E503E4580 +``` +The `Type` part gets copied to Generic -> SystemProductName. + +The `Serial` part gets copied to Generic -> SystemSerialNumber. + +The `Board Serial` part gets copied to Generic -> MLB. + +The `SmUUID` part gets copied toto Generic -> SystemUUID. + +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) + +**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** + +[Apple Check Coverage page](https://checkcoverage.apple.com) + +**Automatic**: YES + +* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections + +**Generic**: + +* **SpoofVendor**: YES + * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case +* **SupportsCsm**: NO + * Used for when the EFI partition isn't first on the windows drive + +**UpdateDataHub**: YES + +* Update Data Hub fields + +**UpdateNVRAM**: YES + +* Update NVRAM fields + +**UpdateSMBIOS**: YES + +* Updates SMBIOS fields + +**UpdateSMBIOSMode**: Create + +* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk + +## UEFI + +![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518166915481677/Screen_Shot_2020-02-29_at_8.36.55_PM.png) + +**ConnectDrivers**: YES + +* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. + +**Drivers**: Add your .efi drivers here + +Only drivers present here should be: + +* HfsPlus.efi +* ApfsDriverLoader.efi +* OpenRuntime.efi + +**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS + +* **AudioSupport**: NO + * Used for enabling the audio port out, this requires AudioOut +* **AudioDevice**: [Blank] + * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this +* **AudioCodec**: 0 + * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService +* **AudioOut**: 0 + * Specifies which output is used, use the debug log to see what your board has + * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) +* **MinimumVolume**: 20 + * Default sound level for audio output +* **PlayChime**: NO + * Emulates the iconic Mac startup sound + * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio +* **VolumeAmplifier**: 0 + * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation + +**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support + +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards +* **KeyForgetThreshold**: `5` + * The delay between each key input when holding a key down, for best results use `5` milliseconds +* **KeyMergeThreshold**: `2` + * The length of time that a key will be registered before resetting, for best results use `2` milliseconds +* **KeySupport**: `YES` + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi +* **KeySupportMode**: `Auto` + * Keyboard translation for OpenCore +* **KeySwap**: `NO` + * Swaps `Option` and `Cmd` key +* **PointerSupport**: `NO` + * Used for fixing broken pointer support, commonly used for Z87 Asus boards +* **PointerSupportMode**: + * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank +* **TimerResolution**: `50000` + * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some + +**Output**: Relating to visual output + +* **TextRenderer**: `BuiltinGraphics` + * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly +* **ConsoleMode**: [Blank] + * Specifies Console output size, best to keep it blank +* **Resolution**: `Max` + * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) +* **ClearScreenOnModeSwitch**: NO + * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer +* **IgnoreTextInGraphics**: NO + * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer +* **ProvideConsoleGop**: YES + * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** +* **DirectGopRendering**: NO + * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users +* **ReconnectOnResChange**: NO +* **ReplaceTabWithSpace**: NO + * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed +* **SanitiseClearScreen**: NO + * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer + +**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) + +* **AppleSmcIo**: NO + * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault +* **FirmwareVolume**: NO + * Fixes UI regarding Filevault, set to YES for better FileVault compatibility +* **HashServices**: NO + * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility +* **UnicodeCollation**: NO + * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) + + +**Quirks**: + +* **ExitBootServicesDelay**: `0` + * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 +* **IgnoreInvalidFlexRatio**: YES + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems +* **ReleaseUsbOwnership**: NO + * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` +* **RequestBootVarFallback**: YES + * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. +* **RequestBootVarRouting**: YES + * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. +* **UnblockFsConnect**: NO + * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed + +## Cleaning up + +And now you're ready to save and place it into your EFI under EFI/OC. + +For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: + +* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) +* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) + +**Sanity check**: + +So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: + +* [**Sanity Checker**](https://opencore.slowgeek.com) + +# Intel BIOS settings + +**Disable:** + +* Fast Boot +* VT-d(can be enabled if you set `DisableIoMapper` to YES) +* CSM +* Thunderbolt +* Intel SGX +* Intel Platform Trust +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) + +**Enable:** + +* VT-x +* Above 4G decoding +* Hyper-Threading +* Execute Disable Bit +* EHCI/XHCI Hand-off +* OS type: Windows 8.1/10 UEFI Mode +* DVMT Pre-Allocated(iGPU Memory): 32MB + +# [Post-install](/post-install/README.md) + diff --git a/config-laptop.plist/kaby-lake.md b/config-laptop.plist/kaby-lake.md new file mode 100644 index 0000000000..e16a553065 --- /dev/null +++ b/config-laptop.plist/kaby-lake.md @@ -0,0 +1,588 @@ +# Kaby Lake + +* Supported version: 0.5.7 + +## Starting Point + +So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: + +* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. +* **The Sample.plist cannot be used As-Is**, you must configure it to your system +* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! + +Now with all that, we'll need some things to get started: + +* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore +* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS +* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download + +Now with those downloaded, we can get to really get started: + +* Grab the **Sample.plist** and rename to **config.plist** +* Open your new config.plist in ProperTree + * macOS: `ProperTree.command` + * Windows: `ProperTree.bat` +* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), + * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config + * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting + +**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** + +## ACPI +![ACPI](https://i.imgur.com/IkLFucw.png) + +**Add:** + +This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) + +For us we'll need a couple of SSDTs to bring back functionality that Clover provided: + +* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) + * Allows for native CPU power management, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType`. Do note that this SSDT is made for systems where `AppleACPICPU` attaches `CPU0`, though some ACPI tables have theirs starting at `PR00` so adjust accordingly. Seeing what device has AppleACPICPU connected first in [IORegistryExplorer](https://github.com/toleda/audio_ALCInjection/raw/master/IORegistryExplorer_v2.1.zip) can also give you a hint +* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) + * Adds brightness control support +* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) + * Used for enabling Windows features in macOS, mainly needed for I2C controllers +* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) + * Creates a stub so VoodooI2C can connect + +Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. + +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. + + +**Block** + +This blocks certain ACPI tabes from loading, for us we can ignore this + +**Patch**: + +This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: + +* EC Rename + * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches +* OSI rename + * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT + +| Comment | String | Change XXXX to EC | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | xxxxxxxx | +| Replace | Data | 45435f5f | + +| Comment | String | Change _OSI to XOSI | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | 5f4f5349 | +| Replace | Data | 584f5349 | + +**Quirk**: + +Settings relating to ACPI, leave everything here as default. + +* **FadtEnableReset**: NO + * Enable reboot and shutdown on legacy hardware, not recommended unless needed +* **NormalizeHeaders**: NO + * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 +* **RebaseRegions**: NO + * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. +* **ResetHwSig**: NO + * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation +* **ResetLogoStatus**: NO + * Workaround for OEM Windows logo not drawing on systems with BGRT tables. + +## Booter + +![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) + +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi + +**MmioWhitelist**: + +This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with `DevirtualiseMmio` + +**Quirks**: + +Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` + +* **AvoidRuntimeDefrag**: YES + * Fixes UEFI runtime services like date, time, NVRAM, power control, etc +* **DevirtualiseMmio**: NO + * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems +* **DisableSingleUser**: NO + * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines +* **DisableVariableWrite**: NO + * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works +* **DiscardHibernateMap**: NO + * Reuse original hibernate memory map, only needed for certain legacy hardware +* **EnableSafeModeSlide**: YES + * Allows for slide values to be used in Safemode +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution +* **ForceExitBootServices**: NO + * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary +* **ProtectCsmRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectSecureBoot**: NO + * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems +* **ProvideCustomSlide**: YES + * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **SetupVirtualMap**: YES + * Fixes SetVirtualAddresses calls to virtual addresses +* **ShrinkMemoryMap**: NO + * Needed for systems with large memory maps that don't fit, don't use unless necessary +* **SignalAppleOS**: NO + * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used + +## DeviceProperties + +![DeviceProperties](https://i.imgur.com/zNnP5mT.png) + +**Add**: Sets device properties from a map. + +This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. + +If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` + +The two ig-platform-id's we use are as follows: + +* `0x59120000` - this is used when the Desktop iGPU is used to drive a display + * `00001259` when hex-swapped +* `0x59120003` - this is used when the Desktop iGPU is only used for computing tasks and doesn't drive a display + * `03001259` when hex-swapped + +We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. + +| Key | Type | Value | +| :--- | :--- | :--- | +| AAPL,ig-platform-id | Data | 00001259 | +| framebuffer-patch-enable | Data | 01000000 | +| framebuffer-stolenmem | Data | 00003001 | + +(This is an example for a desktop HD 630 without a dGPU and no BIOS options for iGPU memory) + +**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) + +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` + +* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). + +For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present + +**Block**: Removes device properties from the map, for us we can ignore this + +Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes + +## Kernel + +![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) + +**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. + +* **BundlePath** + * Name of the kext + * ex: `Lilu.kext` +* **Enabled** + * Self-explanatory, either enables or disables the kext +* **ExecutablePath** + * 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. Do note that plist only kexts do not need this filled in. + * ex: `Contents/MacOS/Lilu` +* **PlistPath** + * Path to the `info.plist` hidden within the kext + * ex: `Contents/Info.plist` + +**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons + +* **CpuidMask**: Leave this blank +* **CpuidData**: Leave this blank + +**Block**: Blocks kexts from loading. Not relevant for us + +**Patch**: Patches both the kernel and kexts + +**Quirks**: + +Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default + +* **AppleCpuPmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmExtraMsrs**: NO + * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. +* **AppleXcpmForceBoost**: NO + * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this +* **CustomSMBIOSGuid**: NO + * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops +* **DisableIoMapper**: YES + * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina +* **DummyPowerManagement**: NO + * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore +* **ExternalDiskIcons**: NO + * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. +* **IncreasePciBarSize**: NO + * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this +* **LapicKernelPanic**: NO + * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` +* **PanicNoKextDump**: YES + * Allows for reading kernel panics logs when kernel panics occur +* **PowerTimeoutKernelPanic**: YES + * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. +* **ThirdPartyDrives**: NO + * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM +* **XhciPortLimit**: YES + * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. + +The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such + +## Misc + +![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) + +**Boot**: Settings for boot screen (Leave everything as default) +* **HibernateMode**: None + * Best to avoid hibernation with Hackintoshes all together +* **PickerMode**: `Builtin` + * Sets OpenCore to use the builtin picker +* **HideAuxiliary**: NO + * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour +* **HideSelf**: YES + * Hides the EFI partition as a boot option in OC's boot picker +* **PickerAttributes**: + * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAudioAssist**: NO + * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled +* **PollAppleHotKeys**: NO + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * `Cmd+V`: Enables verbose + * `Cmd+Opt+P+R`: Cleans NVRAM + * `Cmd+R`: Boots Recovery partition + * `Cmd+S`: Boot in Single-user mode + * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key +* **TakeoffDelay**: `0` + * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support +* **Timeout**: `5` + * This sets how long OpenCore will wait until it automatically boots from the default selection + +**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) + +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues +* **Target**: `67` + * Shows more debug information, requires debug version of OpenCore +* **DisplayLevel**: `2147483714` + * Shows even more debug information, requires debug version of OpenCore + +These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) + + +**Security**: Security is pretty self-explanatory, **do not skip** + +We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` + +* **AllowNvramReset**: YES + * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` +* **AllowSetDefault**: YES + * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker +* **AuthRestart**: NO: + * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional +* **ExposeSensitiveData**: `6` + * Shows more debug information, requires debug version of OpenCore +* **Vault**: `Optional` + * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** +* **ScanPolicy**: `0` + * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** + +**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools +* **Name** + * Name shown in OpenCore +* **Enabled** + * Self-explanatory, enables or disables +* **Path** + * Path to file after the `Tools` folder + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) + +**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore + +Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info + +## NVRAM + +![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) + +**Add**: + +4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) + +* **UIScale**: + * `01`: Standard resolution(Clover equivalent is `0x28`) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) + +* **DefaultBackgroundColor**: Background color used by boot.efi + * `00000000`: Syrah Black + * `BFBFBF00`: Light Gary + +7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) + +* **boot-args**: + * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. + * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. + * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. + * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. + * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported + + +* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition + +csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: + +* `00000000` - SIP completely enabled +* `03000000` - Allow unsigned kexts and writing to protected fs locations +* `E7030000` - SIP completely disabled + +Recommended to leave enabled for best security practices + +* **nvda\_drv**: <> + * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** +* **prev-lang:kbd**: <> + * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): + * American: `en-US:0`(`656e2d55533a30` in HEX) + * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) + * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX + +| Key | Type | Value | +| :--- | :--- | :--- | +| prev-lang:kbd | String | en-US:0 | + +**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. + +**LegacyEnable**: NO +* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM + +**LegacyOverwrite**: NO +* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM + +**LegacySchema** +* Used for assigning NVRAM variables, used with LegacyEnable set to YES + +**WriteFlash**: YES +* Enables writing to flash memory for all added variables. + +## Platforminfo + +![PlatformInfo](https://i.imgur.com/M46vPwX.png) + +For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. + +For this Kaby Lake example, we'll chose the MacBookPro14,1 SMBIOS - this is done intentionally for compatibility's sake. The typical breakdown is as follows: + +| SMBIOS | CPU Type | GPU Type | Display Size | +| :--- | :--- | :--- | :--- | +| MacBookPro14,1 | Dual Core 15w(Low End) | iGPU: Iris Plus 640 | 13" | +| MacBookPro14,2 | Dual Core 15w(High End) | iGPU: Iris Plus 650 | 13" | +| MacBookPro14,3 | Quad Core 45w | iGPU: HD 630 + dGPU: RP555/560 | 15" | + +Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: + +```text + ####################################################### + # MacBookPro14,1 SMBIOS Info # +####################################################### + +Type: MacBookPro14,1 +Serial: C02Z2CZ5H7JY +Board Serial: C02928701GUH69FFB +SmUUID: AA043F8D-33B6-4A1A-94F7-46972AAD0607 +``` +The `Type` part gets copied to Generic -> SystemProductName. + +The `Serial` part gets copied to Generic -> SystemSerialNumber. + +The `Board Serial` part gets copied to Generic -> MLB. + +The `SmUUID` part gets copied toto Generic -> SystemUUID. + +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) + +**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** + +[Apple Check Coverage page](https://checkcoverage.apple.com) + +**Automatic**: YES + +* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections + +**Generic**: + +* **SpoofVendor**: YES + * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case +* **SupportsCsm**: NO + * Used for when the EFI partition isn't first on the windows drive + +**UpdateDataHub**: YES + +* Update Data Hub fields + +**UpdateNVRAM**: YES + +* Update NVRAM fields + +**UpdateSMBIOS**: YES + +* Updates SMBIOS fields + +**UpdateSMBIOSMode**: Create + +* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk + +## UEFI + +![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518959873425639/Screen_Shot_2020-02-29_at_8.40.06_PM.png) + +**ConnectDrivers**: YES + +* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. + +**Drivers**: Add your .efi drivers here + +Only drivers present here should be: + +* HfsPlus.efi +* ApfsDriverLoader.efi +* OpenRuntime.efi + +**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS + +* **AudioSupport**: NO + * Used for enabling the audio port out, this requires AudioOut +* **AudioDevice**: [Blank] + * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this +* **AudioCodec**: 0 + * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService +* **AudioOut**: 0 + * Specifies which output is used, use the debug log to see what your board has + * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) +* **MinimumVolume**: 20 + * Default sound level for audio output +* **PlayChime**: NO + * Emulates the iconic Mac startup sound + * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio +* **VolumeAmplifier**: 0 + * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation + +**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support + +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards +* **KeyForgetThreshold**: `5` + * The delay between each key input when holding a key down, for best results use `5` milliseconds +* **KeyMergeThreshold**: `2` + * The length of time that a key will be registered before resetting, for best results use `2` milliseconds +* **KeySupport**: `YES` + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi +* **KeySupportMode**: `Auto` + * Keyboard translation for OpenCore +* **KeySwap**: `NO` + * Swaps `Option` and `Cmd` key +* **PointerSupport**: `NO` + * Used for fixing broken pointer support, commonly used for Z87 Asus boards +* **PointerSupportMode**: + * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank +* **TimerResolution**: `50000` + * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some + +**Output**: Relating to visual output + +* **TextRenderer**: `BuiltinGraphics` + * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly +* **ConsoleMode**: [Blank] + * Specifies Console output size, best to keep it blank +* **Resolution**: `Max` + * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) +* **ClearScreenOnModeSwitch**: NO + * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer +* **IgnoreTextInGraphics**: NO + * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer +* **ProvideConsoleGop**: YES + * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** +* **DirectGopRendering**: NO + * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users +* **ReconnectOnResChange**: NO +* **ReplaceTabWithSpace**: NO + * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed +* **SanitiseClearScreen**: NO + * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer + +**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) + +* **AppleSmcIo**: NO + * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault +* **FirmwareVolume**: NO + * Fixes UI regarding Filevault, set to YES for better FileVault compatibility +* **HashServices**: NO + * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility +* **UnicodeCollation**: NO + * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) + + +**Quirks**: + +* **ExitBootServicesDelay**: `0` + * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 +* **IgnoreInvalidFlexRatio**: NO + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems +* **ReleaseUsbOwnership**: NO + * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` +* **RequestBootVarFallback**: YES + * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. +* **RequestBootVarRouting**: YES + * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. +* **UnblockFsConnect**: NO + * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed + +## Cleaning up + +And now you're ready to save and place it into your EFI under EFI/OC. + +For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: + +* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) +* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) + +**Sanity check**: + +So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: + +* [**Sanity Checker**](https://opencore.slowgeek.com) + +# Intel BIOS settings + +**Disable:** + +* Fast Boot +* VT-d(can be enabled if you set `DisableIoMapper` to YES) +* CSM +* Thunderbolt +* Intel SGX +* Intel Platform Trust +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) + +**Enable:** + +* VT-x +* Above 4G decoding +* Hyper-Threading +* Execute Disable Bit +* EHCI/XHCI Hand-off +* OS type: Windows 8.1/10 UEFI Mode +* DVMT Pre-Allocated(iGPU Memory): 64MB + +# [Post-install](/post-install/README.md) diff --git a/config-laptop.plist/skylake.md b/config-laptop.plist/skylake.md new file mode 100644 index 0000000000..6138b129dc --- /dev/null +++ b/config-laptop.plist/skylake.md @@ -0,0 +1,589 @@ +# Skylake + +* Supported version: 0.5.7 + +## Starting Point + +So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: + +* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. +* **The Sample.plist cannot be used As-Is**, you must configure it to your system +* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! + +Now with all that, we'll need some things to get started: + +* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore +* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS +* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download + +Now with those downloaded, we can get to really get started: + +* Grab the **Sample.plist** and rename to **config.plist** +* Open your new config.plist in ProperTree + * macOS: `ProperTree.command` + * Windows: `ProperTree.bat` +* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), + * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config + * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting + +**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** + +## ACPI +![ACPI](https://i.imgur.com/IkLFucw.png) + +**Add:** + +This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) + +For us we'll need a couple of SSDTs to bring back functionality that Clover provided: + +* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) + * Allows for native CPU power management, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType`. Do note that this SSDT is made for systems where `AppleACPICPU` attaches `CPU0`, though some ACPI tables have theirs starting at `PR00` so adjust accordingly. Seeing what device has AppleACPICPU connected first in [IORegistryExplorer](https://github.com/toleda/audio_ALCInjection/raw/master/IORegistryExplorer_v2.1.zip) can also give you a hint +* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) + * Adds brightness control support +* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) + * Used for enabling Windows features in macOS, mainly needed for I2C controllers +* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) + * Creates a stub so VoodooI2C can connect + +Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. + +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. + + +**Block** + +This blocks certain ACPI tabes from loading, for us we can ignore this + +**Patch**: + +This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: + +* EC Rename + * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches +* OSI rename + * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT + +| Comment | String | Change XXXX to EC | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | xxxxxxxx | +| Replace | Data | 45435f5f | + +| Comment | String | Change _OSI to XOSI | +| :--- | :--- | :--- | +| Enabled | String | YES | +| Count | Number | 0 | +| Limit | Nuber | 0 | +| Find | Data | 5f4f5349 | +| Replace | Data | 584f5349 | + +**Quirk**: + +Settings relating to ACPI, leave everything here as default. + +* **FadtEnableReset**: NO + * Enable reboot and shutdown on legacy hardware, not recommended unless needed +* **NormalizeHeaders**: NO + * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 +* **RebaseRegions**: NO + * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. +* **ResetHwSig**: NO + * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation +* **ResetLogoStatus**: NO + * Workaround for OEM Windows logo not drawing on systems with BGRT tables. + +## Booter + +![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) + +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi + +**MmioWhitelist**: + +This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with `DevirtualiseMmio` + +**Quirks**: + +Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` + +* **AvoidRuntimeDefrag**: YES + * Fixes UEFI runtime services like date, time, NVRAM, power control, etc +* **DevirtualiseMmio**: NO + * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems +* **DisableSingleUser**: NO + * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines +* **DisableVariableWrite**: NO + * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works +* **DiscardHibernateMap**: NO + * Reuse original hibernate memory map, only needed for certain legacy hardware +* **EnableSafeModeSlide**: YES + * Allows for slide values to be used in Safemode +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution +* **ForceExitBootServices**: NO + * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary +* **ProtectCsmRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectSecureBoot**: NO + * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems +* **ProvideCustomSlide**: YES + * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **SetupVirtualMap**: YES + * Fixes SetVirtualAddresses calls to virtual addresses +* **ShrinkMemoryMap**: NO + * Needed for systems with large memory maps that don't fit, don't use unless necessary +* **SignalAppleOS**: NO + * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used + +## DeviceProperties + +![DeviceProperties](https://i.imgur.com/N44BEKs.png) + +**Add**: Sets device properties from a map. + +This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. + +If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` + +The two ig-platform-id's we use are as follows: + +* `0x19120000` - this is used when the Desktop iGPU is used to drive a display + * `00001219` when hex-swapped +* `0x19120001` - this is used when the Desktop iGPU is only used for computing tasks and doesn't drive a display + * `01001219` when hex-swapped + +We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. + +| Key | Type | Value | +| :--- | :--- | :--- | +| AAPL,ig-platform-id | Data | 00001219 | +| framebuffer-patch-enable | Data | 01000000 | +| framebuffer-stolenmem | Data | 00003001 | + +(This is an example for a desktop HD 530 without a dGPU and no BIOS options for iGPU memory) + +**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) + +`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` + +* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). + +For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present + +**Block**: Removes device properties from map, for us we can ignore this + +Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! + +## Kernel + +![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) + +**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. + +* **BundlePath** + * Name of the kext + * ex: `Lilu.kext` +* **Enabled** + * Self-explanatory, either enables or disables the kext +* **ExecutablePath** + * 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. Do note that plist only kexts do not need this filled in. + * ex: `Contents/MacOS/Lilu` +* **PlistPath** + * Path to the `info.plist` hidden within the kext + * ex: `Contents/Info.plist` + +**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons + +* **CpuidMask**: Leave this blank +* **CpuidData**: Leave this blank + +**Block**: Blocks kexts from loading. Not relevant for us + +**Patch**: Patches both the kernel and kexts + +**Quirks**: + +Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default + +* **AppleCpuPmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmCfgLock**: YES + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** +* **AppleXcpmExtraMsrs**: NO + * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. +* **AppleXcpmForceBoost**: NO + * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this +* **CustomSMBIOSGuid**: NO + * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops +* **DisableIoMapper**: YES + * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina +* **DummyPowerManagement**: NO + * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore +* **ExternalDiskIcons**: NO + * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. +* **IncreasePciBarSize**: NO + * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this +* **LapicKernelPanic**: NO + * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` +* **PanicNoKextDump**: YES + * Allows for reading kernel panics logs when kernel panics occur +* **PowerTimeoutKernelPanic**: YES + * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. +* **ThirdPartyDrives**: NO + * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM +* **XhciPortLimit**: YES + * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. + +The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such + +## Misc + +![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) + +**Boot**: Settings for boot screen (Leave everything as default) +* **HibernateMode**: None + * Best to avoid hibernation with Hackintoshes all together +* **PickerMode**: `Builtin` + * Sets OpenCore to use the builtin picker +* **HideAuxiliary**: NO + * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour +* **HideSelf**: YES + * Hides the EFI partition as a boot option in OC's boot picker +* **PickerAttributes**: + * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAudioAssist**: NO + * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled +* **PollAppleHotKeys**: NO + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * `Cmd+V`: Enables verbose + * `Cmd+Opt+P+R`: Cleans NVRAM + * `Cmd+R`: Boots Recovery partition + * `Cmd+S`: Boot in Single-user mode + * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key +* **TakeoffDelay**: `0` + * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support +* **Timeout**: `5` + * This sets how long OpenCore will wait until it automatically boots from the default selection + +**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) + +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues +* **Target**: `67` + * Shows more debug information, requires debug version of OpenCore +* **DisplayLevel**: `2147483714` + * Shows even more debug information, requires debug version of OpenCore + +These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) + + +**Security**: Security is pretty self-explanatory, **do not skip** + +We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` + +* **AllowNvramReset**: YES + * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` +* **AllowSetDefault**: YES + * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker +* **AuthRestart**: NO: + * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional +* **ExposeSensitiveData**: `6` + * Shows more debug information, requires debug version of OpenCore +* **Vault**: `Optional` + * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** +* **ScanPolicy**: `0` + * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** + +**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools +* **Name** + * Name shown in OpenCore +* **Enabled** + * Self-explanatory, enables or disables +* **Path** + * Path to file after the `Tools` folder + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) + +**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore + +Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info + +## NVRAM + +![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) + +**Add**: + +4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) + +* **UIScale**: + * `01`: Standard resolution(Clover equivalent is `0x28`) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) + +* **DefaultBackgroundColor**: Background color used by boot.efi + * `00000000`: Syrah Black + * `BFBFBF00`: Light Gary + +7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) + +* **boot-args**: + * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. + * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. + * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. + * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. + * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported + + +* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition + +csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: + +* `00000000` - SIP completely enabled +* `03000000` - Allow unsigned kexts and writing to protected fs locations +* `E7030000` - SIP completely disabled + +Recommended to leave enabled for best security practices + +* **nvda\_drv**: <> + * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** +* **prev-lang:kbd**: <> + * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): + * American: `en-US:0`(`656e2d55533a30` in HEX) + * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) + * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX + +| Key | Type | Value | +| :--- | :--- | :--- | +| prev-lang:kbd | String | en-US:0 | + +**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. + +**LegacyEnable**: NO +* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM + +**LegacyOverwrite**: NO +* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM + +**LegacySchema** +* Used for assigning NVRAM variables, used with LegacyEnable set to YES + +**WriteFlash**: YES +* Enables writing to flash memory for all added variables. + +## Platforminfo + +![PlatformInfo](https://i.imgur.com/RKIXoi5.png) + +For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. + +For this Skylake example, we'll choose the MacBookPro13,1 SMBIOS. The typical breakdown is as follows: + +| SMBIOS | CPU Type | GPU Type | Display Size | +| :--- | :--- | :--- | :--- | +| MacBook9,1 | Dual Core 7w(Low End) | iGPU: HD 515 | 12" | +| MacBookPro13,1 | Dual Core 15w(Low End) | iGPU: Iris 540 | 13" | +| MacBookPro13,2 | Dual Core 15w(High End) | iGPU: Iris 550 | 13" | +| MacBookPro13,3 | Quad Core 45w | iGPU: HD 530 + dGPU: RP450/455 | 15" | + +Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: + +```text + ####################################################### + # MacBookPro13,1 SMBIOS Info # +####################################################### + +Type: MacBookPro13,1 +Serial: C02S3HYWGG7L +Board Serial: C02629102GUGPF7AD +SmUUID: 3508AD44-B67D-4AD7-A109-7955130A1033 +``` +The `Type` part gets copied to Generic -> SystemProductName. + +The `Serial` part gets copied to Generic -> SystemSerialNumber. + +The `Board Serial` part gets copied to Generic -> MLB. + +The `SmUUID` part gets copied toto Generic -> SystemUUID. + +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) + +**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** + +[Apple Check Coverage page](https://checkcoverage.apple.com) + +**Automatic**: YES + +* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections + +**Generic**: + +* **SpoofVendor**: YES + * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case +* **SupportsCsm**: NO + * Used for when the EFI partition isn't first on the windows drive + +**UpdateDataHub**: YES + +* Update Data Hub fields + +**UpdateNVRAM**: YES + +* Update NVRAM fields + +**UpdateSMBIOS**: YES + +* Updates SMBIOS fields + +**UpdateSMBIOSMode**: Create + +* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk + +## UEFI + +![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518959873425639/Screen_Shot_2020-02-29_at_8.40.06_PM.png) + +**ConnectDrivers**: YES + +* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. + +**Drivers**: Add your .efi drivers here + +Only drivers present here should be: + +* HfsPlus.efi +* ApfsDriverLoader.efi +* OpenRuntime.efi + +**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS + +* **AudioSupport**: NO + * Used for enabling the audio port out, this requires AudioOut +* **AudioDevice**: [Blank] + * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this +* **AudioCodec**: 0 + * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService +* **AudioOut**: 0 + * Specifies which output is used, use the debug log to see what your board has + * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) +* **MinimumVolume**: 20 + * Default sound level for audio output +* **PlayChime**: NO + * Emulates the iconic Mac startup sound + * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio +* **VolumeAmplifier**: 0 + * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation + +**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support + +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards +* **KeyForgetThreshold**: `5` + * The delay between each key input when holding a key down, for best results use `5` milliseconds +* **KeyMergeThreshold**: `2` + * The length of time that a key will be registered before resetting, for best results use `2` milliseconds +* **KeySupport**: `YES` + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi +* **KeySupportMode**: `Auto` + * Keyboard translation for OpenCore +* **KeySwap**: `NO` + * Swaps `Option` and `Cmd` key +* **PointerSupport**: `NO` + * Used for fixing broken pointer support, commonly used for Z87 Asus boards +* **PointerSupportMode**: + * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank +* **TimerResolution**: `50000` + * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some + +**Output**: Relating to visual output + +* **TextRenderer**: `BuiltinGraphics` + * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly +* **ConsoleMode**: [Blank] + * Specifies Console output size, best to keep it blank +* **Resolution**: `Max` + * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) +* **ClearScreenOnModeSwitch**: NO + * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer +* **IgnoreTextInGraphics**: NO + * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer +* **ProvideConsoleGop**: YES + * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** +* **DirectGopRendering**: NO + * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users +* **ReconnectOnResChange**: NO +* **ReplaceTabWithSpace**: NO + * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed +* **SanitiseClearScreen**: NO + * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer + +**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) + +* **AppleSmcIo**: NO + * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault +* **FirmwareVolume**: NO + * Fixes UI regarding Filevault, set to YES for better FileVault compatibility +* **HashServices**: NO + * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility +* **UnicodeCollation**: NO + * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) + + +**Quirks**: + +* **ExitBootServicesDelay**: `0` + * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 +* **IgnoreInvalidFlexRatio**: NO + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems +* **ReleaseUsbOwnership**: NO + * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` +* **RequestBootVarFallback**: YES + * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. +* **RequestBootVarRouting**: YES + * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. +* **UnblockFsConnect**: NO + * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed + +## Cleaning up + +And now you're ready to save and place it into your EFI under EFI/OC. + +For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: + +* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) +* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) + +**Sanity check**: + +So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: + +* [**Sanity Checker**](https://opencore.slowgeek.com) + +# Intel BIOS settings + +**Disable:** + +* Fast Boot +* VT-d(can be enabled if you set `DisableIoMapper` to YES) +* CSM +* Thunderbolt +* Intel SGX +* Intel Platform Trust +* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) + +**Enable:** + +* VT-x +* Above 4G decoding +* Hyper-Threading +* Execute Disable Bit +* EHCI/XHCI Hand-off +* OS type: Windows 8.1/10 UEFI Mode +* DVMT Pre-Allocated(iGPU Memory): 64MB + +# [Post-install](/post-install/README.md) diff --git a/config.plist/coffee-lake.md b/config.plist/coffee-lake.md index 37d66b0cc2..e4f88ad16d 100644 --- a/config.plist/coffee-lake.md +++ b/config.plist/coffee-lake.md @@ -1,7 +1,6 @@ # Coffee Lake -* Last edited: March 19, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## Starting Point diff --git a/config.plist/haswell.md b/config.plist/haswell.md index 44605cdb8d..bd6a46bb6b 100644 --- a/config.plist/haswell.md +++ b/config.plist/haswell.md @@ -1,7 +1,6 @@ # Haswell -* Last edited: March 19, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 **Both Haswell and Broadwell users can follow this** diff --git a/config.plist/ivy-bridge.md b/config.plist/ivy-bridge.md index 20adb1530c..daa3fe99b4 100644 --- a/config.plist/ivy-bridge.md +++ b/config.plist/ivy-bridge.md @@ -1,7 +1,6 @@ # Ivy Bridge -* Last edited: March 19, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## Starting Point diff --git a/config.plist/kaby-lake.md b/config.plist/kaby-lake.md index 6b590ab3c5..5f64bd286c 100644 --- a/config.plist/kaby-lake.md +++ b/config.plist/kaby-lake.md @@ -1,7 +1,6 @@ # Kaby Lake -* Last edited: March 19, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## Starting Point diff --git a/config.plist/skylake.md b/config.plist/skylake.md index a8b1e54d72..d50bbeda53 100644 --- a/config.plist/skylake.md +++ b/config.plist/skylake.md @@ -1,7 +1,6 @@ # Skylake -* Last edited: March 19, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## Starting Point diff --git a/extras/acpi.md b/extras/acpi.md index 7a7b32fbc2..f0acc972d4 100644 --- a/extras/acpi.md +++ b/extras/acpi.md @@ -1,7 +1,6 @@ # Getting started with ACPI -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 This section is dedicated to the process of both dumping and making ACPI tables. Due to the many different types of SSDT possible, the guide has been spun out into it's own. diff --git a/extras/gpu-patches.md b/extras/gpu-patches.md index 1bbcf7df5c..517350f038 100644 --- a/extras/gpu-patches.md +++ b/extras/gpu-patches.md @@ -1,7 +1,6 @@ # GPU Patching -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 This little section is for those who need more than what is provided by simple framebuffer patching and WhateverGreen's autopatches: diff --git a/extras/hardware.md b/extras/hardware.md index ce901a4cb3..b9c82d5807 100644 --- a/extras/hardware.md +++ b/extras/hardware.md @@ -1,7 +1,6 @@ # Supported hardware -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 So this little section is for those who are wanting to know whether their hardware will work in macOS diff --git a/extras/kalsr-fix.md b/extras/kalsr-fix.md index d8eddc74f7..1d32952411 100644 --- a/extras/kalsr-fix.md +++ b/extras/kalsr-fix.md @@ -1,7 +1,6 @@ # Fixing KASLR slide values -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## Fixing KASLR slide values diff --git a/extras/legacy.md b/extras/legacy.md index c0501c61a6..b5f3ab8854 100644 --- a/extras/legacy.md +++ b/extras/legacy.md @@ -1,7 +1,6 @@ # Legacy Install -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 Wanna try OpenCore but can't boot UEFI based sources? Well don't fret, there's hope for you! OpenCore supports DuetPkg which emulates a UEFI environment for legacy systems. diff --git a/extras/msr-lock.md b/extras/msr-lock.md index 01f66f6211..a7af8cbce4 100644 --- a/extras/msr-lock.md +++ b/extras/msr-lock.md @@ -1,7 +1,6 @@ # Fixing CFG Lock -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 Do note that this is only recommended for users who have already installed macOS, for users who are ibnstalling for the first time enable `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under `Kernel -> Quirks` diff --git a/installer-guide/android-install.md b/installer-guide/android-install.md index 1c1bdc334c..b4e8965065 100644 --- a/installer-guide/android-install.md +++ b/installer-guide/android-install.md @@ -1,7 +1,6 @@ # Making the installer with an Android Phone -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 (This is a joke, you can follow this but you really should just buy a $3 USB) diff --git a/installer-guide/linux-install.md b/installer-guide/linux-install.md index 5b6a6d2232..bfa74b1e0c 100644 --- a/installer-guide/linux-install.md +++ b/installer-guide/linux-install.md @@ -1,7 +1,6 @@ # Making the installer in Linux -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 diff --git a/installer-guide/mac-install.md b/installer-guide/mac-install.md index 6acfa4edd1..e5e9e32d80 100644 --- a/installer-guide/mac-install.md +++ b/installer-guide/mac-install.md @@ -1,8 +1,7 @@ # Making the installer in macOS -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 While you don't need a fresh install of macOS to use OpenCore, some users prefer having a fresh slate with their boot manager upgrades. diff --git a/installer-guide/opencore-efi.md b/installer-guide/opencore-efi.md index cd6e7abd08..0231155ac3 100644 --- a/installer-guide/opencore-efi.md +++ b/installer-guide/opencore-efi.md @@ -1,7 +1,6 @@ # Creating the USB -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 Requirements: diff --git a/installer-guide/winblows-install.md b/installer-guide/winblows-install.md index fc27468d59..a996c1b076 100644 --- a/installer-guide/winblows-install.md +++ b/installer-guide/winblows-install.md @@ -1,7 +1,6 @@ # Making the installer in Windows -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 While you don't need a fresh install of macOS to use OpenCore, some users prefer having a fresh slate with their boot manager upgrades. diff --git a/ktext.md b/ktext.md index 1cce75c318..59fc5813f5 100644 --- a/ktext.md +++ b/ktext.md @@ -1,7 +1,6 @@ # Gathering files -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 This section is for gathering miscellaneous files for booting macOS, we do expect you to know your hardware well before starting and hopefully made a Hackintosh before as we won't be deep diving in here. diff --git a/misc/credit.md b/misc/credit.md index 39700990cc..d98107e815 100644 --- a/misc/credit.md +++ b/misc/credit.md @@ -1,7 +1,6 @@ # Credit -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 No good guide is made by one man, here's credit to those who've helped out: diff --git a/post-install/README.md b/post-install/README.md index 88a5a15bdc..64ee24a1cc 100644 --- a/post-install/README.md +++ b/post-install/README.md @@ -1,7 +1,6 @@ # Post Install -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 So you've finally finsihed installing macOS with OpenCore but know there's still some things to clean up, well you've come to the right place! diff --git a/post-install/audio.md b/post-install/audio.md index 41b9c31114..8f8d323caf 100644 --- a/post-install/audio.md +++ b/post-install/audio.md @@ -1,7 +1,6 @@ # Fixing audio with AppleALC -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 So to start, we'll assume you already have Lilu and AppleALC installed, if you're unsure if it's been loaded correctly you can run the following in terminal(This will also check if AppleHDA is loaded, as without this AppleALC has nothing to patch): diff --git a/post-install/iservices.md b/post-install/iservices.md index ca3e4c6e57..86e64f1642 100644 --- a/post-install/iservices.md +++ b/post-install/iservices.md @@ -1,7 +1,6 @@ # Fixing iMessage and other services with OpenCore -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 This page is for those having iMessage and other iServices issues, this is a very basic guide so will not go as in-depth into the issues as some other guides. This specific guide is a translation and reinterpretation of the AppleLife Guide on fixing iService: [Как завести сервисы Apple - iMessage, FaceTime, iCloud](https://applelife.ru/posts/727913) diff --git a/post-install/nvram.md b/post-install/nvram.md index 06af09f2e7..41c2d4040f 100644 --- a/post-install/nvram.md +++ b/post-install/nvram.md @@ -1,7 +1,6 @@ # Emulated NVRAM -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 So this section is for those who don't have native NVRAM, the most common hardware to have incompatible native NVRAM with macOS are X99 and some X299 series chipsets: diff --git a/post-install/oc2hdd.md b/post-install/oc2hdd.md index 21165b38a1..d56fe5c0f5 100644 --- a/post-install/oc2hdd.md +++ b/post-install/oc2hdd.md @@ -1,7 +1,6 @@ # Moving OpenCore from USB to macOS Drive -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## Grabbing OpenCore off the USB diff --git a/post-install/security.md b/post-install/security.md index fe366da532..915acdf533 100644 --- a/post-install/security.md +++ b/post-install/security.md @@ -1,7 +1,6 @@ # Security and FileVault -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 So something that makes OpenCore truly special is how it's been built with security in mind which is quite rare especially in the Hackintosh community. Well here we'll be going through and setting up some of OpenCore's great Security features: diff --git a/post-install/spoof.md b/post-install/spoof.md index 78f191b6a5..1745898020 100644 --- a/post-install/spoof.md +++ b/post-install/spoof.md @@ -1,7 +1,6 @@ # Disabling GPU -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## GPU Spoof diff --git a/post-install/update.md b/post-install/update.md index 98a3060f02..dd69453db2 100644 --- a/post-install/update.md +++ b/post-install/update.md @@ -1,7 +1,6 @@ # Updating OpenCore and macOS -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 ## Updating OpenCore diff --git a/troubleshooting/debug.md b/troubleshooting/debug.md index 133605218f..7fc8031eac 100644 --- a/troubleshooting/debug.md +++ b/troubleshooting/debug.md @@ -1,7 +1,6 @@ # OpenCore Debugging -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 Needing to figure out why you're getting issues or stalling? Well, you've come to the right place. diff --git a/troubleshooting/troubleshooting.md b/troubleshooting/troubleshooting.md index 23c78fb0b5..55713e3d92 100644 --- a/troubleshooting/troubleshooting.md +++ b/troubleshooting/troubleshooting.md @@ -1,7 +1,6 @@ # General Troubleshooting -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 This section is for those having issues booting either OpenCore, macOS or having issues inside macOS. This page is devided up into a couple sections: diff --git a/troubleshooting/verbose.md b/troubleshooting/verbose.md index 37091e6118..4f317724b0 100644 --- a/troubleshooting/verbose.md +++ b/troubleshooting/verbose.md @@ -1,7 +1,6 @@ # Fixing Resolution and Verbose -* Last edited: March 15, 2020 -* Supported version: 0.5.6 +* Supported version: 0.5.7 Wanting a more clean booting experience with macOS without all that verbose text while booting? Well you need a couple things: From e6c729aea94eaabe6cd3e9e33b7ea6664dc3317a Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com> Date: Thu, 26 Mar 2020 15:12:59 -0600 Subject: [PATCH 5/8] Laptops are dumb --- config-laptop.plist/broadwell.md | 614 ----------------------- config-laptop.plist/coffee-lake-plus.md | 597 ----------------------- config-laptop.plist/coffee-lake.md | 595 ----------------------- config-laptop.plist/haswell.md | 615 ------------------------ config-laptop.plist/ivy-bridge.md | 589 ----------------------- config-laptop.plist/kaby-lake.md | 588 ---------------------- config-laptop.plist/skylake.md | 589 ----------------------- 7 files changed, 4187 deletions(-) delete mode 100644 config-laptop.plist/broadwell.md delete mode 100644 config-laptop.plist/coffee-lake-plus.md delete mode 100644 config-laptop.plist/coffee-lake.md delete mode 100644 config-laptop.plist/haswell.md delete mode 100644 config-laptop.plist/ivy-bridge.md delete mode 100644 config-laptop.plist/kaby-lake.md delete mode 100644 config-laptop.plist/skylake.md diff --git a/config-laptop.plist/broadwell.md b/config-laptop.plist/broadwell.md deleted file mode 100644 index 6b994bcb3d..0000000000 --- a/config-laptop.plist/broadwell.md +++ /dev/null @@ -1,614 +0,0 @@ -# Broadwell - -* Supported version: 0.5.7 - -## Starting Point - -So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: - -* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. -* **The Sample.plist cannot be used As-Is**, you must configure it to your system -* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! - -Now with all that, we'll need some things to get started: - -* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore -* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS -* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download - -Now with those downloaded, we can get to really get started: - -* Grab the **Sample.plist** and rename to **config.plist** -* Open your new config.plist in ProperTree - * macOS: `ProperTree.command` - * Windows: `ProperTree.bat` -* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), - * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config - * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting - -**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** - -## ACPI - -![ACPI](https://i.imgur.com/2T0ubhy.png) - - -**Add:** - -This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) - -For us we'll need a couple of SSDTs to bring back functionality that Clover provided: - -* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) - * Allows for native CPU power management, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType`. Do note that this SSDT is made for systems where `AppleACPICPU` attaches `CPU0`, though some ACPI tables have theirs starting at `PR00` so adjust accordingly. Seeing what device has AppleACPICPU connected first in [IORegistryExplorer](https://github.com/toleda/audio_ALCInjection/raw/master/IORegistryExplorer_v2.1.zip) can also give you a hint -* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) - * Adds brightness control support -* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) - * Used for enabling Windows features in macOS, mainly needed for I2C controllers -* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) - * Creates a stub so VoodooI2C can connect - -Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. - -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. - - -**Block** - -This blocks certain ACPI tabes from loading, for us we can ignore this - -**Patch**: - -This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: - -* EC Rename - * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches -* OSI rename - * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT - -| Comment | String | Change XXXX to EC | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | xxxxxxxx | -| Replace | Data | 45435f5f | - -| Comment | String | Change _OSI to XOSI | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | 5f4f5349 | -| Replace | Data | 584f5349 | - -**Quirk**: - -Settings relating to ACPI, leave everything here as default. - -* **FadtEnableReset**: NO - * Enable reboot and shutdown on legacy hardware, not recommended unless needed -* **NormalizeHeaders**: NO - * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 -* **RebaseRegions**: NO - * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. -* **ResetHwSig**: NO - * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation -* **ResetLogoStatus**: NO - * Workaround for OEM Windows logo not drawing on systems with BGRT tables. - -## Booter - -![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) - -This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi - -**MmioWhitelist**: - -This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with `DevirtualiseMmio` - -**Quirks**: - -Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` - -* **AvoidRuntimeDefrag**: YES - * Fixes UEFI runtime services like date, time, NVRAM, power control, etc -* **DevirtualiseMmio**: NO - * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems -* **DisableSingleUser**: NO - * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines -* **DisableVariableWrite**: NO - * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works -* **DiscardHibernateMap**: NO - * Reuse original hibernate memory map, only needed for certain legacy hardware -* **EnableSafeModeSlide**: YES - * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: YES - * Removes write protection from CR0 register during their execution -* **ForceExitBootServices**: NO - * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary -* **ProtectSecureBoot**: NO - * Fixes secureboot keys on MacPro5,1 and Insyde firmwares -* **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems -* **ProvideCustomSlide**: YES - * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary -* **SignalAppleOS**: NO - * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used - -## DeviceProperties - -![DeviceProperties](https://i.imgur.com/vgLIhOo.png) - -**Add**: Sets device properties from a map. - -This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. - -If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` - -The two ig-platform-id's we use are as follows: - -* `0x0D220003` - this is used when the Desktop Haswell iGPU is used to drive a display - * `0300220D` when hex-swapped -* `0x04120004` - this is used when the Desktop Haswell iGPU is only used for computing tasks and doesn't drive a display - * `04001204` when hex-swapped -* `0x0D220003` - this is used when the Desktop Broadwell iGPU - * `07002216` when hex-swapped - -I added another portion as well that shows a `device-id` fake in case you have an HD 4400 which is unsupported in macOS. - -The device-id fake is set up like so: - -* `0x04120000` - this is the device id for HD 4600 which does have support in macOS - * `12040000` when hex swapped - -We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. - -| Key | Type | Value | -| :--- | :--- | :--- | -| AAPL,ig-platform-id | Data | 0300220D | -| framebuffer-patch-enable | Data | 01000000 | -| framebuffer-stolenmem | Data | 00003001 | -| device-id | Data | 12040000 | - -(This is an example for a desktop HD 4400 without a dGPU and no BIOS options for iGPU memory) - -| Key | Type | Value | -| :--- | :--- | :--- | -| AAPL,ig-platform-id | Data | 07002216 | -| framebuffer-patch-enable | Data | 01000000 | -| framebuffer-stolenmem | Data | 00003001 | - -(This is an example for a desktop Iris Pro 6200 and no BIOS options for iGPU memory) - -**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) - -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` - -* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). - -For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present - -Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! - -**Block**: Removes device properties from the map, for us we can ignore this - -## Kernel - -![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) - -**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. - -* **BundlePath** - * Name of the kext - * ex: `Lilu.kext` -* **Enabled** - * Self-explanatory, either enables or disables the kext -* **ExecutablePath** - * 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. Do note that plist only kexts do not need this filled in. - * ex: `Contents/MacOS/Lilu` -* **PlistPath** - * Path to the `info.plist` hidden within the kext - * ex: `Contents/Info.plist` - -**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons - -* **CpuidMask**: Leave this blank -* **CpuidData**: Leave this blank - -**Block**: Blocks kexts from loading. Not relevant for us - -**Patch**: Patches both the kernel and kexts - -**Quirks**: - -Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default - -* **AppleCpuPmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmExtraMsrs**: NO - * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. -* **AppleXcpmForceBoost**: NO - * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this -* **CustomSMBIOSGuid**: NO - * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops -* **DisableIoMapper**: YES - * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina -* **DummyPowerManagement**: NO - * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore -* **ExternalDiskIcons**: NO - * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. -* **IncreasePciBarSize**: NO - * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this -* **LapicKernelPanic**: NO - * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` -* **PanicNoKextDump**: YES - * Allows for reading kernel panics logs when kernel panics occur -* **PowerTimeoutKernelPanic**: YES - * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. -* **ThirdPartyDrives**: NO - * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM -* **XhciPortLimit**: YES - * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. - -The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such - -## Misc - -![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) - -**Boot**: Settings for boot screen (Leave everything as default) -* **HibernateMode**: None - * Best to avoid hibernation with Hackintoshes all together -* **PickerMode**: `Builtin` - * Sets OpenCore to use the builtin picker -* **HideAuxiliary**: NO - * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour -* **HideSelf**: YES - * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: - * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info -* **PickerAudioAssist**: NO - * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled -* **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: - * `Cmd+V`: Enables verbose - * `Cmd+Opt+P+R`: Cleans NVRAM - * `Cmd+R`: Boots Recovery partition - * `Cmd+S`: Boot in Single-user mode - * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key -* **TakeoffDelay**: `0` - * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support -* **Timeout**: `5` - * This sets how long OpenCore will wait until it automatically boots from the default selection - -**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) - -* **AppleDebug**: YES - * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer -* **DisableWatchDog**: YES - * Disables the UEFI watchdog, can help with early boot issues -* **Target**: `67` - * Shows more debug information, requires debug version of OpenCore -* **DisplayLevel**: `2147483714` - * Shows even more debug information, requires debug version of OpenCore - -These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) - - -**Security**: Security is pretty self-explanatory, **do not skip** - -We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` - -* **AllowNvramReset**: YES - * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` -* **AllowSetDefault**: YES - * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker -* **AuthRestart**: NO: - * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional -* **ExposeSensitiveData**: `6` - * Shows more debug information, requires debug version of OpenCore -* **Vault**: `Optional` - * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** -* **ScanPolicy**: `0` - * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** - -**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools -* **Name** - * Name shown in OpenCore -* **Enabled** - * Self-explanatory, enables or disables -* **Path** - * Path to file after the `Tools` folder - * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) - -**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore - -Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info - -## NVRAM - -![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) - -**Add**: - -4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) - -* **UIScale**: - * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) - -* **DefaultBackgroundColor**: Background color used by boot.efi - * `00000000`: Syrah Black - * `BFBFBF00`: Light Gary - -7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) - -* **boot-args**: - * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. - * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. - * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. - * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. - * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported - - -* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition - -csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: - -* `00000000` - SIP completely enabled -* `03000000` - Allow unsigned kexts and writing to protected fs locations -* `E7030000` - SIP completely disabled - -Recommended to leave enabled for best security practices - -* **nvda\_drv**: <> - * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> - * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): - * American: `en-US:0`(`656e2d55533a30` in HEX) - * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) - * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX - -| Key | Type | Value | -| :--- | :--- | :--- | -| prev-lang:kbd | String | en-US:0 | - -**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. - -**LegacyEnable**: NO -* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM - -**LegacyOverwrite**: NO -* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM - -**LegacySchema** -* Used for assigning NVRAM variables, used with LegacyEnable set to YES - -**WriteFlash**: YES -* Enables writing to flash memory for all added variables. - -## Platforminfo - -![PlatformInfo](https://i.imgur.com/XlxjsAd.png) - -For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. - -For this Broadwell example, we chose the MacBookPro12,1 SMBIOS. The typical breakdown is as follows: - -| SMBIOS | CPU Type | GPU Type | Display Size | -| :--- | :--- | :--- | :--- | -| MacBook8,1 | Dual Core 7w(Low End) | iGPU: HD 5300 | 12" | -| MacBookAir7,1 | Dual Core 15w | iGPU: HD 6000 | 11" | -| MacBookAir7,2 | Dual Core 15w | iGPU: HD 6000 | 13" | -| MacBookPro12,1 | Dual Core 28w(High End) | iGPU: Iris 6100 | 13" | -| MacBookPro11,2 | Quad Core 45w | iGPU: Iris Pro 5200 | 15" | -| MacBookPro11,3 | Quad Core 45w | iGPU: Iris Pro 5200 + dGPU: GT750M | 15" | -| MacBookPro11,4 | Quad Core 45w | iGPU: Iris Pro 5200 | 15" | -| MacBookPro11,5 | Quad Core 45w | iGPU: Iris Pro 5200 + dGPU: R9 M370X | 15" | - -Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: - -```text - ####################################################### - # MacBookPro12,1 SMBIOS Info # -####################################################### - -Type: MacBookPro12,1 -Serial: C02M9SYJFY10 -Board Serial: C02408101J9G2Y7A8 -SmUUID: 7B227BEC-660D-405F-8E60-411B3E4EF055 -``` -The `Type` part gets copied to Generic -> SystemProductName. - -The `Serial` part gets copied to Generic -> SystemSerialNumber. - -The `Board Serial` part gets copied to Generic -> MLB. - -The `SmUUID` part gets copied toto Generic -> SystemUUID. - -We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) - -**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** - -[Apple Check Coverage page](https://checkcoverage.apple.com) - -**Automatic**: YES - -* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections - -**Generic**: - -* **SpoofVendor**: YES - * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case -* **SupportsCsm**: NO - * Used for when the EFI partition isn't first on the windows drive - -**UpdateDataHub**: YES - -* Update Data Hub fields - -**UpdateNVRAM**: YES - -* Update NVRAM fields - -**UpdateSMBIOS**: YES - -* Updates SMBIOS fields - -**UpdateSMBIOSMode**: Create - -* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk - -## UEFI - -![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518166915481677/Screen_Shot_2020-02-29_at_8.36.55_PM.png) - -**ConnectDrivers**: YES - -* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. - -**Drivers**: Add your .efi drivers here - -Only drivers present here should be: - -* HfsPlus.efi -* ApfsDriverLoader.efi -* OpenRuntime.efi - -**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS - -* **AudioSupport**: NO - * Used for enabling the audio port out, this requires AudioOut -* **AudioDevice**: [Blank] - * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this -* **AudioCodec**: 0 - * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService -* **AudioOut**: 0 - * Specifies which output is used, use the debug log to see what your board has - * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) -* **MinimumVolume**: 20 - * Default sound level for audio output -* **PlayChime**: NO - * Emulates the iconic Mac startup sound - * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio -* **VolumeAmplifier**: 0 - * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation - -**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support - -* **KeyFiltering**: NO - * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards -* **KeyForgetThreshold**: `5` - * The delay between each key input when holding a key down, for best results use `5` milliseconds -* **KeyMergeThreshold**: `2` - * The length of time that a key will be registered before resetting, for best results use `2` milliseconds -* **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi -* **KeySupportMode**: `Auto` - * Keyboard translation for OpenCore -* **KeySwap**: `NO` - * Swaps `Option` and `Cmd` key -* **PointerSupport**: `NO` - * Used for fixing broken pointer support, commonly used for Z87 Asus boards -* **PointerSupportMode**: - * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank -* **TimerResolution**: `50000` - * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some - -**Output**: Relating to visual output - -* **TextRenderer**: `BuiltinGraphics` - * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly -* **ConsoleMode**: [Blank] - * Specifies Console output size, best to keep it blank -* **Resolution**: `Max` - * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) -* **ClearScreenOnModeSwitch**: NO - * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer -* **IgnoreTextInGraphics**: NO - * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer -* **ProvideConsoleGop**: YES - * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** -* **DirectGopRendering**: NO - * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users -* **ReconnectOnResChange**: NO -* **ReplaceTabWithSpace**: NO - * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed -* **SanitiseClearScreen**: NO - * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer - -**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) - -* **AppleSmcIo**: NO - * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault -* **FirmwareVolume**: NO - * Fixes UI regarding Filevault, set to YES for better FileVault compatibility -* **HashServices**: NO - * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility -* **UnicodeCollation**: NO - * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) - - -**Quirks**: - -* **ExitBootServicesDelay**: `0` - * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 -* **IgnoreInvalidFlexRatio**: YES - * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems -* **ReleaseUsbOwnership**: NO - * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` -* **RequestBootVarFallback**: YES - * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. -* **RequestBootVarRouting**: YES - * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. -* **UnblockFsConnect**: NO - * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed - -## Cleaning up - -And now you're ready to save and place it into your EFI under EFI/OC. - -For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: - -* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) -* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) - -**Sanity check**: - -So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: - -* [**Sanity Checker**](https://opencore.slowgeek.com) - -# Intel BIOS settings - -**Disable:** - -* Fast Boot -* VT-d(can be enabled if you set `DisableIoMapper` to YES) -* CSM -* Thunderbolt -* Intel SGX -* Intel Platform Trust -* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) - -**Enable:** - -* VT-x -* Above 4G decoding -* Hyper-Threading -* Execute Disable Bit -* EHCI/XHCI Hand-off -* OS type: Windows 8.1/10 UEFI Mode -* DVMT Pre-Allocated(iGPU Memory): 64MB - -# [Post-install](/post-install/README.md) - diff --git a/config-laptop.plist/coffee-lake-plus.md b/config-laptop.plist/coffee-lake-plus.md deleted file mode 100644 index 902b78bce5..0000000000 --- a/config-laptop.plist/coffee-lake-plus.md +++ /dev/null @@ -1,597 +0,0 @@ -# Coffee Lake Plus - -* Supported version: 0.5.7 - -## Starting Point - -So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: - -* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. -* **The Sample.plist cannot be used As-Is**, you must configure it to your system -* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! - -Now with all that, we'll need some things to get started: - -* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore -* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS -* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download - -Now with those downloaded, we can get to really get started: - -* Grab the **Sample.plist** and rename to **config.plist** -* Open your new config.plist in ProperTree - * macOS: `ProperTree.command` - * Windows: `ProperTree.bat` -* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), - * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config - * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting - -**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** - -## ACPI - -![ACPI](https://i.imgur.com/IkLFucw.png) - -**Add:** - -This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) - -For us we'll need a couple of SSDTs to bring back functionality that Clover provided: -* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) - * Allows for native CPU power management on Haswell and newer, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType` -* [SSDT-AWAC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-AWAC.dsl) - * This is the [300 series RTC patch](https://www.hackintosh-forum.de/forum/thread/39846-asrock-z390-taichi-ultimate/?pageNo=2), required for 9t gen and newer boards which prevent systems from booting macOS. The alternative is [SSDT-RTC0](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-RTC0.dsl) for when AWAC SSDT is incompatible due to missing the Legacy RTC clock, to check whether you need it and which to use please see [Getting started with ACPI](https://khronokernel.github.io/Getting-Started-With-ACPI/) page. -* [SSDT-PMC](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PMC.dsl) - * 9th gen and newer don't declare the FW chip as MMIO in ACPI and so XNU ignores the MMIO region declared by the UEFI memory map. This SSDT brings back NVRAM support and uses the scope `PCI0.LPCB`, this is the most common scope so a pre-made can be found here: [SSDT-PMC.aml](https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extra-files/SSDT-PMC.aml) -* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) - * Adds brightness control support -* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) - * Used for enabling Windows features in macOS, mainly needed for I2C controllers -* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) - * Creates a stub so VoodooI2C can connect - - -Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. - -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. - - -**Block** - -This blocks certain ACPI tabes from loading, for us we can ignore this - -**Patch**: - -This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: - -* EC Rename - * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers (Laptop) Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches -* OSI rename - * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT - -| Comment | String | Change XXXX to EC | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | xxxxxxxx | -| Replace | Data | 45435f5f | - -| Comment | String | Change _OSI to XOSI | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | 5f4f5349 | -| Replace | Data | 584f5349 | - -**Quirk**: - -Settings relating to ACPI, leave everything here as default. - -* **FadtEnableReset**: NO - * Enable reboot and shutdown on legacy hardware, not recommended unless needed -* **NormalizeHeaders**: NO - * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 -* **RebaseRegions**: NO - * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. -* **ResetHwSig**: NO - * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation -* **ResetLogoStatus**: NO - * Workaround for OEM Windows logo not drawing on systems with BGRT tables. - -## Booter - -![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) - -This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi - -**MmioWhitelist**: - -This section is allowing devices to be passthrough to macOS that are generally ignored, for us we can ignore this section. - -**Quirks**: - -Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio` and `SetupVirtualMap` - -* **AvoidRuntimeDefrag**: YES - * Fixes UEFI runtime services like date, time, NVRAM, power control, etc -* **DevirtualiseMmio**: YES - * Reduces Stolen Memory Footprint, expands options for `slide=N` values and very helpful with fixing Memory Allocation issues on Z390. Requires `ProtectUefiServices` as well on IceLake and Z390 Coffeelake -* **DisableSingleUser**: NO - * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines -* **DisableVariableWrite**: NO - * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works -* **DiscardHibernateMap**: NO - * Reuse original hibernate memory map, only needed for certain legacy hardware -* **EnableSafeModeSlide**: YES - * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: YES - * Removes write protection from CR0 register during their execution -* **ForceExitBootServices**: NO - * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary -* **ProtectSecureBoot**: NO - * Fixes secureboot keys on MacPro5,1 and Insyde firmwares -* **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and Z390 systems' - * If on Z390, **enable this quirk** -* **ProvideCustomSlide**: YES - * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary -* **SignalAppleOS**: NO - * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used - -## DeviceProperties - -![DeviceProperties](https://i.imgur.com/kHKNvgl.png) - -**Add**: Sets device properties from a map. - -This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. - -If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` - -The two ig-platform-id's we use are as follows: - -* `0x3E9B0007` - this is used when the Desktop iGPU is used to drive a display - * `07009B3E` when hex-swapped -* `0x3E920003` - this is used when the Desktop iGPU is only used for computing tasks and doesn't drive a display - * `0300923E` when hex-swapped - -Worth noting that for 10.12 -> 10.13.5, you would need to fake the iGPU to the same values in the Kaby Lake guide, as this was before native Coffee Lake iGPU showed up. 10.13.6 natively supports Coffee Lake - -We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. - -For users with black screen issues after verbose on B360, B365, H310, H370, Z390, please see the [BusID iGPU patching](/extras/gpu-patches.md#iGPU-BusID-Patching) page - -| Key | Type | Value | -| :--- | :--- | :--- | -| AAPL,ig-platform-id | Data | 07009B3E | -| framebuffer-patch-enable | Data | 01000000 | -| framebuffer-stolenmem | Data | 00003001 | - -(This is an example for a desktop UHD 630 without a dGPU and no BIOS options for iGPU memory) - -**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) - -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` - -* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). - -For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present - -Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! - -**Block**: Removes device properties from the map, for us we can ignore this - -## Kernel - -![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) - -**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. - -* **BundlePath** - * Name of the kext - * ex: `Lilu.kext` -* **Enabled** - * Self-explanatory, either enables or disables the kext -* **ExecutablePath** - * 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. Do note that plist only kexts do not need this filled in. - * ex: `Contents/MacOS/Lilu` -* **PlistPath** - * Path to the `info.plist` hidden within the kext - * ex: `Contents/Info.plist` - -**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons - -* **CpuidMask**: Leave this blank -* **CpuidData**: Leave this blank - -**Block**: Blocks kexts from loading. Not relevant for us - -**Patch**: Patches both the kernel and kexts - -**Quirks**: - -Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default - -* **AppleCpuPmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmExtraMsrs**: NO - * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. -* **AppleXcpmForceBoost**: NO - * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this -* **CustomSMBIOSGuid**: NO - * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops -* **DisableIoMapper**: YES - * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina -* **DummyPowerManagement**: NO - * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore -* **ExternalDiskIcons**: NO - * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. -* **IncreasePciBarSize**: NO - * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this -* **LapicKernelPanic**: NO - * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` -* **PanicNoKextDump**: YES - * Allows for reading kernel panics logs when kernel panics occur -* **PowerTimeoutKernelPanic**: YES - * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. -* **ThirdPartyDrives**: NO - * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM -* **XhciPortLimit**: YES - * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. - -The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such - -## Misc - -![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) - -**Boot**: Settings for boot screen (Leave everything as default) -* **HibernateMode**: None - * Best to avoid hibernation with Hackintoshes all together -* **PickerMode**: `Builtin` - * Sets OpenCore to use the builtin picker -* **HideAuxiliary**: NO - * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour -* **HideSelf**: YES - * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: - * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info -* **PickerAudioAssist**: NO - * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled -* **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: - * `Cmd+V`: Enables verbose - * `Cmd+Opt+P+R`: Cleans NVRAM - * `Cmd+R`: Boots Recovery partition - * `Cmd+S`: Boot in Single-user mode - * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key -* **TakeoffDelay**: `0` - * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support -* **Timeout**: `5` - * This sets how long OpenCore will wait until it automatically boots from the default selection - -**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) - -* **AppleDebug**: YES - * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer -* **DisableWatchDog**: YES - * Disables the UEFI watchdog, can help with early boot issues -* **Target**: `67` - * Shows more debug information, requires debug version of OpenCore -* **DisplayLevel**: `2147483714` - * Shows even more debug information, requires debug version of OpenCore - -These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) - - -**Security**: Security is pretty self-explanatory, **do not skip** - -We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` - -* **AllowNvramReset**: YES - * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` -* **AllowSetDefault**: YES - * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker -* **AuthRestart**: NO: - * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional -* **ExposeSensitiveData**: `6` - * Shows more debug information, requires debug version of OpenCore -* **Vault**: `Optional` - * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** -* **ScanPolicy**: `0` - * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** - -**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools -* **Name** - * Name shown in OpenCore -* **Enabled** - * Self-explanatory, enables or disables -* **Path** - * Path to file after the `Tools` folder - * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) - -**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore - -Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info - -## NVRAM - -![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) - -**Add**: - -4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) - -* **UIScale**: - * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) - -* **DefaultBackgroundColor**: Background color used by boot.efi - * `00000000`: Syrah Black - * `BFBFBF00`: Light Gary - -7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) - -* **boot-args**: - * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. - * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. - * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. - * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. - * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported - - -* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition - -csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: - -* `00000000` - SIP completely enabled -* `03000000` - Allow unsigned kexts and writing to protected fs locations -* `E7030000` - SIP completely disabled - -Recommended to leave enabled for best security practices - -* **nvda\_drv**: <> - * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> - * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): - * American: `en-US:0`(`656e2d55533a30` in HEX) - * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) - * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX - -| Key | Type | Value | -| :--- | :--- | :--- | -| prev-lang:kbd | String | en-US:0 | - -**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. - -**LegacyEnable**: NO -* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM - -**LegacyOverwrite**: NO -* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM - -**LegacySchema** -* Used for assigning NVRAM variables, used with LegacyEnable set to YES - -**WriteFlash**: YES -* Enables writing to flash memory for all added variables. - -## Platforminfo - -![PlatformInfo](https://i.imgur.com/JpLxh35.png) - -For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. - -For this Coffee Lake Plus example, I chose the MacBookPro16,1 SMBIOS - this is done intentionally for compatibility's sake. The breakdown is as follows: - -| SMBIOS | CPU Type | GPU Type | Display Size | -| :--- | :--- | :--- | :--- | -| MacBookPro16,1 | Hexa/Octa Core 45w | iGPU: UHD 630 + dGPU: 5300/5500M | 15" | -| MacBookPro15,2 | Quad Core 15w | iGPU: Iris 655 | 13" | - -Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: - -```text - ####################################################### - # MacBookPro16,1 SMBIOS Info # -####################################################### - -Type: MacBookPro16,1 -Serial: C02XG0FDH7JY -Board Serial: C02839303QXH69FJA -SmUUID: DBB364D6-44B2-4A02-B922-AB4396F16DA8 -``` -The `Type` part gets copied to Generic -> SystemProductName. - -The `Serial` part gets copied to Generic -> SystemSerialNumber. - -The `Board Serial` part gets copied to Generic -> MLB. - -The `SmUUID` part gets copied toto Generic -> SystemUUID. - -We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) - -**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** - -[Apple Check Coverage page](https://checkcoverage.apple.com) - -**Automatic**: YES - -* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections - -**Generic**: - -* **SpoofVendor**: YES - * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case -* **SupportsCsm**: NO - * Used for when the EFI partition isn't first on the windows drive - -**UpdateDataHub**: YES - -* Update Data Hub fields - -**UpdateNVRAM**: YES - -* Update NVRAM fields - -**UpdateSMBIOS**: YES - -* Updates SMBIOS fields - -**UpdateSMBIOSMode**: Create - -* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk - -## UEFI - -![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518959873425639/Screen_Shot_2020-02-29_at_8.40.06_PM.png) - -**ConnectDrivers**: YES - -* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. - -**Drivers**: Add your .efi drivers here - -Only drivers present here should be: - -* HfsPlus.efi -* ApfsDriverLoader.efi -* OpenRuntime.efi - -**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS - -* **AudioSupport**: NO - * Used for enabling the audio port out, this requires AudioOut -* **AudioDevice**: [Blank] - * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this -* **AudioCodec**: 0 - * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService -* **AudioOut**: 0 - * Specifies which output is used, use the debug log to see what your board has - * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) -* **MinimumVolume**: 20 - * Default sound level for audio output -* **PlayChime**: NO - * Emulates the iconic Mac startup sound - * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio -* **VolumeAmplifier**: 0 - * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation - -**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support - -* **KeyFiltering**: NO - * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards -* **KeyForgetThreshold**: `5` - * The delay between each key input when holding a key down, for best results use `5` milliseconds -* **KeyMergeThreshold**: `2` - * The length of time that a key will be registered before resetting, for best results use `2` milliseconds -* **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi -* **KeySupportMode**: `Auto` - * Keyboard translation for OpenCore -* **KeySwap**: `NO` - * Swaps `Option` and `Cmd` key -* **PointerSupport**: `NO` - * Used for fixing broken pointer support, commonly used for Z87 Asus boards -* **PointerSupportMode**: - * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank -* **TimerResolution**: `50000` - * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some - -**Output**: Relating to visual output - -* **TextRenderer**: `BuiltinGraphics` - * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly -* **ConsoleMode**: [Blank] - * Specifies Console output size, best to keep it blank -* **Resolution**: `Max` - * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) -* **ClearScreenOnModeSwitch**: NO - * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer -* **IgnoreTextInGraphics**: NO - * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer -* **ProvideConsoleGop**: YES - * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** -* **DirectGopRendering**: NO - * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users -* **ReconnectOnResChange**: NO -* **ReplaceTabWithSpace**: NO - * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed -* **SanitiseClearScreen**: NO - * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer - -**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) - -* **AppleSmcIo**: NO - * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault -* **FirmwareVolume**: NO - * Fixes UI regarding Filevault, set to YES for better FileVault compatibility -* **HashServices**: NO - * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility -* **UnicodeCollation**: NO - * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) - - -**Quirks**: - -* **ExitBootServicesDelay**: `0` - * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 -* **IgnoreInvalidFlexRatio**: NO - * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems -* **ReleaseUsbOwnership**: NO - * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` -* **RequestBootVarFallback**: YES - * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. -* **RequestBootVarRouting**: YES - * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. -* **UnblockFsConnect**: NO - * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed - -## Cleaning up - -And now you're ready to save and place it into your EFI under EFI/OC. - -For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: - -* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) -* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) - -**Sanity check**: - -So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: - -* [**Sanity Checker**](https://opencore.slowgeek.com) - -# Intel BIOS settings - -**Disable:** - -* Fast Boot -* VT-d(can be enabled if you set `DisableIoMapper` to YES) -* CSM -* Thunderbolt -* Intel SGX -* Intel Platform Trust -* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) - -**Enable:** - -* VT-x -* Above 4G decoding -* Hyper-Threading -* Execute Disable Bit -* EHCI/XHCI Hand-off -* OS type: Windows 8.1/10 UEFI Mode -* DVMT Pre-Allocated(iGPU Memory): 64MB - -# [Post-install](/post-install/README.md) diff --git a/config-laptop.plist/coffee-lake.md b/config-laptop.plist/coffee-lake.md deleted file mode 100644 index 2e3d94e4d4..0000000000 --- a/config-laptop.plist/coffee-lake.md +++ /dev/null @@ -1,595 +0,0 @@ -# Coffee Lake - -* Supported version: 0.5.7 - -## Starting Point - -So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: - -* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. -* **The Sample.plist cannot be used As-Is**, you must configure it to your system -* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! - -Now with all that, we'll need some things to get started: - -* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore -* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS -* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download - -Now with those downloaded, we can get to really get started: - -* Grab the **Sample.plist** and rename to **config.plist** -* Open your new config.plist in ProperTree - * macOS: `ProperTree.command` - * Windows: `ProperTree.bat` -* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), - * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config - * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting - -**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** - -## ACPI - -![ACPI](https://i.imgur.com/IkLFucw.png) - -**Add:** - -This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) - -For us we'll need a couple of SSDTs to bring back functionality that Clover provided: - -* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) - * Allows for native CPU power management, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType`. Do note that this SSDT is made for systems where `AppleACPICPU` attaches `CPU0`, though some ACPI tables have theirs starting at `PR00` so adjust accordingly. Seeing what device has AppleACPICPU connected first in [IORegistryExplorer](https://github.com/toleda/audio_ALCInjection/raw/master/IORegistryExplorer_v2.1.zip) can also give you a hint -* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) - * Adds brightness control support -* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) - * Used for enabling Windows features in macOS, mainly needed for I2C controllers -* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) - * Creates a stub so VoodooI2C can connect - -Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. - -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. - - -**Block** - -This blocks certain ACPI tabes from loading, for us we can ignore this - -**Patch**: - -This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: - -* EC Rename - * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches -* OSI rename - * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT - -| Comment | String | Change XXXX to EC | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | xxxxxxxx | -| Replace | Data | 45435f5f | - -| Comment | String | Change _OSI to XOSI | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | 5f4f5349 | -| Replace | Data | 584f5349 | - -**Quirk**: - -Settings relating to ACPI, leave everything here as default. - -* **FadtEnableReset**: NO - * Enable reboot and shutdown on legacy hardware, not recommended unless needed -* **NormalizeHeaders**: NO - * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 -* **RebaseRegions**: NO - * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. -* **ResetHwSig**: NO - * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation -* **ResetLogoStatus**: NO - * Workaround for OEM Windows logo not drawing on systems with BGRT tables. - -## Booter - -![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) - -This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi - -**MmioWhitelist**: - -This section is allowing devices to be passthrough to macOS that are generally ignored, for us we can ignore this section. - -**Quirks**: - -Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio` and `SetupVirtualMap` - -* **AvoidRuntimeDefrag**: YES - * Fixes UEFI runtime services like date, time, NVRAM, power control, etc -* **DevirtualiseMmio**: YES - * Reduces Stolen Memory Footprint, expands options for `slide=N` values and very helpful with fixing Memory Allocation issues on Z390. Requires `ProtectUefiServices` as well on IceLake and Z390 Coffeelake -* **DisableSingleUser**: NO - * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines -* **DisableVariableWrite**: NO - * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works -* **DiscardHibernateMap**: NO - * Reuse original hibernate memory map, only needed for certain legacy hardware -* **EnableSafeModeSlide**: YES - * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: YES - * Removes write protection from CR0 register during their execution -* **ForceExitBootServices**: NO - * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary -* **ProtectSecureBoot**: NO - * Fixes secureboot keys on MacPro5,1 and Insyde firmwares -* **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and Z390 systems' - * If on Z390, **enable this quirk** -* **ProvideCustomSlide**: YES - * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary -* **SignalAppleOS**: NO - * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used - -## DeviceProperties - -![DeviceProperties](https://i.imgur.com/kHKNvgl.png) - -**Add**: Sets device properties from a map. - -This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. - -If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` - -The two ig-platform-id's we use are as follows: - -* `0x3E9B0007` - this is used when the Desktop iGPU is used to drive a display - * `07009B3E` when hex-swapped -* `0x3E920003` - this is used when the Desktop iGPU is only used for computing tasks and doesn't drive a display - * `0300923E` when hex-swapped - -Worth noting that for 10.12 -> 10.13.5, you would need to fake the iGPU to the same values in the Kaby Lake guide, as this was before native Coffee Lake iGPU showed up. 10.13.6 natively supports Coffee Lake - -We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. - -For users with black screen issues after verbose on B360, B365, H310, H370, Z390, please see the [BusID iGPU patching](/extras/gpu-patches.md#iGPU-BusID-Patching) page - -| Key | Type | Value | -| :--- | :--- | :--- | -| AAPL,ig-platform-id | Data | 07009B3E | -| framebuffer-patch-enable | Data | 01000000 | -| framebuffer-stolenmem | Data | 00003001 | - -(This is an example for a desktop UHD 630 without a dGPU and no BIOS options for iGPU memory) - -**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) - -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` - -* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). - -For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present - -Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! - -**Block**: Removes device properties from the map, for us we can ignore this - -## Kernel - -![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) - -**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. - -* **BundlePath** - * Name of the kext - * ex: `Lilu.kext` -* **Enabled** - * Self-explanatory, either enables or disables the kext -* **ExecutablePath** - * 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. Do note that plist only kexts do not need this filled in. - * ex: `Contents/MacOS/Lilu` -* **PlistPath** - * Path to the `info.plist` hidden within the kext - * ex: `Contents/Info.plist` - -**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons - -* **CpuidMask**: Leave this blank -* **CpuidData**: Leave this blank - -**Block**: Blocks kexts from loading. Not relevant for us - -**Patch**: Patches both the kernel and kexts - -**Quirks**: - -Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default - -* **AppleCpuPmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmExtraMsrs**: NO - * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. -* **AppleXcpmForceBoost**: NO - * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this -* **CustomSMBIOSGuid**: NO - * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops -* **DisableIoMapper**: YES - * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina -* **DummyPowerManagement**: NO - * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore -* **ExternalDiskIcons**: NO - * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. -* **IncreasePciBarSize**: NO - * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this -* **LapicKernelPanic**: NO - * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` -* **PanicNoKextDump**: YES - * Allows for reading kernel panics logs when kernel panics occur -* **PowerTimeoutKernelPanic**: YES - * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. -* **ThirdPartyDrives**: NO - * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM -* **XhciPortLimit**: YES - * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. - -The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such - -## Misc - -![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) - -**Boot**: Settings for boot screen (Leave everything as default) -* **HibernateMode**: None - * Best to avoid hibernation with Hackintoshes all together -* **PickerMode**: `Builtin` - * Sets OpenCore to use the builtin picker -* **HideAuxiliary**: NO - * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour -* **HideSelf**: YES - * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: - * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info -* **PickerAudioAssist**: NO - * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled -* **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: - * `Cmd+V`: Enables verbose - * `Cmd+Opt+P+R`: Cleans NVRAM - * `Cmd+R`: Boots Recovery partition - * `Cmd+S`: Boot in Single-user mode - * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key -* **TakeoffDelay**: `0` - * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support -* **Timeout**: `5` - * This sets how long OpenCore will wait until it automatically boots from the default selection - -**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) - -* **AppleDebug**: YES - * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer -* **DisableWatchDog**: YES - * Disables the UEFI watchdog, can help with early boot issues -* **Target**: `67` - * Shows more debug information, requires debug version of OpenCore -* **DisplayLevel**: `2147483714` - * Shows even more debug information, requires debug version of OpenCore - -These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) - - -**Security**: Security is pretty self-explanatory, **do not skip** - -We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` - -* **AllowNvramReset**: YES - * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` -* **AllowSetDefault**: YES - * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker -* **AuthRestart**: NO: - * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional -* **ExposeSensitiveData**: `6` - * Shows more debug information, requires debug version of OpenCore -* **Vault**: `Optional` - * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** -* **ScanPolicy**: `0` - * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** - -**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools -* **Name** - * Name shown in OpenCore -* **Enabled** - * Self-explanatory, enables or disables -* **Path** - * Path to file after the `Tools` folder - * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) - -**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore - -Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info - -## NVRAM - -![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) - -**Add**: - -4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) - -* **UIScale**: - * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) - -* **DefaultBackgroundColor**: Background color used by boot.efi - * `00000000`: Syrah Black - * `BFBFBF00`: Light Gary - -7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) - -* **boot-args**: - * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. - * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. - * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. - * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. - * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported - - -* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition - -csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: - -* `00000000` - SIP completely enabled -* `03000000` - Allow unsigned kexts and writing to protected fs locations -* `E7030000` - SIP completely disabled - -Recommended to leave enabled for best security practices - -* **nvda\_drv**: <> - * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> - * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): - * American: `en-US:0`(`656e2d55533a30` in HEX) - * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) - * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX - -| Key | Type | Value | -| :--- | :--- | :--- | -| prev-lang:kbd | String | en-US:0 | - -**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. - -**LegacyEnable**: NO -* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM - -**LegacyOverwrite**: NO -* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM - -**LegacySchema** -* Used for assigning NVRAM variables, used with LegacyEnable set to YES - -**WriteFlash**: YES -* Enables writing to flash memory for all added variables. - -## Platforminfo - -![PlatformInfo](https://i.imgur.com/JpLxh35.png) - -For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. - -For this Coffee Lake example, I chose the MacBookPro15,1 SMBIOS - this is done intentionally for compatibility's sake. The breakdown is as follows: - -| SMBIOS | CPU Type | GPU Type | Display Size | -| :--- | :--- | :--- | :--- | -| MacBookPro15,1 | Hexa Core 45w | iGPU: UHD 630 + dGPU: RP555/560X | 15" | -| MacBookPro15,2 | Quad Core 15w | iGPU: Iris 655 | 13" | -| MacBookPro15,3 | Hexa Core 45w | iGPU: UHD 630 + dGPU: Vega16/20 | 15" | -| MacBookPro15,4 | Quad Core 15w | iGPU: Iris 645 | 13" | - -Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: - -```text - ####################################################### - # MacBookPro15,1 SMBIOS Info # -####################################################### - -Type: MacBookPro15,1 -Serial: C02XG0FDH7JY -Board Serial: C02839303QXH69FJA -SmUUID: DBB364D6-44B2-4A02-B922-AB4396F16DA8 -``` -The `Type` part gets copied to Generic -> SystemProductName. - -The `Serial` part gets copied to Generic -> SystemSerialNumber. - -The `Board Serial` part gets copied to Generic -> MLB. - -The `SmUUID` part gets copied toto Generic -> SystemUUID. - -We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) - -**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** - -[Apple Check Coverage page](https://checkcoverage.apple.com) - -**Automatic**: YES - -* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections - -**Generic**: - -* **SpoofVendor**: YES - * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case -* **SupportsCsm**: NO - * Used for when the EFI partition isn't first on the windows drive - -**UpdateDataHub**: YES - -* Update Data Hub fields - -**UpdateNVRAM**: YES - -* Update NVRAM fields - -**UpdateSMBIOS**: YES - -* Updates SMBIOS fields - -**UpdateSMBIOSMode**: Create - -* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk - -## UEFI - -![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518959873425639/Screen_Shot_2020-02-29_at_8.40.06_PM.png) - -**ConnectDrivers**: YES - -* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. - -**Drivers**: Add your .efi drivers here - -Only drivers present here should be: - -* HfsPlus.efi -* ApfsDriverLoader.efi -* OpenRuntime.efi - -**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS - -* **AudioSupport**: NO - * Used for enabling the audio port out, this requires AudioOut -* **AudioDevice**: [Blank] - * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this -* **AudioCodec**: 0 - * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService -* **AudioOut**: 0 - * Specifies which output is used, use the debug log to see what your board has - * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) -* **MinimumVolume**: 20 - * Default sound level for audio output -* **PlayChime**: NO - * Emulates the iconic Mac startup sound - * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio -* **VolumeAmplifier**: 0 - * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation - -**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support - -* **KeyFiltering**: NO - * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards -* **KeyForgetThreshold**: `5` - * The delay between each key input when holding a key down, for best results use `5` milliseconds -* **KeyMergeThreshold**: `2` - * The length of time that a key will be registered before resetting, for best results use `2` milliseconds -* **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi -* **KeySupportMode**: `Auto` - * Keyboard translation for OpenCore -* **KeySwap**: `NO` - * Swaps `Option` and `Cmd` key -* **PointerSupport**: `NO` - * Used for fixing broken pointer support, commonly used for Z87 Asus boards -* **PointerSupportMode**: - * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank -* **TimerResolution**: `50000` - * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some - -**Output**: Relating to visual output - -* **TextRenderer**: `BuiltinGraphics` - * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly -* **ConsoleMode**: [Blank] - * Specifies Console output size, best to keep it blank -* **Resolution**: `Max` - * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) -* **ClearScreenOnModeSwitch**: NO - * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer -* **IgnoreTextInGraphics**: NO - * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer -* **ProvideConsoleGop**: YES - * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** -* **DirectGopRendering**: NO - * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users -* **ReconnectOnResChange**: NO -* **ReplaceTabWithSpace**: NO - * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed -* **SanitiseClearScreen**: NO - * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer - -**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) - -* **AppleSmcIo**: NO - * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault -* **FirmwareVolume**: NO - * Fixes UI regarding Filevault, set to YES for better FileVault compatibility -* **HashServices**: NO - * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility -* **UnicodeCollation**: NO - * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) - - -**Quirks**: - -* **ExitBootServicesDelay**: `0` - * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 -* **IgnoreInvalidFlexRatio**: NO - * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems -* **ReleaseUsbOwnership**: NO - * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` -* **RequestBootVarFallback**: YES - * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. -* **RequestBootVarRouting**: YES - * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. -* **UnblockFsConnect**: NO - * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed - -## Cleaning up - -And now you're ready to save and place it into your EFI under EFI/OC. - -For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: - -* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) -* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) - -**Sanity check**: - -So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: - -* [**Sanity Checker**](https://opencore.slowgeek.com) - -# Intel BIOS settings - -**Disable:** - -* Fast Boot -* VT-d(can be enabled if you set `DisableIoMapper` to YES) -* CSM -* Thunderbolt -* Intel SGX -* Intel Platform Trust -* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) - -**Enable:** - -* VT-x -* Above 4G decoding -* Hyper-Threading -* Execute Disable Bit -* EHCI/XHCI Hand-off -* OS type: Windows 8.1/10 UEFI Mode -* DVMT Pre-Allocated(iGPU Memory): 64MB - -# [Post-install](/post-install/README.md) diff --git a/config-laptop.plist/haswell.md b/config-laptop.plist/haswell.md deleted file mode 100644 index 8e676ce90c..0000000000 --- a/config-laptop.plist/haswell.md +++ /dev/null @@ -1,615 +0,0 @@ -# Haswell - -* Supported version: 0.5.7 - -## Starting Point - -So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: - -* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. -* **The Sample.plist cannot be used As-Is**, you must configure it to your system -* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! - -Now with all that, we'll need some things to get started: - -* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore -* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS -* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download - -Now with those downloaded, we can get to really get started: - -* Grab the **Sample.plist** and rename to **config.plist** -* Open your new config.plist in ProperTree - * macOS: `ProperTree.command` - * Windows: `ProperTree.bat` -* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), - * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config - * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting - -**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** - -## ACPI - -![ACPI](https://i.imgur.com/2T0ubhy.png) - - -**Add:** - -This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) - -For us we'll need a couple of SSDTs to bring back functionality that Clover provided: - -* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) - * Allows for native CPU power management, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType`. Do note that this SSDT is made for systems where `AppleACPICPU` attaches `CPU0`, though some ACPI tables have theirs starting at `PR00` so adjust accordingly. Seeing what device has AppleACPICPU connected first in [IORegistryExplorer](https://github.com/toleda/audio_ALCInjection/raw/master/IORegistryExplorer_v2.1.zip) can also give you a hint -* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) - * Adds brightness control support -* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) - * Used for enabling Windows features in macOS, mainly needed for I2C controllers -* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) - * Creates a stub so VoodooI2C can connect - -Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. - -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. - - -**Block** - -This blocks certain ACPI tabes from loading, for us we can ignore this - -**Patch**: - -This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: - -* EC Rename - * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches -* OSI rename - * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT - -| Comment | String | Change XXXX to EC | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | xxxxxxxx | -| Replace | Data | 45435f5f | - -| Comment | String | Change _OSI to XOSI | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | 5f4f5349 | -| Replace | Data | 584f5349 | - -**Quirk**: - -Settings relating to ACPI, leave everything here as default. - -* **FadtEnableReset**: NO - * Enable reboot and shutdown on legacy hardware, not recommended unless needed -* **NormalizeHeaders**: NO - * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 -* **RebaseRegions**: NO - * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. -* **ResetHwSig**: NO - * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation -* **ResetLogoStatus**: NO - * Workaround for OEM Windows logo not drawing on systems with BGRT tables. - -## Booter - -![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) - -This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi - -**MmioWhitelist**: - -This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with `DevirtualiseMmio` - -**Quirks**: - -Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` - -* **AvoidRuntimeDefrag**: YES - * Fixes UEFI runtime services like date, time, NVRAM, power control, etc -* **DevirtualiseMmio**: NO - * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems -* **DisableSingleUser**: NO - * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines -* **DisableVariableWrite**: NO - * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works -* **DiscardHibernateMap**: NO - * Reuse original hibernate memory map, only needed for certain legacy hardware -* **EnableSafeModeSlide**: YES - * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: YES - * Removes write protection from CR0 register during their execution -* **ForceExitBootServices**: NO - * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary -* **ProtectSecureBoot**: NO - * Fixes secureboot keys on MacPro5,1 and Insyde firmwares -* **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems -* **ProvideCustomSlide**: YES - * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary -* **SignalAppleOS**: NO - * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used - -## DeviceProperties - -![DeviceProperties](https://i.imgur.com/vgLIhOo.png) - -**Add**: Sets device properties from a map. - -This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. - -If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` - -The two ig-platform-id's we use are as follows: - -* `0x0D220003` - this is used when the Desktop Haswell iGPU is used to drive a display - * `0300220D` when hex-swapped -* `0x04120004` - this is used when the Desktop Haswell iGPU is only used for computing tasks and doesn't drive a display - * `04001204` when hex-swapped -* `0x0D220003` - this is used when the Desktop Broadwell iGPU - * `07002216` when hex-swapped - -I added another portion as well that shows a `device-id` fake in case you have an HD 4400 which is unsupported in macOS. - -The device-id fake is set up like so: - -* `0x04120000` - this is the device id for HD 4600 which does have support in macOS - * `12040000` when hex swapped - -We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. - -| Key | Type | Value | -| :--- | :--- | :--- | -| AAPL,ig-platform-id | Data | 0300220D | -| framebuffer-patch-enable | Data | 01000000 | -| framebuffer-stolenmem | Data | 00003001 | -| device-id | Data | 12040000 | - -(This is an example for a desktop HD 4400 without a dGPU and no BIOS options for iGPU memory) - -| Key | Type | Value | -| :--- | :--- | :--- | -| AAPL,ig-platform-id | Data | 07002216 | -| framebuffer-patch-enable | Data | 01000000 | -| framebuffer-stolenmem | Data | 00003001 | - -(This is an example for a desktop Iris Pro 6200 and no BIOS options for iGPU memory) - -**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) - -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` - -* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). - -For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present - -Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! - -**Block**: Removes device properties from the map, for us we can ignore this - -## Kernel - -![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) - -**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. - -* **BundlePath** - * Name of the kext - * ex: `Lilu.kext` -* **Enabled** - * Self-explanatory, either enables or disables the kext -* **ExecutablePath** - * 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. Do note that plist only kexts do not need this filled in. - * ex: `Contents/MacOS/Lilu` -* **PlistPath** - * Path to the `info.plist` hidden within the kext - * ex: `Contents/Info.plist` - -**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons - -* **CpuidMask**: Leave this blank -* **CpuidData**: Leave this blank - -**Block**: Blocks kexts from loading. Not relevant for us - -**Patch**: Patches both the kernel and kexts - -**Quirks**: - -Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default - -* **AppleCpuPmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmExtraMsrs**: NO - * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. -* **AppleXcpmForceBoost**: NO - * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this -* **CustomSMBIOSGuid**: NO - * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops -* **DisableIoMapper**: YES - * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina -* **DummyPowerManagement**: NO - * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore -* **ExternalDiskIcons**: NO - * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. -* **IncreasePciBarSize**: NO - * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this -* **LapicKernelPanic**: NO - * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` -* **PanicNoKextDump**: YES - * Allows for reading kernel panics logs when kernel panics occur -* **PowerTimeoutKernelPanic**: YES - * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. -* **ThirdPartyDrives**: NO - * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM -* **XhciPortLimit**: YES - * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. - -The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such - -## Misc - -![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) - -**Boot**: Settings for boot screen (Leave everything as default) -* **HibernateMode**: None - * Best to avoid hibernation with Hackintoshes all together -* **PickerMode**: `Builtin` - * Sets OpenCore to use the builtin picker -* **HideAuxiliary**: NO - * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour -* **HideSelf**: YES - * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: - * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info -* **PickerAudioAssist**: NO - * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled -* **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: - * `Cmd+V`: Enables verbose - * `Cmd+Opt+P+R`: Cleans NVRAM - * `Cmd+R`: Boots Recovery partition - * `Cmd+S`: Boot in Single-user mode - * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key -* **TakeoffDelay**: `0` - * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support -* **Timeout**: `5` - * This sets how long OpenCore will wait until it automatically boots from the default selection - -**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) - -* **AppleDebug**: YES - * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer -* **DisableWatchDog**: YES - * Disables the UEFI watchdog, can help with early boot issues -* **Target**: `67` - * Shows more debug information, requires debug version of OpenCore -* **DisplayLevel**: `2147483714` - * Shows even more debug information, requires debug version of OpenCore - -These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) - - -**Security**: Security is pretty self-explanatory, **do not skip** - -We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` - -* **AllowNvramReset**: YES - * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` -* **AllowSetDefault**: YES - * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker -* **AuthRestart**: NO: - * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional -* **ExposeSensitiveData**: `6` - * Shows more debug information, requires debug version of OpenCore -* **Vault**: `Optional` - * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** -* **ScanPolicy**: `0` - * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** - -**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools -* **Name** - * Name shown in OpenCore -* **Enabled** - * Self-explanatory, enables or disables -* **Path** - * Path to file after the `Tools` folder - * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) - -**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore - -Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info - -## NVRAM - -![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) - -**Add**: - -4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) - -* **UIScale**: - * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) - -* **DefaultBackgroundColor**: Background color used by boot.efi - * `00000000`: Syrah Black - * `BFBFBF00`: Light Gary - -7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) - -* **boot-args**: - * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. - * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. - * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. - * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. - * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported - - -* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition - -csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: - -* `00000000` - SIP completely enabled -* `03000000` - Allow unsigned kexts and writing to protected fs locations -* `E7030000` - SIP completely disabled - -Recommended to leave enabled for best security practices - -* **nvda\_drv**: <> - * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> - * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): - * American: `en-US:0`(`656e2d55533a30` in HEX) - * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) - * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX - -| Key | Type | Value | -| :--- | :--- | :--- | -| prev-lang:kbd | String | en-US:0 | - -**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. - -**LegacyEnable**: NO -* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM - -**LegacyOverwrite**: NO -* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM - -**LegacySchema** -* Used for assigning NVRAM variables, used with LegacyEnable set to YES - -**WriteFlash**: YES -* Enables writing to flash memory for all added variables. - -## Platforminfo - -![PlatformInfo](https://i.imgur.com/XlxjsAd.png) - -For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. - -For this Haswell example, we chose the MacBookPro11,1 SMBIOS. The typical breakdown is as follows: - -| SMBIOS | CPU Type | GPU Type | Display Size | -| :--- | :--- | :--- | :--- | -| MacBookAir6,1 | Dual Core 15w | iGPU: HD 5000 | 11" | -| MacBookAir6,2 | Dual Core 15w | iGPU: HD 5000 | 13" | -| MacBookPro11,1 | Dual Core 28w | iGPU: Iris 5100 | 13" | -| MacBookPro11,2 | Quad Core 45w | iGPU: Iris Pro 5200 | 15" | -| MacBookPro11,3 | Quad Core 45w | iGPU: Iris Pro 5200 + dGPU: GT750M | 15" | -| MacBookPro11,4 | Quad Core 45w | iGPU: Iris Pro 5200 | 15" | -| MacBookPro11,5 | Quad Core 45w | iGPU: Iris Pro 5200 + dGPU: R9 M370X | 15" | - -**Note**: Mobile users should refer to the SMBIOS page on which to choose: [Mobile SMBIOS](https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extras/smbios.md) - -Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: - -```text - ####################################################### - # MacBookPro11,1 SMBIOS Info # -####################################################### - -Type: MacBookPro11,1 -Serial: C02M9SYJFY10 -Board Serial: C02408101J9G2Y7A8 -SmUUID: 7B227BEC-660D-405F-8E60-411B3E4EF055 -``` -The `Type` part gets copied to Generic -> SystemProductName. - -The `Serial` part gets copied to Generic -> SystemSerialNumber. - -The `Board Serial` part gets copied to Generic -> MLB. - -The `SmUUID` part gets copied toto Generic -> SystemUUID. - -We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) - -**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** - -[Apple Check Coverage page](https://checkcoverage.apple.com) - -**Automatic**: YES - -* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections - -**Generic**: - -* **SpoofVendor**: YES - * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case -* **SupportsCsm**: NO - * Used for when the EFI partition isn't first on the windows drive - -**UpdateDataHub**: YES - -* Update Data Hub fields - -**UpdateNVRAM**: YES - -* Update NVRAM fields - -**UpdateSMBIOS**: YES - -* Updates SMBIOS fields - -**UpdateSMBIOSMode**: Create - -* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk - -## UEFI - -![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518166915481677/Screen_Shot_2020-02-29_at_8.36.55_PM.png) - -**ConnectDrivers**: YES - -* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. - -**Drivers**: Add your .efi drivers here - -Only drivers present here should be: - -* HfsPlus.efi -* ApfsDriverLoader.efi -* OpenRuntime.efi - -**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS - -* **AudioSupport**: NO - * Used for enabling the audio port out, this requires AudioOut -* **AudioDevice**: [Blank] - * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this -* **AudioCodec**: 0 - * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService -* **AudioOut**: 0 - * Specifies which output is used, use the debug log to see what your board has - * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) -* **MinimumVolume**: 20 - * Default sound level for audio output -* **PlayChime**: NO - * Emulates the iconic Mac startup sound - * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio -* **VolumeAmplifier**: 0 - * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation - -**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support - -* **KeyFiltering**: NO - * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards -* **KeyForgetThreshold**: `5` - * The delay between each key input when holding a key down, for best results use `5` milliseconds -* **KeyMergeThreshold**: `2` - * The length of time that a key will be registered before resetting, for best results use `2` milliseconds -* **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi -* **KeySupportMode**: `Auto` - * Keyboard translation for OpenCore -* **KeySwap**: `NO` - * Swaps `Option` and `Cmd` key -* **PointerSupport**: `NO` - * Used for fixing broken pointer support, commonly used for Z87 Asus boards -* **PointerSupportMode**: - * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank -* **TimerResolution**: `50000` - * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some - -**Output**: Relating to visual output - -* **TextRenderer**: `BuiltinGraphics` - * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly -* **ConsoleMode**: [Blank] - * Specifies Console output size, best to keep it blank -* **Resolution**: `Max` - * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) -* **ClearScreenOnModeSwitch**: NO - * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer -* **IgnoreTextInGraphics**: NO - * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer -* **ProvideConsoleGop**: YES - * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** -* **DirectGopRendering**: NO - * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users -* **ReconnectOnResChange**: NO -* **ReplaceTabWithSpace**: NO - * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed -* **SanitiseClearScreen**: NO - * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer - -**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) - -* **AppleSmcIo**: NO - * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault -* **FirmwareVolume**: NO - * Fixes UI regarding Filevault, set to YES for better FileVault compatibility -* **HashServices**: NO - * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility -* **UnicodeCollation**: NO - * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) - - -**Quirks**: - -* **ExitBootServicesDelay**: `0` - * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 -* **IgnoreInvalidFlexRatio**: YES - * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems -* **ReleaseUsbOwnership**: NO - * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` -* **RequestBootVarFallback**: YES - * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. -* **RequestBootVarRouting**: YES - * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. -* **UnblockFsConnect**: NO - * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed - -## Cleaning up - -And now you're ready to save and place it into your EFI under EFI/OC. - -For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: - -* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) -* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) - -**Sanity check**: - -So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: - -* [**Sanity Checker**](https://opencore.slowgeek.com) - -# Intel BIOS settings - -**Disable:** - -* Fast Boot -* VT-d(can be enabled if you set `DisableIoMapper` to YES) -* CSM -* Thunderbolt -* Intel SGX -* Intel Platform Trust -* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) - -**Enable:** - -* VT-x -* Above 4G decoding -* Hyper-Threading -* Execute Disable Bit -* EHCI/XHCI Hand-off -* OS type: Windows 8.1/10 UEFI Mode -* DVMT Pre-Allocated(iGPU Memory): 64MB - -# [Post-install](/post-install/README.md) - diff --git a/config-laptop.plist/ivy-bridge.md b/config-laptop.plist/ivy-bridge.md deleted file mode 100644 index ac3164be3e..0000000000 --- a/config-laptop.plist/ivy-bridge.md +++ /dev/null @@ -1,589 +0,0 @@ -# Ivy Bridge - -* Supported version: 0.5.7 - -## Starting Point - -So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: - -* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. -* **The Sample.plist cannot be used As-Is**, you must configure it to your system -* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! - -Now with all that, we'll need some things to get started: - -* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore -* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS -* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download - -Now with those downloaded, we can get to really get started: - -* Grab the **Sample.plist** and rename to **config.plist** -* Open your new config.plist in ProperTree - * macOS: `ProperTree.command` - * Windows: `ProperTree.bat` -* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), - * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config - * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting - -**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** - -## ACPI - -![ACPI](https://i.imgur.com/QFsl9R1.png) - -**Add:** - -This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) - -For us we'll need a couple of SSDTs to bring back functionality that Clover provided: - -* [CPU-PM](https://github.com/Piker-Alpha/ssdtPRGen.sh) - * Needed for proper CPU power management, you will need to run Pike's ssdtPRGen.sh script to generate this file. This will be run in post install. -* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) - * Adds brightness control support -* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) - * Used for enabling Windows features in macOS, mainly needed for I2C controllers -* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) - * Creates a stub so VoodooI2C can connect - -Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. - -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. - - -**Block** - -This blocks certain ACPI tabes from loading, for us we can ignore this - -**Patch**: - -This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: - -* EC Rename - * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches -* OSI rename - * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT - -| Comment | String | Change XXXX to EC | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | xxxxxxxx | -| Replace | Data | 45435f5f | - -| Comment | String | Change _OSI to XOSI | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | 5f4f5349 | -| Replace | Data | 584f5349 | - -**Quirk**: - -Settings relating to ACPI, leave everything here as default. - -* **FadtEnableReset**: NO - * Enable reboot and shutdown on legacy hardware, not recommended unless needed -* **NormalizeHeaders**: NO - * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 -* **RebaseRegions**: NO - * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. -* **ResetHwSig**: NO - * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation -* **ResetLogoStatus**: NO - * Workaround for OEM Windows logo not drawing on systems with BGRT tables. - -## Booter - -![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) - -This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi - -**MmioWhitelist**: - -This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with `DevirtualiseMmio` - -**Quirks**: - -Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` - -* **AvoidRuntimeDefrag**: YES - * Fixes UEFI runtime services like date, time, NVRAM, power control, etc -* **DevirtualiseMmio**: NO - * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems -* **DisableSingleUser**: NO - * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines -* **DisableVariableWrite**: NO - * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works -* **DiscardHibernateMap**: NO - * Reuse original hibernate memory map, only needed for certain legacy hardware -* **EnableSafeModeSlide**: YES - * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: YES - * Removes write protection from CR0 register during their execution -* **ForceExitBootServices**: NO - * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary -* **ProtectSecureBoot**: NO - * Fixes secureboot keys on MacPro5,1 and Insyde firmwares -* **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems -* **ProvideCustomSlide**: YES - * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary -* **SignalAppleOS**: NO - * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used - -## DeviceProperties -![DeviceProperties](https://i.imgur.com/Aw9t9vI.png) - -**Add**: Sets device properties from a map. - -This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. - - -If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` - -The ig-platform-id's we use is as follows: - -* `0x0166000A` - this is the standard hex for the ig-plat - * `0A006601` when hex-swapped - -We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(32MB recommended) but required when not available. - -| Key | Type | Value | -| :--- | :--- | :--- | -| AAPL,ig-platform-id | Data | 0A006601 | -| framebuffer-patch-enable | Data | 01000000 | -| framebuffer-stolenmem | Data | 00003001 | - -(This is an example for a desktop HD 4000 and no BIOS options for iGPU memory) - -**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) - -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` - -* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). - -For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present - -**Block**: Removes device properties from the map, for us we can ignore this - -Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! - -## Kernel - -![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) - -**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. - -* **BundlePath** - * Name of the kext - * ex: `Lilu.kext` -* **Enabled** - * Self-explanatory, either enables or disables the kext -* **ExecutablePath** - * 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. Do note that plist only kexts do not need this filled in. - * ex: `Contents/MacOS/Lilu` -* **PlistPath** - * Path to the `info.plist` hidden within the kext - * ex: `Contents/Info.plist` - -**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons - -* **CpuidMask**: Leave this blank -* **CpuidData**: Leave this blank - -**Block**: Blocks kexts from loading. Not relevant for us - -**Patch**: Patches both the kernel and kexts - -**Quirks**: - -Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default - -* **AppleCpuPmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmExtraMsrs**: NO - * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. -* **AppleXcpmForceBoost**: NO - * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this -* **CustomSMBIOSGuid**: NO - * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops -* **DisableIoMapper**: YES - * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina -* **DummyPowerManagement**: NO - * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore -* **ExternalDiskIcons**: NO - * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. -* **IncreasePciBarSize**: NO - * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this -* **LapicKernelPanic**: NO - * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` -* **PanicNoKextDump**: YES - * Allows for reading kernel panics logs when kernel panics occur -* **PowerTimeoutKernelPanic**: YES - * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. -* **ThirdPartyDrives**: NO - * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM -* **XhciPortLimit**: YES - * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. - -The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such - -## Misc - -![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) - -**Boot**: Settings for boot screen (Leave everything as default) -* **HibernateMode**: None - * Best to avoid hibernation with Hackintoshes all together -* **PickerMode**: `Builtin` - * Sets OpenCore to use the builtin picker -* **HideAuxiliary**: NO - * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour -* **HideSelf**: YES - * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: - * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info -* **PickerAudioAssist**: NO - * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled -* **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: - * `Cmd+V`: Enables verbose - * `Cmd+Opt+P+R`: Cleans NVRAM - * `Cmd+R`: Boots Recovery partition - * `Cmd+S`: Boot in Single-user mode - * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key -* **TakeoffDelay**: `0` - * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support -* **Timeout**: `5` - * This sets how long OpenCore will wait until it automatically boots from the default selection - -**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) - -* **AppleDebug**: YES - * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer -* **DisableWatchDog**: YES - * Disables the UEFI watchdog, can help with early boot issues -* **Target**: `67` - * Shows more debug information, requires debug version of OpenCore -* **DisplayLevel**: `2147483714` - * Shows even more debug information, requires debug version of OpenCore - -These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) - - -**Security**: Security is pretty self-explanatory, **do not skip** - -We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` - -* **AllowNvramReset**: YES - * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` -* **AllowSetDefault**: YES - * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker -* **AuthRestart**: NO: - * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional -* **ExposeSensitiveData**: `6` - * Shows more debug information, requires debug version of OpenCore -* **Vault**: `Optional` - * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** -* **ScanPolicy**: `0` - * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** - -**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools -* **Name** - * Name shown in OpenCore -* **Enabled** - * Self-explanatory, enables or disables -* **Path** - * Path to file after the `Tools` folder - * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) - -**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore - -Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info - -## NVRAM - -![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) - -**Add**: - -4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) - -* **UIScale**: - * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) - -* **DefaultBackgroundColor**: Background color used by boot.efi - * `00000000`: Syrah Black - * `BFBFBF00`: Light Gary - -7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) - -* **boot-args**: - * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. - * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. - * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. - * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. - * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported - - -* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition - -csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: - -* `00000000` - SIP completely enabled -* `03000000` - Allow unsigned kexts and writing to protected fs locations -* `E7030000` - SIP completely disabled - -Recommended to leave enabled for best security practices - -* **nvda\_drv**: <> - * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> - * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): - * American: `en-US:0`(`656e2d55533a30` in HEX) - * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) - * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX - -| Key | Type | Value | -| :--- | :--- | :--- | -| prev-lang:kbd | String | en-US:0 | - -**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. - -**LegacyEnable**: NO -* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM - -**LegacyOverwrite**: NO -* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM - -**LegacySchema** -* Used for assigning NVRAM variables, used with LegacyEnable set to YES - -**WriteFlash**: YES -* Enables writing to flash memory for all added variables. - -## Platforminfo - -![PlatformInfo](https://i.imgur.com/5rl12dZ.png) - -For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. - -For this Ivy Bridge example, we'll chose the iMac13,2 SMBIOS - this is done intentionally for compatibility's sake. The typical breakdown is as follows: - -| SMBIOS | CPU Type | GPU Type | Display Size | -| :--- | :--- | :--- | :--- | -| MacBookAir5,1 | Dual Core 17w | iGPU: HD 4000 | 11" | -| MacBookAir5,2 | Dual Core 17w | iGPU: HD 4000 | 13" | -| MacBookPro10,1 | Quad Core 45w | iGPU: HD 4000 + dGPU: GT650M | 15" | -| MacBookPro10,2 | Dual Core 35w(High End) | iGPU: HD 4000 | 13" | - -Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: - -```text - ####################################################### - # MacBookPro10,2 SMBIOS Info # -####################################################### - -Type: MacBookPro10,2 -Serial: C02KCYZLDNCW -Board Serial: C02309301QXF2FRJC -SmUUID: A154B586-874B-4E57-A1FF-9D6E503E4580 -``` -The `Type` part gets copied to Generic -> SystemProductName. - -The `Serial` part gets copied to Generic -> SystemSerialNumber. - -The `Board Serial` part gets copied to Generic -> MLB. - -The `SmUUID` part gets copied toto Generic -> SystemUUID. - -We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) - -**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** - -[Apple Check Coverage page](https://checkcoverage.apple.com) - -**Automatic**: YES - -* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections - -**Generic**: - -* **SpoofVendor**: YES - * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case -* **SupportsCsm**: NO - * Used for when the EFI partition isn't first on the windows drive - -**UpdateDataHub**: YES - -* Update Data Hub fields - -**UpdateNVRAM**: YES - -* Update NVRAM fields - -**UpdateSMBIOS**: YES - -* Updates SMBIOS fields - -**UpdateSMBIOSMode**: Create - -* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk - -## UEFI - -![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518166915481677/Screen_Shot_2020-02-29_at_8.36.55_PM.png) - -**ConnectDrivers**: YES - -* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. - -**Drivers**: Add your .efi drivers here - -Only drivers present here should be: - -* HfsPlus.efi -* ApfsDriverLoader.efi -* OpenRuntime.efi - -**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS - -* **AudioSupport**: NO - * Used for enabling the audio port out, this requires AudioOut -* **AudioDevice**: [Blank] - * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this -* **AudioCodec**: 0 - * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService -* **AudioOut**: 0 - * Specifies which output is used, use the debug log to see what your board has - * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) -* **MinimumVolume**: 20 - * Default sound level for audio output -* **PlayChime**: NO - * Emulates the iconic Mac startup sound - * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio -* **VolumeAmplifier**: 0 - * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation - -**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support - -* **KeyFiltering**: NO - * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards -* **KeyForgetThreshold**: `5` - * The delay between each key input when holding a key down, for best results use `5` milliseconds -* **KeyMergeThreshold**: `2` - * The length of time that a key will be registered before resetting, for best results use `2` milliseconds -* **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi -* **KeySupportMode**: `Auto` - * Keyboard translation for OpenCore -* **KeySwap**: `NO` - * Swaps `Option` and `Cmd` key -* **PointerSupport**: `NO` - * Used for fixing broken pointer support, commonly used for Z87 Asus boards -* **PointerSupportMode**: - * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank -* **TimerResolution**: `50000` - * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some - -**Output**: Relating to visual output - -* **TextRenderer**: `BuiltinGraphics` - * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly -* **ConsoleMode**: [Blank] - * Specifies Console output size, best to keep it blank -* **Resolution**: `Max` - * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) -* **ClearScreenOnModeSwitch**: NO - * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer -* **IgnoreTextInGraphics**: NO - * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer -* **ProvideConsoleGop**: YES - * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** -* **DirectGopRendering**: NO - * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users -* **ReconnectOnResChange**: NO -* **ReplaceTabWithSpace**: NO - * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed -* **SanitiseClearScreen**: NO - * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer - -**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) - -* **AppleSmcIo**: NO - * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault -* **FirmwareVolume**: NO - * Fixes UI regarding Filevault, set to YES for better FileVault compatibility -* **HashServices**: NO - * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility -* **UnicodeCollation**: NO - * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) - - -**Quirks**: - -* **ExitBootServicesDelay**: `0` - * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 -* **IgnoreInvalidFlexRatio**: YES - * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems -* **ReleaseUsbOwnership**: NO - * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` -* **RequestBootVarFallback**: YES - * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. -* **RequestBootVarRouting**: YES - * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. -* **UnblockFsConnect**: NO - * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed - -## Cleaning up - -And now you're ready to save and place it into your EFI under EFI/OC. - -For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: - -* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) -* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) - -**Sanity check**: - -So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: - -* [**Sanity Checker**](https://opencore.slowgeek.com) - -# Intel BIOS settings - -**Disable:** - -* Fast Boot -* VT-d(can be enabled if you set `DisableIoMapper` to YES) -* CSM -* Thunderbolt -* Intel SGX -* Intel Platform Trust -* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) - -**Enable:** - -* VT-x -* Above 4G decoding -* Hyper-Threading -* Execute Disable Bit -* EHCI/XHCI Hand-off -* OS type: Windows 8.1/10 UEFI Mode -* DVMT Pre-Allocated(iGPU Memory): 32MB - -# [Post-install](/post-install/README.md) - diff --git a/config-laptop.plist/kaby-lake.md b/config-laptop.plist/kaby-lake.md deleted file mode 100644 index e16a553065..0000000000 --- a/config-laptop.plist/kaby-lake.md +++ /dev/null @@ -1,588 +0,0 @@ -# Kaby Lake - -* Supported version: 0.5.7 - -## Starting Point - -So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: - -* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. -* **The Sample.plist cannot be used As-Is**, you must configure it to your system -* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! - -Now with all that, we'll need some things to get started: - -* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore -* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS -* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download - -Now with those downloaded, we can get to really get started: - -* Grab the **Sample.plist** and rename to **config.plist** -* Open your new config.plist in ProperTree - * macOS: `ProperTree.command` - * Windows: `ProperTree.bat` -* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), - * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config - * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting - -**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** - -## ACPI -![ACPI](https://i.imgur.com/IkLFucw.png) - -**Add:** - -This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) - -For us we'll need a couple of SSDTs to bring back functionality that Clover provided: - -* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) - * Allows for native CPU power management, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType`. Do note that this SSDT is made for systems where `AppleACPICPU` attaches `CPU0`, though some ACPI tables have theirs starting at `PR00` so adjust accordingly. Seeing what device has AppleACPICPU connected first in [IORegistryExplorer](https://github.com/toleda/audio_ALCInjection/raw/master/IORegistryExplorer_v2.1.zip) can also give you a hint -* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) - * Adds brightness control support -* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) - * Used for enabling Windows features in macOS, mainly needed for I2C controllers -* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) - * Creates a stub so VoodooI2C can connect - -Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. - -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. - - -**Block** - -This blocks certain ACPI tabes from loading, for us we can ignore this - -**Patch**: - -This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: - -* EC Rename - * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches -* OSI rename - * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT - -| Comment | String | Change XXXX to EC | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | xxxxxxxx | -| Replace | Data | 45435f5f | - -| Comment | String | Change _OSI to XOSI | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | 5f4f5349 | -| Replace | Data | 584f5349 | - -**Quirk**: - -Settings relating to ACPI, leave everything here as default. - -* **FadtEnableReset**: NO - * Enable reboot and shutdown on legacy hardware, not recommended unless needed -* **NormalizeHeaders**: NO - * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 -* **RebaseRegions**: NO - * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. -* **ResetHwSig**: NO - * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation -* **ResetLogoStatus**: NO - * Workaround for OEM Windows logo not drawing on systems with BGRT tables. - -## Booter - -![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) - -This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi - -**MmioWhitelist**: - -This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with `DevirtualiseMmio` - -**Quirks**: - -Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` - -* **AvoidRuntimeDefrag**: YES - * Fixes UEFI runtime services like date, time, NVRAM, power control, etc -* **DevirtualiseMmio**: NO - * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems -* **DisableSingleUser**: NO - * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines -* **DisableVariableWrite**: NO - * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works -* **DiscardHibernateMap**: NO - * Reuse original hibernate memory map, only needed for certain legacy hardware -* **EnableSafeModeSlide**: YES - * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: YES - * Removes write protection from CR0 register during their execution -* **ForceExitBootServices**: NO - * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary -* **ProtectSecureBoot**: NO - * Fixes secureboot keys on MacPro5,1 and Insyde firmwares -* **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems -* **ProvideCustomSlide**: YES - * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary -* **SignalAppleOS**: NO - * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used - -## DeviceProperties - -![DeviceProperties](https://i.imgur.com/zNnP5mT.png) - -**Add**: Sets device properties from a map. - -This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. - -If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` - -The two ig-platform-id's we use are as follows: - -* `0x59120000` - this is used when the Desktop iGPU is used to drive a display - * `00001259` when hex-swapped -* `0x59120003` - this is used when the Desktop iGPU is only used for computing tasks and doesn't drive a display - * `03001259` when hex-swapped - -We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. - -| Key | Type | Value | -| :--- | :--- | :--- | -| AAPL,ig-platform-id | Data | 00001259 | -| framebuffer-patch-enable | Data | 01000000 | -| framebuffer-stolenmem | Data | 00003001 | - -(This is an example for a desktop HD 630 without a dGPU and no BIOS options for iGPU memory) - -**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) - -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` - -* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). - -For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present - -**Block**: Removes device properties from the map, for us we can ignore this - -Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes - -## Kernel - -![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) - -**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. - -* **BundlePath** - * Name of the kext - * ex: `Lilu.kext` -* **Enabled** - * Self-explanatory, either enables or disables the kext -* **ExecutablePath** - * 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. Do note that plist only kexts do not need this filled in. - * ex: `Contents/MacOS/Lilu` -* **PlistPath** - * Path to the `info.plist` hidden within the kext - * ex: `Contents/Info.plist` - -**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons - -* **CpuidMask**: Leave this blank -* **CpuidData**: Leave this blank - -**Block**: Blocks kexts from loading. Not relevant for us - -**Patch**: Patches both the kernel and kexts - -**Quirks**: - -Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default - -* **AppleCpuPmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmExtraMsrs**: NO - * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. -* **AppleXcpmForceBoost**: NO - * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this -* **CustomSMBIOSGuid**: NO - * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops -* **DisableIoMapper**: YES - * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina -* **DummyPowerManagement**: NO - * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore -* **ExternalDiskIcons**: NO - * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. -* **IncreasePciBarSize**: NO - * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this -* **LapicKernelPanic**: NO - * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` -* **PanicNoKextDump**: YES - * Allows for reading kernel panics logs when kernel panics occur -* **PowerTimeoutKernelPanic**: YES - * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. -* **ThirdPartyDrives**: NO - * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM -* **XhciPortLimit**: YES - * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. - -The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such - -## Misc - -![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) - -**Boot**: Settings for boot screen (Leave everything as default) -* **HibernateMode**: None - * Best to avoid hibernation with Hackintoshes all together -* **PickerMode**: `Builtin` - * Sets OpenCore to use the builtin picker -* **HideAuxiliary**: NO - * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour -* **HideSelf**: YES - * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: - * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info -* **PickerAudioAssist**: NO - * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled -* **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: - * `Cmd+V`: Enables verbose - * `Cmd+Opt+P+R`: Cleans NVRAM - * `Cmd+R`: Boots Recovery partition - * `Cmd+S`: Boot in Single-user mode - * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key -* **TakeoffDelay**: `0` - * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support -* **Timeout**: `5` - * This sets how long OpenCore will wait until it automatically boots from the default selection - -**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) - -* **AppleDebug**: YES - * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer -* **DisableWatchDog**: YES - * Disables the UEFI watchdog, can help with early boot issues -* **Target**: `67` - * Shows more debug information, requires debug version of OpenCore -* **DisplayLevel**: `2147483714` - * Shows even more debug information, requires debug version of OpenCore - -These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) - - -**Security**: Security is pretty self-explanatory, **do not skip** - -We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` - -* **AllowNvramReset**: YES - * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` -* **AllowSetDefault**: YES - * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker -* **AuthRestart**: NO: - * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional -* **ExposeSensitiveData**: `6` - * Shows more debug information, requires debug version of OpenCore -* **Vault**: `Optional` - * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** -* **ScanPolicy**: `0` - * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** - -**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools -* **Name** - * Name shown in OpenCore -* **Enabled** - * Self-explanatory, enables or disables -* **Path** - * Path to file after the `Tools` folder - * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) - -**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore - -Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info - -## NVRAM - -![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) - -**Add**: - -4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) - -* **UIScale**: - * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) - -* **DefaultBackgroundColor**: Background color used by boot.efi - * `00000000`: Syrah Black - * `BFBFBF00`: Light Gary - -7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) - -* **boot-args**: - * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. - * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. - * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. - * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. - * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported - - -* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition - -csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: - -* `00000000` - SIP completely enabled -* `03000000` - Allow unsigned kexts and writing to protected fs locations -* `E7030000` - SIP completely disabled - -Recommended to leave enabled for best security practices - -* **nvda\_drv**: <> - * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> - * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): - * American: `en-US:0`(`656e2d55533a30` in HEX) - * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) - * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX - -| Key | Type | Value | -| :--- | :--- | :--- | -| prev-lang:kbd | String | en-US:0 | - -**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. - -**LegacyEnable**: NO -* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM - -**LegacyOverwrite**: NO -* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM - -**LegacySchema** -* Used for assigning NVRAM variables, used with LegacyEnable set to YES - -**WriteFlash**: YES -* Enables writing to flash memory for all added variables. - -## Platforminfo - -![PlatformInfo](https://i.imgur.com/M46vPwX.png) - -For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. - -For this Kaby Lake example, we'll chose the MacBookPro14,1 SMBIOS - this is done intentionally for compatibility's sake. The typical breakdown is as follows: - -| SMBIOS | CPU Type | GPU Type | Display Size | -| :--- | :--- | :--- | :--- | -| MacBookPro14,1 | Dual Core 15w(Low End) | iGPU: Iris Plus 640 | 13" | -| MacBookPro14,2 | Dual Core 15w(High End) | iGPU: Iris Plus 650 | 13" | -| MacBookPro14,3 | Quad Core 45w | iGPU: HD 630 + dGPU: RP555/560 | 15" | - -Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: - -```text - ####################################################### - # MacBookPro14,1 SMBIOS Info # -####################################################### - -Type: MacBookPro14,1 -Serial: C02Z2CZ5H7JY -Board Serial: C02928701GUH69FFB -SmUUID: AA043F8D-33B6-4A1A-94F7-46972AAD0607 -``` -The `Type` part gets copied to Generic -> SystemProductName. - -The `Serial` part gets copied to Generic -> SystemSerialNumber. - -The `Board Serial` part gets copied to Generic -> MLB. - -The `SmUUID` part gets copied toto Generic -> SystemUUID. - -We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) - -**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** - -[Apple Check Coverage page](https://checkcoverage.apple.com) - -**Automatic**: YES - -* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections - -**Generic**: - -* **SpoofVendor**: YES - * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case -* **SupportsCsm**: NO - * Used for when the EFI partition isn't first on the windows drive - -**UpdateDataHub**: YES - -* Update Data Hub fields - -**UpdateNVRAM**: YES - -* Update NVRAM fields - -**UpdateSMBIOS**: YES - -* Updates SMBIOS fields - -**UpdateSMBIOSMode**: Create - -* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk - -## UEFI - -![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518959873425639/Screen_Shot_2020-02-29_at_8.40.06_PM.png) - -**ConnectDrivers**: YES - -* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. - -**Drivers**: Add your .efi drivers here - -Only drivers present here should be: - -* HfsPlus.efi -* ApfsDriverLoader.efi -* OpenRuntime.efi - -**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS - -* **AudioSupport**: NO - * Used for enabling the audio port out, this requires AudioOut -* **AudioDevice**: [Blank] - * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this -* **AudioCodec**: 0 - * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService -* **AudioOut**: 0 - * Specifies which output is used, use the debug log to see what your board has - * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) -* **MinimumVolume**: 20 - * Default sound level for audio output -* **PlayChime**: NO - * Emulates the iconic Mac startup sound - * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio -* **VolumeAmplifier**: 0 - * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation - -**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support - -* **KeyFiltering**: NO - * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards -* **KeyForgetThreshold**: `5` - * The delay between each key input when holding a key down, for best results use `5` milliseconds -* **KeyMergeThreshold**: `2` - * The length of time that a key will be registered before resetting, for best results use `2` milliseconds -* **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi -* **KeySupportMode**: `Auto` - * Keyboard translation for OpenCore -* **KeySwap**: `NO` - * Swaps `Option` and `Cmd` key -* **PointerSupport**: `NO` - * Used for fixing broken pointer support, commonly used for Z87 Asus boards -* **PointerSupportMode**: - * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank -* **TimerResolution**: `50000` - * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some - -**Output**: Relating to visual output - -* **TextRenderer**: `BuiltinGraphics` - * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly -* **ConsoleMode**: [Blank] - * Specifies Console output size, best to keep it blank -* **Resolution**: `Max` - * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) -* **ClearScreenOnModeSwitch**: NO - * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer -* **IgnoreTextInGraphics**: NO - * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer -* **ProvideConsoleGop**: YES - * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** -* **DirectGopRendering**: NO - * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users -* **ReconnectOnResChange**: NO -* **ReplaceTabWithSpace**: NO - * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed -* **SanitiseClearScreen**: NO - * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer - -**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) - -* **AppleSmcIo**: NO - * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault -* **FirmwareVolume**: NO - * Fixes UI regarding Filevault, set to YES for better FileVault compatibility -* **HashServices**: NO - * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility -* **UnicodeCollation**: NO - * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) - - -**Quirks**: - -* **ExitBootServicesDelay**: `0` - * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 -* **IgnoreInvalidFlexRatio**: NO - * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems -* **ReleaseUsbOwnership**: NO - * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` -* **RequestBootVarFallback**: YES - * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. -* **RequestBootVarRouting**: YES - * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. -* **UnblockFsConnect**: NO - * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed - -## Cleaning up - -And now you're ready to save and place it into your EFI under EFI/OC. - -For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: - -* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) -* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) - -**Sanity check**: - -So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: - -* [**Sanity Checker**](https://opencore.slowgeek.com) - -# Intel BIOS settings - -**Disable:** - -* Fast Boot -* VT-d(can be enabled if you set `DisableIoMapper` to YES) -* CSM -* Thunderbolt -* Intel SGX -* Intel Platform Trust -* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) - -**Enable:** - -* VT-x -* Above 4G decoding -* Hyper-Threading -* Execute Disable Bit -* EHCI/XHCI Hand-off -* OS type: Windows 8.1/10 UEFI Mode -* DVMT Pre-Allocated(iGPU Memory): 64MB - -# [Post-install](/post-install/README.md) diff --git a/config-laptop.plist/skylake.md b/config-laptop.plist/skylake.md deleted file mode 100644 index 6138b129dc..0000000000 --- a/config-laptop.plist/skylake.md +++ /dev/null @@ -1,589 +0,0 @@ -# Skylake - -* Supported version: 0.5.7 - -## Starting Point - -So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: - -* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. -* **The Sample.plist cannot be used As-Is**, you must configure it to your system -* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! - -Now with all that, we'll need some things to get started: - -* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore -* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS -* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download - -Now with those downloaded, we can get to really get started: - -* Grab the **Sample.plist** and rename to **config.plist** -* Open your new config.plist in ProperTree - * macOS: `ProperTree.command` - * Windows: `ProperTree.bat` -* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), - * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config - * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting - -**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** - -## ACPI -![ACPI](https://i.imgur.com/IkLFucw.png) - -**Add:** - -This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) - -For us we'll need a couple of SSDTs to bring back functionality that Clover provided: - -* [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) - * Allows for native CPU power management, Clover alternative would be under `Acpi -> GenerateOptions -> PluginType`. Do note that this SSDT is made for systems where `AppleACPICPU` attaches `CPU0`, though some ACPI tables have theirs starting at `PR00` so adjust accordingly. Seeing what device has AppleACPICPU connected first in [IORegistryExplorer](https://github.com/toleda/audio_ALCInjection/raw/master/IORegistryExplorer_v2.1.zip) can also give you a hint -* [SSDT-PNLF](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/SSDT-PNLF.dsl) - * Adds brightness control support -* [SSDT-XOSI](https://github.com/hackintosh-guides/vanilla-laptop-guide/tree/master/Misc-files/SSDT-XOSI.aml) - * Used for enabling Windows features in macOS, mainly needed for I2C controllers -* [SSDT-GPIO](https://github.com/khronokernel/Getting-Started-With-ACPI/blob/master/extra-files/SSDT-GPI0.dsl) - * Creates a stub so VoodooI2C can connect - -Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. - -For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](https://khronokernel.github.io/Getting-Started-With-ACPI/) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. - - -**Block** - -This blocks certain ACPI tabes from loading, for us we can ignore this - -**Patch**: - -This section allows us to dynamically modify parts of the ACPI \(DSDT, SSDT, etc.\) via OpenCore. For us, we'll need a couple: - -* EC Rename - * Needed for Catalina support as it doesn't like the standard one found on most PCs, follow the [Fixing Embedded Controllers Guide](https://khronokernel.github.io/Getting-Started-With-ACPI/) on how to determine what EC you have and apply the appropriate patches -* OSI rename - * This is required when using SSDT-XOSI as we redirect all OSI calls to this SSDT - -| Comment | String | Change XXXX to EC | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | xxxxxxxx | -| Replace | Data | 45435f5f | - -| Comment | String | Change _OSI to XOSI | -| :--- | :--- | :--- | -| Enabled | String | YES | -| Count | Number | 0 | -| Limit | Nuber | 0 | -| Find | Data | 5f4f5349 | -| Replace | Data | 584f5349 | - -**Quirk**: - -Settings relating to ACPI, leave everything here as default. - -* **FadtEnableReset**: NO - * Enable reboot and shutdown on legacy hardware, not recommended unless needed -* **NormalizeHeaders**: NO - * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 -* **RebaseRegions**: NO - * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. -* **ResetHwSig**: NO - * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation -* **ResetLogoStatus**: NO - * Workaround for OEM Windows logo not drawing on systems with BGRT tables. - -## Booter - -![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) - -This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi - -**MmioWhitelist**: - -This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with `DevirtualiseMmio` - -**Quirks**: - -Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` - -* **AvoidRuntimeDefrag**: YES - * Fixes UEFI runtime services like date, time, NVRAM, power control, etc -* **DevirtualiseMmio**: NO - * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems -* **DisableSingleUser**: NO - * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines -* **DisableVariableWrite**: NO - * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works -* **DiscardHibernateMap**: NO - * Reuse original hibernate memory map, only needed for certain legacy hardware -* **EnableSafeModeSlide**: YES - * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: YES - * Removes write protection from CR0 register during their execution -* **ForceExitBootServices**: NO - * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary -* **ProtectSecureBoot**: NO - * Fixes secureboot keys on MacPro5,1 and Insyde firmwares -* **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems -* **ProvideCustomSlide**: YES - * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary -* **SignalAppleOS**: NO - * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used - -## DeviceProperties - -![DeviceProperties](https://i.imgur.com/N44BEKs.png) - -**Add**: Sets device properties from a map. - -This section is set up via WhateverGreen's [Framebuffer Patching Guide](https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md) and is used for fixing certain iGPU properties like `ig-platform-id`. The way we get the proper value for this is to look at the framebuffer we intend to use, then swap the pairs of hex bytes. - -If we think of our ig-plat as `0xAABBCCDD`, our swapped version would look like `DDCCBBAA` - -The two ig-platform-id's we use are as follows: - -* `0x19120000` - this is used when the Desktop iGPU is used to drive a display - * `00001219` when hex-swapped -* `0x19120001` - this is used when the Desktop iGPU is only used for computing tasks and doesn't drive a display - * `01001219` when hex-swapped - -We also add 2 more properties, `framebuffer-patch-enable` and `framebuffer-stolenmem`. The first enables patching via WhateverGreen.kext, and the second sets the min stolen memory to 19MB. This is usually unnecessary, as this can be configured in BIOS(64MB recommended) but required when not available. - -| Key | Type | Value | -| :--- | :--- | :--- | -| AAPL,ig-platform-id | Data | 00001219 | -| framebuffer-patch-enable | Data | 01000000 | -| framebuffer-stolenmem | Data | 00003001 | - -(This is an example for a desktop HD 530 without a dGPU and no BIOS options for iGPU memory) - -**Special note**: Mobile users should refer to mobile iGPU section for what properties should be used: [iGPU Patching](https://1revenger1.gitbook.io/laptop-guide/prepare-install-macos/display-configuration#igpu-patching) - -`PciRoot(0x0)/Pci(0x1f,0x3)` -> `Layout-id` - -* Applies AppleALC audio injection, you'll need to do your own research on which codec your motherboard has and match it with AppleALC's layout. [AppleALC Supported Codecs](https://github.com/acidanthera/AppleALC/wiki/Supported-codecs). - -For us, we'll be using the boot-arg `alcid=xxx` instead to accomplish this. `alcid` will override all other layout-IDs present - -**Block**: Removes device properties from map, for us we can ignore this - -Fun Fact: The reason the byte order is swapped is due to [Endianness](https://en.wikipedia.org/wiki/Endianness), specifically Little Endians that modern CPUs use for ordering bytes. The more you know! - -## Kernel - -![Kernel](https://media.discordapp.net/attachments/456913818467958789/681335231080300564/Screen_Shot_2020-02-23_at_8.02.45_PM.png?width=1486&height=1771) - -**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. - -* **BundlePath** - * Name of the kext - * ex: `Lilu.kext` -* **Enabled** - * Self-explanatory, either enables or disables the kext -* **ExecutablePath** - * 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. Do note that plist only kexts do not need this filled in. - * ex: `Contents/MacOS/Lilu` -* **PlistPath** - * Path to the `info.plist` hidden within the kext - * ex: `Contents/Info.plist` - -**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons - -* **CpuidMask**: Leave this blank -* **CpuidData**: Leave this blank - -**Block**: Blocks kexts from loading. Not relevant for us - -**Patch**: Patches both the kernel and kexts - -**Quirks**: - -Settings relating to the kernel, for us we'll be enabling `AppleCpuPmCfgLock`, `AppleXcpmCfgLock`, `DisableIOMapper`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default - -* **AppleCpuPmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmCfgLock**: YES - * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. **Please verify you can disable CFG-Lock, most systems won't boot with it on so requiring use of this quirk** -* **AppleXcpmExtraMsrs**: NO - * Disables multiple MSR access needed for unsupported CPUs like Pentiums and many Xeons. -* **AppleXcpmForceBoost**: NO - * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this -* **CustomSMBIOSGuid**: NO - * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops -* **DisableIoMapper**: YES - * Needed to get around VT-D if either unable to disable in BIOS or needed for other operating systems, much better alternative to `dart=0` as SIP can stay on in Catalina -* **DummyPowerManagement**: NO - * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore -* **ExternalDiskIcons**: NO - * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. -* **IncreasePciBarSize**: NO - * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this -* **LapicKernelPanic**: NO - * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` -* **PanicNoKextDump**: YES - * Allows for reading kernel panics logs when kernel panics occur -* **PowerTimeoutKernelPanic**: YES - * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. -* **ThirdPartyDrives**: NO - * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM -* **XhciPortLimit**: YES - * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. Please create a [USB map](https://usb-map.gitbook.io/project/) when possible. - -The reason being is that UsbInjectAll reimplements builtin macOS functionality without proper current tuning. It is much cleaner to just describe your ports in a single plist-only kext, which will not waste runtime memory and such - -## Misc - -![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) - -**Boot**: Settings for boot screen (Leave everything as default) -* **HibernateMode**: None - * Best to avoid hibernation with Hackintoshes all together -* **PickerMode**: `Builtin` - * Sets OpenCore to use the builtin picker -* **HideAuxiliary**: NO - * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour -* **HideSelf**: YES - * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: - * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info -* **PickerAudioAssist**: NO - * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled -* **PollAppleHotKeys**: NO - * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: - * `Cmd+V`: Enables verbose - * `Cmd+Opt+P+R`: Cleans NVRAM - * `Cmd+R`: Boots Recovery partition - * `Cmd+S`: Boot in Single-user mode - * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key -* **TakeoffDelay**: `0` - * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support -* **Timeout**: `5` - * This sets how long OpenCore will wait until it automatically boots from the default selection - -**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) - -* **AppleDebug**: YES - * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer -* **DisableWatchDog**: YES - * Disables the UEFI watchdog, can help with early boot issues -* **Target**: `67` - * Shows more debug information, requires debug version of OpenCore -* **DisplayLevel**: `2147483714` - * Shows even more debug information, requires debug version of OpenCore - -These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) - - -**Security**: Security is pretty self-explanatory, **do not skip** - -We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` - -* **AllowNvramReset**: YES - * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` -* **AllowSetDefault**: YES - * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker -* **AuthRestart**: NO: - * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional -* **ExposeSensitiveData**: `6` - * Shows more debug information, requires debug version of OpenCore -* **Vault**: `Optional` - * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** -* **ScanPolicy**: `0` - * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** - -**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools -* **Name** - * Name shown in OpenCore -* **Enabled** - * Self-explanatory, enables or disables -* **Path** - * Path to file after the `Tools` folder - * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) - -**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore - -Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info - -## NVRAM - -![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) - -**Add**: - -4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) - -* **UIScale**: - * `01`: Standard resolution(Clover equivalent is `0x28`) - * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) - -* **DefaultBackgroundColor**: Background color used by boot.efi - * `00000000`: Syrah Black - * `BFBFBF00`: Light Gary - -7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) - -* **boot-args**: - * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. - * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. - * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. - * **alcid=1** - used for setting layout-id for AppleALC, see [supported codecs](https://github.com/acidanthera/applealc/wiki/supported-codecs) to figure out which layout to use for your specific system. - * **-wegnoegpu** - Disables all other GPUs besides the integrated GPU, needed as the dGPUs in laptops are not supported - - -* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition - -csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: - -* `00000000` - SIP completely enabled -* `03000000` - Allow unsigned kexts and writing to protected fs locations -* `E7030000` - SIP completely disabled - -Recommended to leave enabled for best security practices - -* **nvda\_drv**: <> - * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** -* **prev-lang:kbd**: <> - * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): - * American: `en-US:0`(`656e2d55533a30` in HEX) - * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) - * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX - -| Key | Type | Value | -| :--- | :--- | :--- | -| prev-lang:kbd | String | en-US:0 | - -**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. - -**LegacyEnable**: NO -* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM - -**LegacyOverwrite**: NO -* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM - -**LegacySchema** -* Used for assigning NVRAM variables, used with LegacyEnable set to YES - -**WriteFlash**: YES -* Enables writing to flash memory for all added variables. - -## Platforminfo - -![PlatformInfo](https://i.imgur.com/RKIXoi5.png) - -For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. - -For this Skylake example, we'll choose the MacBookPro13,1 SMBIOS. The typical breakdown is as follows: - -| SMBIOS | CPU Type | GPU Type | Display Size | -| :--- | :--- | :--- | :--- | -| MacBook9,1 | Dual Core 7w(Low End) | iGPU: HD 515 | 12" | -| MacBookPro13,1 | Dual Core 15w(Low End) | iGPU: Iris 540 | 13" | -| MacBookPro13,2 | Dual Core 15w(High End) | iGPU: Iris 550 | 13" | -| MacBookPro13,3 | Quad Core 45w | iGPU: HD 530 + dGPU: RP450/455 | 15" | - -Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: - -```text - ####################################################### - # MacBookPro13,1 SMBIOS Info # -####################################################### - -Type: MacBookPro13,1 -Serial: C02S3HYWGG7L -Board Serial: C02629102GUGPF7AD -SmUUID: 3508AD44-B67D-4AD7-A109-7955130A1033 -``` -The `Type` part gets copied to Generic -> SystemProductName. - -The `Serial` part gets copied to Generic -> SystemSerialNumber. - -The `Board Serial` part gets copied to Generic -> MLB. - -The `SmUUID` part gets copied toto Generic -> SystemUUID. - -We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) - -**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** - -[Apple Check Coverage page](https://checkcoverage.apple.com) - -**Automatic**: YES - -* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections - -**Generic**: - -* **SpoofVendor**: YES - * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case -* **SupportsCsm**: NO - * Used for when the EFI partition isn't first on the windows drive - -**UpdateDataHub**: YES - -* Update Data Hub fields - -**UpdateNVRAM**: YES - -* Update NVRAM fields - -**UpdateSMBIOS**: YES - -* Updates SMBIOS fields - -**UpdateSMBIOSMode**: Create - -* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk - -## UEFI - -![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518959873425639/Screen_Shot_2020-02-29_at_8.40.06_PM.png) - -**ConnectDrivers**: YES - -* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. - -**Drivers**: Add your .efi drivers here - -Only drivers present here should be: - -* HfsPlus.efi -* ApfsDriverLoader.efi -* OpenRuntime.efi - -**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS - -* **AudioSupport**: NO - * Used for enabling the audio port out, this requires AudioOut -* **AudioDevice**: [Blank] - * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this -* **AudioCodec**: 0 - * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService -* **AudioOut**: 0 - * Specifies which output is used, use the debug log to see what your board has - * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) -* **MinimumVolume**: 20 - * Default sound level for audio output -* **PlayChime**: NO - * Emulates the iconic Mac startup sound - * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio -* **VolumeAmplifier**: 0 - * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation - -**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support - -* **KeyFiltering**: NO - * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards -* **KeyForgetThreshold**: `5` - * The delay between each key input when holding a key down, for best results use `5` milliseconds -* **KeyMergeThreshold**: `2` - * The length of time that a key will be registered before resetting, for best results use `2` milliseconds -* **KeySupport**: `YES` - * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi -* **KeySupportMode**: `Auto` - * Keyboard translation for OpenCore -* **KeySwap**: `NO` - * Swaps `Option` and `Cmd` key -* **PointerSupport**: `NO` - * Used for fixing broken pointer support, commonly used for Z87 Asus boards -* **PointerSupportMode**: - * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank -* **TimerResolution**: `50000` - * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some - -**Output**: Relating to visual output - -* **TextRenderer**: `BuiltinGraphics` - * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly -* **ConsoleMode**: [Blank] - * Specifies Console output size, best to keep it blank -* **Resolution**: `Max` - * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) -* **ClearScreenOnModeSwitch**: NO - * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer -* **IgnoreTextInGraphics**: NO - * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer -* **ProvideConsoleGop**: YES - * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** -* **DirectGopRendering**: NO - * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users -* **ReconnectOnResChange**: NO -* **ReplaceTabWithSpace**: NO - * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed -* **SanitiseClearScreen**: NO - * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer - -**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) - -* **AppleSmcIo**: NO - * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault -* **FirmwareVolume**: NO - * Fixes UI regarding Filevault, set to YES for better FileVault compatibility -* **HashServices**: NO - * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility -* **UnicodeCollation**: NO - * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) - - -**Quirks**: - -* **ExitBootServicesDelay**: `0` - * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 -* **IgnoreInvalidFlexRatio**: NO - * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems -* **ReleaseUsbOwnership**: NO - * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` -* **RequestBootVarFallback**: YES - * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. -* **RequestBootVarRouting**: YES - * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. -* **UnblockFsConnect**: NO - * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed - -## Cleaning up - -And now you're ready to save and place it into your EFI under EFI/OC. - -For those having booting issues, please make sure to read the [Troubleshooting section](../troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: - -* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) -* [r/Hackintosh Discord](https://discord.gg/2QYd7ZT) - -**Sanity check**: - -So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: - -* [**Sanity Checker**](https://opencore.slowgeek.com) - -# Intel BIOS settings - -**Disable:** - -* Fast Boot -* VT-d(can be enabled if you set `DisableIoMapper` to YES) -* CSM -* Thunderbolt -* Intel SGX -* Intel Platform Trust -* CFG Lock(MSR 0xE2 write protection)(**This must be off, if you can't find the option then enable both `AppleCpuPmCfgLock` and `AppleXcpmCfgLock` under Kernel -> Quirks. Your hack will not boot with CFG-Lock enabled**) - -**Enable:** - -* VT-x -* Above 4G decoding -* Hyper-Threading -* Execute Disable Bit -* EHCI/XHCI Hand-off -* OS type: Windows 8.1/10 UEFI Mode -* DVMT Pre-Allocated(iGPU Memory): 64MB - -# [Post-install](/post-install/README.md) From c3f98a4f399454604f2e90d2687772a86ef0e5e5 Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com> Date: Sat, 4 Apr 2020 20:55:33 -0600 Subject: [PATCH 6/8] Add 0.5.7 Booter support --- AMD/AMD-config.md | 14 +++++++++----- config-HEDT/broadwell-e.md | 13 ++++++++----- config-HEDT/haswell-e.md | 13 ++++++++----- config-HEDT/skylake-x.md | 16 +++++++++------- config.plist/coffee-lake.md | 15 +++++++++------ config.plist/haswell.md | 13 ++++++++----- config.plist/ivy-bridge.md | 13 ++++++++----- config.plist/kaby-lake.md | 17 ++++++++++------- config.plist/skylake.md | 17 ++++++++++------- extras/kalsr-fix.md | 2 +- 10 files changed, 80 insertions(+), 53 deletions(-) diff --git a/AMD/AMD-config.md b/AMD/AMD-config.md index 3477cb55b5..2b611e5ad7 100644 --- a/AMD/AMD-config.md +++ b/AMD/AMD-config.md @@ -104,20 +104,24 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Removes write protection from CR0 register during their execution * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectMemoryRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, generally only needed on very old firmwares * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares * **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and newer Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **RebuildAppleMemoryMap**: YES + * Generates Memory Map compatible with macOS, recommended over using `EnableWriteUnprotector` on Skylake and newer * **SetupVirtualMap**: YES * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary + * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used +* **SyncRuntimePermissions**: NO + * Fixes alignment with MAT tables and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for Skylake and newer + ## DeviceProperties ![DeviceProperties](https://media.discordapp.net/attachments/456913818467958789/681334251865636866/Screen_Shot_2020-02-23_at_7.58.51_PM.png?width=1674&height=866) diff --git a/config-HEDT/broadwell-e.md b/config-HEDT/broadwell-e.md index 6a8b5f7921..5583adf48f 100644 --- a/config-HEDT/broadwell-e.md +++ b/config-HEDT/broadwell-e.md @@ -101,20 +101,23 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Removes write protection from CR0 register during their execution * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectMemoryRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, generally only needed on very old firmwares * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares * **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and newer Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **RebuildAppleMemoryMap**: YES + * Generates Memory Map compatible with macOS, recommeneded for ATPIO IV firmwares and HEDT platforms * **SetupVirtualMap**: YES * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used +* **SyncRuntimePermissions**: NO + * Fixes alignment with MAT tables and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for Skylake and newer + ## DeviceProperties diff --git a/config-HEDT/haswell-e.md b/config-HEDT/haswell-e.md index e7e569bd9a..d61f5ebd03 100644 --- a/config-HEDT/haswell-e.md +++ b/config-HEDT/haswell-e.md @@ -101,20 +101,23 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Removes write protection from CR0 register during their execution * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectMemoryRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, generally only needed on very old firmwares * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares * **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and newer Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **RebuildAppleMemoryMap**: YES + * Generates Memory Map compatible with macOS, recommeneded for ATPIO IV firmwares and HEDT platforms * **SetupVirtualMap**: YES * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used +* **SyncRuntimePermissions**: NO + * Fixes alignment with MAT tables and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for Skylake and newer. Mainly relevant for Skylake and newer + ## DeviceProperties diff --git a/config-HEDT/skylake-x.md b/config-HEDT/skylake-x.md index 9b33823b08..9d60f5356c 100644 --- a/config-HEDT/skylake-x.md +++ b/config-HEDT/skylake-x.md @@ -98,24 +98,26 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Reuse original hibernate memory map, only needed for certain legacy hardware * **EnableSafeModeSlide**: YES * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: YES - * Removes write protection from CR0 register during their execution +* **EnableWriteUnprotector**: NO + * Removes write protection from CR0 register during their execution, should not be used with the combination of `RebuildAppleMemoryMap` and `SyncRuntimePermissions` unless you recieve early kernel panics * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectMemoryRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, generally only needed on very old firmwares * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares * **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and newer Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **RebuildAppleMemoryMap**: YES + * Generates Memory Map compatible with macOS, recommended over using `EnableWriteUnprotector` on Skylake and newer * **SetupVirtualMap**: YES * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used +* **SyncRuntimePermissions**: YES + * Fixes alignment with MAT tables and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for Skylake and newer ## DeviceProperties diff --git a/config.plist/coffee-lake.md b/config.plist/coffee-lake.md index e4f88ad16d..7860af8aaa 100644 --- a/config.plist/coffee-lake.md +++ b/config.plist/coffee-lake.md @@ -101,12 +101,12 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Reuse original hibernate memory map, only needed for certain legacy hardware * **EnableSafeModeSlide**: YES * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: YES - * Removes write protection from CR0 register during their execution +* **EnableWriteUnprotector**: NO + * Removes write protection from CR0 register during their execution, should not be used with the combination of `RebuildAppleMemoryMap` and `SyncRuntimePermissions` unless you recieve early kernel panics * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectMemoryRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, generally only needed on very old firmwares * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares * **ProtectUefiServices**: NO @@ -114,12 +114,15 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * If on Z390, **enable this quirk** * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **RebuildAppleMemoryMap**: YES + * Generates Memory Map compatible with macOS, recommended over using `EnableWriteUnprotector` on Skylake and newer * **SetupVirtualMap**: YES * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used +* **SyncRuntimePermissions**: YES + * Fixes alignment with MAT tables and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for Skylake and newer + ## DeviceProperties diff --git a/config.plist/haswell.md b/config.plist/haswell.md index bd6a46bb6b..01e8908637 100644 --- a/config.plist/haswell.md +++ b/config.plist/haswell.md @@ -105,20 +105,23 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Removes write protection from CR0 register during their execution * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectMemoryRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, generally only needed on very old firmwares * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares * **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and newer Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **RebuildAppleMemoryMap**: YES + * Generates Memory Map compatible with macOS, recommeneded for ATPIO IV firmwares and HEDT platforms * **SetupVirtualMap**: YES * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used +* **SyncRuntimePermissions**: NO + * Fixes alignment with MAT tables and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for Skylake and newer + ## DeviceProperties diff --git a/config.plist/ivy-bridge.md b/config.plist/ivy-bridge.md index daa3fe99b4..e61ffe7814 100644 --- a/config.plist/ivy-bridge.md +++ b/config.plist/ivy-bridge.md @@ -103,20 +103,23 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Removes write protection from CR0 register during their execution * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectMemoryRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, generally only needed on very old firmwares * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares * **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and newer Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **RebuildAppleMemoryMap**: YES + * Generates Memory Map compatible with macOS, recommeneded for ATPIO IV firmwares and HEDT platforms * **SetupVirtualMap**: YES * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used +* **SyncRuntimePermissions**: NO + * Fixes alignment with MAT tables and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for Skylake and newer + ## DeviceProperties ![DeviceProperties](https://i.imgur.com/Aw9t9vI.png) diff --git a/config.plist/kaby-lake.md b/config.plist/kaby-lake.md index 5f64bd286c..6cd75759de 100644 --- a/config.plist/kaby-lake.md +++ b/config.plist/kaby-lake.md @@ -96,24 +96,27 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Reuse original hibernate memory map, only needed for certain legacy hardware * **EnableSafeModeSlide**: YES * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: YES - * Removes write protection from CR0 register during their execution +* **EnableWriteUnprotector**: NO + * Removes write protection from CR0 register during their execution, should not be used with the combination of `RebuildAppleMemoryMap` and `SyncRuntimePermissions` unless you recieve early kernel panics * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectMemoryRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, generally only needed on very old firmwares * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares * **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and newer Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **RebuildAppleMemoryMap**: YES + * Generates Memory Map compatible with macOS, recommended over using `EnableWriteUnprotector` on Skylake and newer * **SetupVirtualMap**: YES * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used +* **SyncRuntimePermissions**: YES + * Fixes alignment with MAT tables and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for Skylake and newer + ## DeviceProperties diff --git a/config.plist/skylake.md b/config.plist/skylake.md index d50bbeda53..d41ae6e417 100644 --- a/config.plist/skylake.md +++ b/config.plist/skylake.md @@ -96,24 +96,27 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Reuse original hibernate memory map, only needed for certain legacy hardware * **EnableSafeModeSlide**: YES * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: YES - * Removes write protection from CR0 register during their execution +* **EnableWriteUnprotector**: NO + * Removes write protection from CR0 register during their execution, should not be used with the combination of `RebuildAppleMemoryMap` and `SyncRuntimePermissions` unless you recieve early kernel panics * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary -* **ProtectCsmRegion**: NO - * Needed for fixing artefacts and sleep-wake issues, AvoidRuntimeDefrag resolves this already so avoid this quirk unless necessary +* **ProtectMemoryRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, generally only needed on very old firmwares * **ProtectSecureBoot**: NO * Fixes secureboot keys on MacPro5,1 and Insyde firmwares * **ProtectUefiServices**: NO - * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and certain Coffeelake systems + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and newer Coffeelake systems * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **RebuildAppleMemoryMap**: YES + * Generates Memory Map compatible with macOS, recommended over using `EnableWriteUnprotector` on Skylake and newer * **SetupVirtualMap**: YES * Fixes SetVirtualAddresses calls to virtual addresses -* **ShrinkMemoryMap**: NO - * Needed for systems with large memory maps that don't fit, don't use unless necessary * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used +* **SyncRuntimePermissions**: YES + * Fixes alignment with MAT tables and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for Skylake and newer + ## DeviceProperties diff --git a/extras/kalsr-fix.md b/extras/kalsr-fix.md index 1d32952411..3cfeafe47b 100644 --- a/extras/kalsr-fix.md +++ b/extras/kalsr-fix.md @@ -62,7 +62,7 @@ The real fix to this is quite simple actually, the process is both the same for * Kinda need that slide to do any real work. * SetupVirtualMap: `YES` * Creates a layer between macOS and your memory map for greater support and fewer chances of insecure write access. - * ShrinkMemoryMap: `YES` + * RebuildAppleMemoryMap: `YES` * Fixes issues with very large memory maps that don't fit, very useful for X99 and X299 platforms and sometimes for Z390. ## Prepping the BIOS From 3c82c0c9fbfafecf6dab03d9e01ce5dfb1019bd0 Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com> Date: Sat, 4 Apr 2020 21:20:52 -0600 Subject: [PATCH 7/8] Keep `EnableWriteUnprotector` enabled Just to make sure the hack boots --- config-HEDT/skylake-x.md | 4 ++-- config.plist/coffee-lake.md | 4 ++-- config.plist/kaby-lake.md | 4 ++-- config.plist/skylake.md | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/config-HEDT/skylake-x.md b/config-HEDT/skylake-x.md index 9d60f5356c..cfa83b365d 100644 --- a/config-HEDT/skylake-x.md +++ b/config-HEDT/skylake-x.md @@ -98,8 +98,8 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Reuse original hibernate memory map, only needed for certain legacy hardware * **EnableSafeModeSlide**: YES * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: NO - * Removes write protection from CR0 register during their execution, should not be used with the combination of `RebuildAppleMemoryMap` and `SyncRuntimePermissions` unless you recieve early kernel panics +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary * **ProtectMemoryRegion**: NO diff --git a/config.plist/coffee-lake.md b/config.plist/coffee-lake.md index 7860af8aaa..f72aad0f75 100644 --- a/config.plist/coffee-lake.md +++ b/config.plist/coffee-lake.md @@ -101,8 +101,8 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Reuse original hibernate memory map, only needed for certain legacy hardware * **EnableSafeModeSlide**: YES * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: NO - * Removes write protection from CR0 register during their execution, should not be used with the combination of `RebuildAppleMemoryMap` and `SyncRuntimePermissions` unless you recieve early kernel panics +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary * **ProtectMemoryRegion**: NO diff --git a/config.plist/kaby-lake.md b/config.plist/kaby-lake.md index 6cd75759de..37530b8de2 100644 --- a/config.plist/kaby-lake.md +++ b/config.plist/kaby-lake.md @@ -96,8 +96,8 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Reuse original hibernate memory map, only needed for certain legacy hardware * **EnableSafeModeSlide**: YES * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: NO - * Removes write protection from CR0 register during their execution, should not be used with the combination of `RebuildAppleMemoryMap` and `SyncRuntimePermissions` unless you recieve early kernel panics +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary * **ProtectMemoryRegion**: NO diff --git a/config.plist/skylake.md b/config.plist/skylake.md index d41ae6e417..9e85af84f5 100644 --- a/config.plist/skylake.md +++ b/config.plist/skylake.md @@ -82,7 +82,7 @@ This section is allowing spaces to be passthrough to macOS that are generally ig **Quirks**: -Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` +Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap`, `RebuildAppleMemoryMap` and `SyncRuntimePermissions` * **AvoidRuntimeDefrag**: YES * Fixes UEFI runtime services like date, time, NVRAM, power control, etc @@ -96,8 +96,8 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * Reuse original hibernate memory map, only needed for certain legacy hardware * **EnableSafeModeSlide**: YES * Allows for slide values to be used in Safemode -* **EnableWriteUnprotector**: NO - * Removes write protection from CR0 register during their execution, should not be used with the combination of `RebuildAppleMemoryMap` and `SyncRuntimePermissions` unless you recieve early kernel panics +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution * **ForceExitBootServices**: NO * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary * **ProtectMemoryRegion**: NO From b7c4106b07a91c1a5c001cbd6be974318b8e7e8d Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk <48863253+khronokernel@users.noreply.github.com> Date: Sun, 5 Apr 2020 23:41:21 -0600 Subject: [PATCH 8/8] 0.5.7 mega commit --- AMD/fx.md | 540 +++++++++++++++++++++++++++++ AMD/{AMD-config.md => zen.md} | 25 +- README.md | 2 +- SUMMARY.md | 4 +- config-HEDT/broadwell-e.md | 14 +- config-HEDT/haswell-e.md | 16 +- config-HEDT/skylake-x.md | 14 +- config.plist/coffee-lake.md | 14 +- config.plist/haswell.md | 12 +- config.plist/ivy-bridge.md | 12 +- config.plist/kaby-lake.md | 14 +- config.plist/skylake.md | 14 +- extras/kalsr-fix.md | 52 +-- installer-guide/opencore-efi.md | 19 +- ktext.md | 3 +- troubleshooting/troubleshooting.md | 16 +- 16 files changed, 672 insertions(+), 99 deletions(-) create mode 100644 AMD/fx.md rename AMD/{AMD-config.md => zen.md} (96%) diff --git a/AMD/fx.md b/AMD/fx.md new file mode 100644 index 0000000000..afd36d79b6 --- /dev/null +++ b/AMD/fx.md @@ -0,0 +1,540 @@ +# Bulldozer(15h) and Jaguar(16h) + +* Supported version: 0.5.7 + +## Starting Point + +So making a config.plist may seem hard, its not. It just takes some time but this guide will tell you how to configure eveything, you won't be left in the cold. This also means if you have issues, review your config settings to make sure they're correct. Main things to note with OpenCore: + +* **All properties must be defined**, there are no default OpenCore will fall back on so **do not delete sections unless told explicitly so**. If the guide doesn't mention the option, leave it at default. +* **The Sample.plist cannot be used As-Is**, you must configure it to your system +* **DO NOT USE CONFIGURATORS**, these rarely respect OpenCore's configuration and even some like Mackie's will add Clover properties and corrupt plists! + +Now with all that, we'll need some things to get started: + +* [ProperTree](https://github.com/corpnewt/ProperTree): For editing our config, this editor has some super useful tools for OpenCore +* [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS): For generating our SMBIOS +* [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download +* [AMD Kernel Patches](https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore): Needed for booting macOS on AMD hardware(save these for later, we'll go over how to use them below) + * [Bulldozer/Jaguar(15h/16h)](https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore/15h_16h) (Supports 10.13, 10.14, and 10.15) + +Now with those downloaded, we can get to really get started: + +* Grab the **Sample.plist** and rename to **config.plist** +* Open your new config.plist in ProperTree + * macOS: `ProperTree.command` + * Windows: `ProperTree.bat` +* Run the Clean Snapshot function(**Cmd/Ctrl + Shift + R** and point it at your EFI/OC folder), + * This will remove all the entries from the config.plist and then adds all your SSDTs, Kexts and Firmware drivers to the config + * Cmd+R is another option that will add all your files as well but will leave entries disabled if they were set like that before, useful for when you're troubleshooting + +And now you're ready to configure it! + +**And read this guide more than once before setting up OpenCore and make sure you have it set up correctly. Do note that images will not always be the most up-to-date so please read the text below them, if nothing's mentioned then leave as default.** + +## ACPI + +![ACPI](https://i.imgur.com/zqNt4dV.png) + + +**Add:** + +This is where you'll add SSDTs for your system, these are very important to **booting macOS** and have many uses like [USB maps](https://usb-map.gitbook.io/project/), [disabling unsupported GPUs](/post-install/spoof.md) and such. And with our system, **its even required to boot**. Guide on making them found here: [**Getting started with ACPI**](../extras/acpi.md) + +* [SSDT-EC-USBX](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-EC-USBX.dsl) + * Hides the Embedded controller and creates a fake one for macOS, **needed for all Catalina users** and recommended for other versions of macOS + * This SSDT also has a second function, USBX. This is used for forcing USB power properties and requires SSDT-EC so this just jumbles them together. + * I've also provided a precompiled version for users with `EC0`, this is the most common device on AMD systems: [SSDT-EC-USBX-AMD.aml](https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/extra-files/SSDT-EC-USBX-AMD.aml) + + Note that you **should not** add your generated `DSDT.aml` here, it is already in your firmware. So if present, remove the entry for it in your `config.plist` and under EFI/ACPI. + +For those wanting a deeper dive into dumping your DSDT, how to make these SSDTs, and compiling them, please see the [**Getting started with ACPI**](../extras/acpi.md) **page.** Compiled SSDTs have a **.aml** extension(Assembled) and will go into the `EFI/OC/ACPI` folder and **must** be specified in your config under `ACPI -> Add` as well. + +**Block** + +This blocks certain ACPI tabes from loading, for us we can ignore this + +**Patch**: + +This section allows us to dynamically modify parts of the ACPI (DSDT, SSDT, etc.) via OpenCore. For us, our patches are handled by our SSDTs. This is a much cleaner solution as this will allow us to boot Windows and other OSes with OpenCore + +**Quirk**: + +Settings relating to ACPI, leave everything here as default. + +* **FadtEnableReset**: NO + * Enable reboot and shutdown on legacy hardware, not recommended unless needed +* **NormalizeHeaders**: NO + * Cleanup ACPI header fields, only relevant for macOS High Sierra 10.13 +* **RebaseRegions**: NO + * Attempt to heuristically relocate ACPI memory regions, not needed unless custom DSDT is used. +* **ResetHwSig**: NO + * Needed for hardware that fails to maintain hardware signature across the reboots and cause issues with waking from hibernation +* **ResetLogoStatus**: NO + * Workaround for OEM Windows logo not drawing on systems with BGRT tables. + +## Booter + +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/696573787994325013/Screen_Shot_2020-04-05_at_10.15.09_PM.png) + +This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi + +**MmioWhitelist**: + +This section is allowing spaces to be passthrough to macOS that are generally ignored, useful when paired with `DevirtualiseMmio` + +**Quirks**: + +Settings relating to boot.efi patching and firmware fixes, one we need to change is `RebuildAppleMemoryMap` + +* **AvoidRuntimeDefrag**: YES + * Fixes UEFI runtime services like date, time, NVRAM, power control, etc +* **DevirtualiseMmio**: NO + * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems +* **DisableSingleUser**: NO + * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines +* **DisableVariableWrite**: NO + * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works +* **DiscardHibernateMap**: NO + * Reuse original hibernate memory map, only needed for certain legacy hardware +* **EnableSafeModeSlide**: YES + * Allows for slide values to be used in Safemode +* **EnableWriteUnprotector**: YES + * Removes write protection from CR0 register during their execution +* **ForceExitBootServices**: NO + * Ensures ExitBootServices calls succeeds even when MemoryMap has changed, don't use unless necessary +* **ProtectMemoryRegion**: NO + * Needed for fixing artefacts and sleep-wake issues, generally only needed on very old firmwares +* **ProtectSecureBoot**: NO + * Fixes secureboot keys on MacPro5,1 and Insyde firmwares +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, Icelake and newer Coffeelake systems +* **ProvideCustomSlide**: YES + * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message +* **RebuildAppleMemoryMap**: YES + * Generates Memory Map compatible with macOS +* **SetupVirtualMap**: YES + * Fixes SetVirtualAddresses calls to virtual addresses, not needed on Skylake and newer +* **SignalAppleOS**: NO + * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used +* **SyncRuntimePermissions**: NO + * Fixes alignment with MAT tables and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for Skylake and newer + +## DeviceProperties + +![DeviceProperties](https://media.discordapp.net/attachments/456913818467958789/681334251865636866/Screen_Shot_2020-02-23_at_7.58.51_PM.png?width=1674&height=866) + +**Add**: Sets device properties from a map. + +By default, the Sample.plist has this section set for iGPU and Audio. We have no iGPU so PCIRoot `PciRoot(0x0)/Pci(0x2,0x0)` can be removed from `Add` section. For audio we'll be setting the layout in the boot-args section, so removal of `PciRoot(0x0)/Pci(0x1b,0x0)` is also recommended from both `Add` and `Block` sections + +TL;DR, delete all the PciRoot's here as we won't be using this section. + +## Kernel + +![Kernel](https://cdn.discordapp.com/attachments/456913818467958789/681344557090209798/Screen_Shot_2020-02-23_at_8.39.33_PM.png) +![](https://cdn.discordapp.com/attachments/456913818467958789/681344552526675988/Screen_Shot_2020-02-23_at_8.39.49_PM.png) + +**Add**: Here's where you specify which kexts to load, order matters here so make sure Lilu.kext is always first! Other higher priority kexts come after Lilu such as VirtualSMC, AppleALC, WhateverGreen, etc. A reminder that [ProperTree](https://github.com/corpnewt/ProperTree) users can run **Cmd/Ctrl + Shift + R** to add all their kexts in the correct order without manually typing each kext out. + +* **BundlePath** + * Name of the kext + * ex: `Lilu.kext` +* **Enabled** + * Self-explanatory, either enables or disables the kext +* **ExecutablePath** + * 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. Do note that plist only kexts do not need this filled in. + * ex: `Contents/MacOS/Lilu` +* **PlistPath** + * Path to the `info.plist` hidden within the kext + * ex: `Contents/Info.plist` + +**Emulate**: Needed for spoofing unsupported CPUs like Pentiums and Celerons(AMD CPUs don't require this) + +* **CpuidMask**: Leave this blank +* **CpuidData**: Leave this blank + +**Block**: Blocks kexts from loading. Not relevant for us + +**Patch**: This is where the AMD kernel patching magic happens. Please do note that `KernelToPatch` and `MatchOS` from Clover becomes `Kernel` and `MinKernel`/ `MaxKernel` in OpenCore, you can find pre-made patches by [AlGrey](https://amd-osx.com/forum/memberlist.php?mode=viewprofile&u=10918&sid=e0feb8a14a97be482d2fd68dbc268f97)(algrey#9303): + +Kernel patches: +* [Bulldozer/Jaguar(15h/16h)](https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore/15h_16h) (10.13, 10.14, and 10.15) + +To merge: +* Open both files, +* Delete the `Kernel -> Patch` section from config.plist +* Copy the `Kernel -> Patch` section from patches.plist +* Paste into where old patches were in config.plist + +![](/extra-files/gif.gif) + +**Quirks**: +Settings relating to the kernel, for us we'll be enabling `DummyPowerManagement`, `PanicNoKextDump`, `PowerTimeoutKernelPanic` and `XhciPortLimit`. Everything else should be left as default + +* **AppleCpuPmCfgLock**: NO + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be AppleIntelCPUPM. AMD users can ignore +* **AppleXcpmCfgLock**: NO + * Only needed when CFG-Lock can't be disabled in BIOS, Clover counterpart would be KernelPM. AMD users can ignore +* **AppleXcpmExtraMsrs**: NO + * Disables multiple MSR access needed for unsupported CPUs like Pentiums and certain Xeons +* **AppleXcpmForceBoost**: NO + * Forces maximum multiplier, only recommended to enable on scientific or media calculation machines that are constantly under load. Main Xeons benifit from this +* **CustomSMBIOSGuid**: NO + * Performs GUID patching for UpdateSMBIOSMode Custom mode. Usually relevant for Dell laptops. To be used in tandom with `PlatformInfo -> UpdateSMBIOSMode -> Custom` +* **DisableIoMapper**: NO + * AMD doesn't have DMAR or VT-D support so irrelevant +* **DummyPowerManagement**: YES + * New alternative to NullCPUPowerManagement, required for all AMD CPU based systems as there's no native power management. Intel can ignore +* **ExternalDiskIcons**: NO + * External Icons Patch, for when internal drives are treated as external drives but can also make USB drives internal. For NVMe on Z87 and below you just add built-in property via DeviceProperties. +* **IncreasePciBarSize**: NO + * Increases 32-bit PCI bar size in IOPCIFamily from 1 to 4 GB, enabling Above4GDecoding in the BIOS is a much cleaner and safer approach. Some X99 boards may require this, you'll generally expereince a kernel panic on IOPCIFamily if you need this +* **LapicKernelPanic**: NO + * Disables kernel panic on AP core lapic interrupt, generally needed for HP systems. Clover equivalent is `Kernel LAPIC` +* **PanicNoKextDump**: YES + * Allows for reading kernel panics logs when kernel panics occur +* **PowerTimeoutKernelPanic**: YES + * Helps fix kernel panics relating to power changes with Apple drivers in macOS Catalina, most notably with digital audio. +* **ThirdPartyDrives**: NO + * Enables TRIM, not needed for NVMe but AHCI based drives may require this. Please check under system report to see if your drive supports TRIM +* **XhciPortLimit**: YES + * This is actually the 15 port limit patch, don't rely on it as it's not a guaranteed solution for fixing USB. A more proper solution for AMD can be found here: [AMD USB Mapping](https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/AMD/AMD-USB-map.md) + + +## Misc + +![Misc](https://cdn.discordapp.com/attachments/683011276938543134/683011604182466560/Screen_Shot_2020-02-28_at_10.52.25_AM.png) + +**Boot**: Settings for boot screen (Leave everything as default) +* **HibernateMode**: None + * Best to avoid hibernation with Hackintoshes all together +* **PickerMode**: `Builtin` + * Sets OpenCore to use the builtin picker +* **HideAuxiliary**: NO + * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour +* **HideSelf**: YES + * Hides the EFI partition as a boot option in OC's boot picker +* **ConsoleAttributes**: `0` + * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAttributes**: `0` + * Used for setting custom picker attributes, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAudioAssist**: NO + * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled +* **PollAppleHotKeys**: NO + * Allows you to use Apple's hotkeys during boot, depending on the firmware you may need to use OpenUsbKbDxe.efi instead of OpenCore's builtin support. Do note that if you can select anything in OC's picker, disabling this option can help. Popular commands: + * `Cmd+V`: Enables verbose + * `Cmd+Opt+P+R`: Cleans NVRAM + * `Cmd+R`: Boots Recovery partition + * `Cmd+S`: Boot in Single-user mode + * `Option/Alt`: Shows boot picker when `ShowPicker` set to `NO`, an alternative is `ESC` key +* **TakeoffDelay**: `0` + * Used to add a delay for hotkeys when OpenCore is a bit to fast to register, 5000-10000 microseconds is the prefered range for users with broken hotkeys support +* **Timeout**: `5` + * This sets how long OpenCore will wait until it automatically boots from the default selection + +**Debug**: Helpful for debugging OpenCore boot issues(We'll be changing everything *but* `DisplayDelay`) + +* **AppleDebug**: YES + * Enables boot.efi logging, useful for debuuging. Note this is only supported on 10.15.4 and newer +* **DisableWatchDog**: YES + * Disables the UEFI watchdog, can help with early boot issues +* **Target**: `67` + * Shows more debug information, requires debug version of OpenCore +* **DisplayLevel**: `2147483714` + * Shows even more debug information, requires debug version of OpenCore + +These values are based of those calculated in [OpenCore debugging](/troubleshooting/debug.md) + + +**Security**: Security is pretty self-explanatory, **do not skip** + +We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `RequireVault` and `ScanPolicy` + +* **AllowNvramReset**: YES + * Allows for NVRAM reset both in the boot picker and when pressing `Cmd+Opt+P+R` +* **AllowSetDefault**: YES + * Allow `CTRL+Enter` and `CTRL+Index` to set default boot device in the picker +* **AuthRestart**: NO: + * Enables Authenticated restart for FileVault2 so password is not required on reboot. Can be concidered a security risk so optional +* **ExposeSensitiveData**: `6` + * Shows more debug information, requires debug version of OpenCore +* **Vault**: `Optional` + * We won't be dealing vaulting so we can ignore, **you won't boot with this set to Secure** +* **ScanPolicy**: `0` + * `0` allows you to see all drives available, please refer to [Security](/post-install/security.md) section for further details. **Will not boot USBs with this set to default** + +**Tools** Used for running OC debugging tools like the shell, ProperTree's snapshot function will add these for you. For us, we won't be using any tools +* **Name** + * Name shown in OpenCore +* **Enabled** + * Self-explanatory, enables or disables +* **Path** + * Path to file after the `Tools` folder + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) + +**Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore + +Won't be covered here, see 8.6 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info + +## NVRAM + +![NVRAM](https://cdn.discordapp.com/attachments/456913818467958789/681330600606826568/Screen_Shot_2020-02-23_at_7.44.23_PM.png) + +**Add**: + +4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14 (Booter Path, mainly used for UI Scaling) + +* **UIScale**: + * `01`: Standard resolution(Clover equivalent is `0x28`) + * `02`: HiDPI (generally required for FileVault to function correctly on smaller displays, Clover equivalent is `0x2A`) + +* **DefaultBackgroundColor**: Background color used by boot.efi + * `00000000`: Syrah Black + * `BFBFBF00`: Light Gary + +7C436110-AB2A-4BBB-A880-FE41995C9F82 (System Integrity Protection bitmask) + +* **boot-args**: + * **-v** - this enables verbose mode, which shows all the behind-the-scenes text that scrolls by as you're booting instead of the Apple logo and progress bar. It's invaluable to any Hackintosher, as it gives you an inside look at the boot process, and can help you identify issues, problem kexts, etc. + * **debug=0x100**- this disables macOS's watchdog which helps prevents a reboot on a kernel panic. That way you can *hopefully* glean some useful info and follow the breadcrumbs to get past the issues. + * **keepsyms=1** - this is a companion setting to debug=0x100 that tells the OS to also print the symbols on a kernel panic. That can give some more helpful insight as to what's causing the panic itself. + * **npci=0x2000** - this disables some PCI debugging related to `kIOPCIConfiguratorPFM64`, alternative is `npci= 0x3000` which disables debugging related to `gIOPCITunnelledKey`. Required for when getting stuck on `PCI Start Configuration` as there are IRQ conflicts relating to your PCI lanes. **Not needed if Above4GDecoding is enabled** + * **agdpmod=pikera** - used for disabling boardID on Navi GPUs(RX 5000 series), without this you'll get a black screen. **Don't use if you don't have Navi** + +* **csr-active-config**: Settings for SIP, generally recommended to manually change this within Recovery partition with `csrutil` via the recovery partition + +csr-active-config is set to `00000000` which enables System Integrity Protection. You can choose a number of other options to enable/disable sections of SIP. Some common ones are as follows: + +* `00000000` - SIP completely enabled +* `03000000` - Allow unsigned kexts and writing to protected fs locations +* `E7030000` - SIP completely disabled + +Recommended to leave enabled for best security practices + +* **nvda\_drv**: <> + * For enabling Nvidia WebDrivers, set to 31 if running a [Maxwell or Pascal GPU](https://github.com/khronokernel/Catalina-GPU-Buyers-Guide/blob/master/README.md#Unsupported-nVidia-GPUs). This is the same as setting nvda\_drv=1 but instead we translate it from [text to hex](https://www.browserling.com/tools/hex-to-text), Clover equivalent is `NvidiaWeb`. **AMD, Intel and Kepler GPU users should delete this section.** +* **prev-lang:kbd**: <> + * Needed for non-latin keyboards in the format of `lang-COUNTRY:keyboard`, recommeneded to keep blank though you can specify it(**Default in Sample config is Russian**): + * American: `en-US:0`(`656e2d55533a30` in HEX) + * Full list can be found in [AppleKeyboardLayouts.txt](https://github.com/acidanthera/OpenCorePkg/blob/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt) + * Hint: `prev-lang:kbd` can be changed into a String so you can input `en-US:0` directly instead of converting to HEX + +| Key | Type | Value | +| :--- | :--- | :--- | +| prev-lang:kbd | String | en-US:0 | + +**Block**: Forcibly rewrites NVRAM variables, do note that `Add` **will not overwrite** values already present in NVRAM so values like `boot-args` should be left alone. + +**LegacyEnable**: NO +* Allows for NVRAM to be stored on nvram.plist, needed for systems without native NVRAM + +**LegacyOverwrite**: NO +* Permits overwriting firmware variables from nvram.plist, only needed for systems without native NVRAM + +**LegacySchema** +* Used for assigning NVRAM variables, used with LegacyEnable set to YES + +**WriteFlash**: YES +* Enables writing to flash memory for all added variables. + +## Platforminfo + +![PlatformInfo](https://i.imgur.com/CrqeCea.png) + +For setting up the SMBIOS info, we'll use CorpNewt's [GenSMBIOS](https://github.com/corpnewt/GenSMBIOS) application. + +For this example, we'll choose the iMacPro1,1 SMBIOS but some SMBIOS play with certain GPUs better than others: + +* iMacPro1,1: AMD RX Polaris and newer +* MacPro7,1: AMD RX Polaris and newer(Note that MacPro7,1 is also a Catalina exclusive) +* MacPro6,1: AMD R5/R7/R9 and older +* iMac14,2: Nvidia Kepler and newer + + +Run GenSMBIOS, pick option 1 for downloading MacSerial and Option 3 for selecting out SMBIOS. This will give us an output similar to the following: + +```text + ####################################################### + # iMacPro1,1 SMBIOS Info # +####################################################### + +Type: iMacPro1,1 +Serial: C02YX0TZHX87 +Board Serial: C029269024NJG36CB +SmUUID: DEA17B2D-2F9F-4955-B266-A74C47678AD3 +``` + +The order is `Product | Serial | Board Serial (MLB)` + +The `Type` part gets copied to Generic -> SystemProductName. + +The `Serial` part gets copied to Generic -> SystemSerialNumber. + +The `Board Serial` part gets copied to Generic -> MLB. + +The `SmUUID` part gets copied toto Generic -> SystemUUID. + +We set Generic -> ROM to either an Apple ROM (dumped from a real Mac), your NIC MAC address, or any random MAC address (could be just 6 random bytes, for this guide we'll use `11223300 0000`. After install follow the [Fixing iServices](/post-install/iservices.md) page on how to find your real MAC Address) + +**Reminder that you want either an invalid serial or valid serial numbers but those not in use, you want to get a message back like: "Invalid Serial" or "Purchase Date not Validated"** + +[Apple Check Coverage page](https://checkcoverage.apple.com) + +**Automatic**: YES + +* Generates Platforminfo based on Generic section instead of DataHub, NVRAM, and SMBIOS sections + +**Generic**: + +* **SpoofVendor**: YES + * Swaps vendor field for Acidanthera, generally not safe to use Apple as a vendor in most case +* **AdviseWindows**: NO + * Used for when the EFI partition isn't first on the windows drive, generally found on systems that upgraded from Legacy to UEFI installs + +**UpdateDataHub**: YES +* Update Data Hub fields + +**UpdateNVRAM**: YES +* Update NVRAM fields + +**UpdateSMBIOS**: YES +* Updates SMBIOS fields + +**UpdateSMBIOSMode**: Create +* Replace the tables with newly allocated EfiReservedMemoryType, use Custom on Dell laptops requiring CustomSMBIOSGuid quirk + +## UEFI + +![UEFI](https://cdn.discordapp.com/attachments/683011276938543134/683518959873425639/Screen_Shot_2020-02-29_at_8.40.06_PM.png) + +**ConnectDrivers**: YES + +* Forces .efi drivers, change to NO will automatically connect added UEFI drivers. This can make booting slightly faster, but not all drivers connect themselves. E.g. certain file system drivers may not load. + +**Drivers**: Add your .efi drivers here + +Only drivers present here should be: + +* HfsPlus.efi +* ApfsDriverLoader.efi +* OpenRuntime.efi + +**Audio**: Related to AudioDxe settings, for us we'll be ignoring(leave as default). This is unrelated to audio support in macOS + +* **AudioSupport**: NO + * Used for enabling the audio port out, this requires AudioOut +* **AudioDevice**: [Blank] + * This will be the PciRoot of your audio device, [gfxutil](https://github.com/acidanthera/gfxutil/releases) and debug log are great ways to find this +* **AudioCodec**: 0 + * Specify your audio codec address, can be found in either debug log or with under `IOHDACodecAddress` in IOService +* **AudioOut**: 0 + * Specifies which output is used, use the debug log to see what your board has + * Same idea, can be found in either debug log or with [HdaCodecDump.efi](https://github.com/acidanthera/OpenCorePkg/releases) +* **MinimumVolume**: 20 + * Default sound level for audio output +* **PlayChime**: NO + * Emulates the iconic Mac startup sound + * This also requires [`AXEFIAudio_VoiceOver_Boot.wav`](https://github.com/acidanthera/OcBinaryData/blob/master/Resources/Audio/AXEFIAudio_VoiceOver_Boot.wav) under EFI/OC/Resources/Audio +* **VolumeAmplifier**: 0 + * Multiplication coefficient for system volume to raw volume linear translation from 0 to 1000, see [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info on calculation + +**Input**: Related to boot.efi keyboard passthrough used for FileVault and Hotkey support + +* **KeyFiltering**: NO + * Verifies and discards uninitialised data, mainly prevalent on 7 series Gigabyte boards +* **KeyForgetThreshold**: `5` + * The delay between each key input when holding a key down, for best results use `5` milliseconds +* **KeyMergeThreshold**: `2` + * The length of time that a key will be registered before resetting, for best results use `2` milliseconds +* **KeySupport**: `YES` + * Enables OpenCore's built in key support and **required for boot picker selection**, do not use with OpenUsbKbDxe.efi +* **KeySupportMode**: `Auto` + * Keyboard translation for OpenCore +* **KeySwap**: `NO` + * Swaps `Option` and `Cmd` key +* **PointerSupport**: `NO` + * Used for fixing broken pointer support, commonly used for Z87 Asus boards +* **PointerSupportMode**: + * Specifies OEM protocol, currently only supports Z87 and Z97 ASUS boards so leave blank +* **TimerResolution**: `50000` + * Set architecture timer resolution, Asus Z87 boards use `60000` for the interface. Settings to `0` can also work for some + +**Output**: Relating to visual output + +* **TextRenderer**: `BuiltinGraphics` + * Used for fixing resoltuion of OpenCore itself, `Resolution` must be set to `Max` to work correctly +* **ConsoleMode**: [Blank] + * Specifies Console output size, best to keep it blank +* **Resolution**: `Max` + * Sets OpenCore's resolution, `Max` will use the highest avalible reolution or can be specified (`WxH@Bpp (e.g. 1920x1080@32) or WxH (e.g. 1920x1080)`) +* **ClearScreenOnModeSwitch**: NO + * Needed for when half of the previously drawn image remains, will force black screen before switching to TextMode. Do note that this is only required in cases when using `System` TextRenderer +* **IgnoreTextInGraphics**: NO + * Fix for UI corruption when both text and graphics outputs, only relevant for users using `System` TextRenderer +* **ProvideConsoleGop**: YES + * Enables GOP(Graphics output Protcol) which the macOS bootloader requires for console handle, **required for graphical output once the kernel takes over** +* **DirectGopRendering**: NO + * Use builtin graphics output protocol renderer for console, mainly relevant for MacPro5,1 users +* **ReconnectOnResChange**: NO +* **ReplaceTabWithSpace**: NO + * Depending on the firmware, some system may need this to properly edit files in the UEFI shell when unable to handle Tabs. This swaps it for spaces instead-but majority can ignore it but do note that ConsoleControl set to True may be needed +* **SanitiseClearScreen**: NO + * Fixes High resolutions displays that display OpenCore in 1024x768, only relevant for users using `System` TextRenderer + +**Protocols**: (Most values can be ignored here as they're meant for real Macs/VMs) + +* **AppleSmcIo**: NO + * Reinstalls Apple SMC I/O, this is the equivlant of VirtualSMC.efi which is only needed for users using FileVault +* **FirmwareVolume**: NO + * Fixes UI regarding Filevault, set to YES for better FileVault compatibility +* **HashServices**: NO + * Fixes incorrect cursor size when running FileVault, set to YES for better FileVault compatibility +* **UnicodeCollation**: NO + * Some older firmware have broken Unicode collation, fixes UEFI shell compatibility on these systems(generally IvyBridge and older) + + +**Quirks**: + +* **ExitBootServicesDelay**: `0` + * Only required for very specific use cases like setting to `3000` - `5000` for ASUS Z87-Pro running FileVault2 +* **IgnoreInvalidFlexRatio**: NO + * Fix for when MSR\_FLEX\_RATIO (0x194) can't be disabled in the BIOS, required for all pre-skylake based systems +* **ReleaseUsbOwnership**: NO + * Releases USB controller from firmware driver, needed for when your firmware doesn't support EHCI/XHCI Handoff. Clover equivalent is `FixOwnership` +* **RequestBootVarFallback**: YES + * Request fallback of some Boot prefixed variables from `OC_VENDOR_VARIABLE_GUID` to `EFI_GLOBAL_VARIABLE_GUID`. Used for fixing boot options. +* **RequestBootVarRouting**: YES + * Redirects AptioMemeoryFix from `EFI_GLOBAL_VARIABLE_GUID` to `OC\_VENDOR\_VARIABLE\_GUID`. Needed for when firmware tries to delete boot entries and is recommended to be enabled on all systems for correct update installation, Startup Disk control panel functioning, etc. +* **UnblockFsConnect**: NO + * Some firmware block partition handles by opening them in By Driver mode, which results in File System protocols being unable to install. Mainly relevant for HP systems when no drives are listed + +## Cleaning up + +And now you're ready to save and place it into your EFI under EFI/OC. + +For those having booting issues, please make sure to read the [Troubleshooting section](/troubleshooting/troubleshooting.md) first and if your questions are still unanswered we have plenty of resources at your disposal: + +* [AMD OS X Discord](https://discord.gg/QuUWg7) +* [r/Hackintosh Subreddit](https://www.reddit.com/r/hackintosh/) + +**Sanity check**: + +So thanks to the efforts of Ramus, we also have an amazing tool to help verify your config for those who may have missed something: + +* [**Sanity Checker**](https://opencore.slowgeek.com) + +# AMD BIOS Settings + +**Disable:** + +* Fast Boot +* Compatibility Support Module (CSM)(**Must be off, GPU errors like `gIO` are common when this option in enabled**) + +**Enable:** + +* Above 4G decoding(**This must be on, if you can't find the option then add `npci=0x2000` to boot-args. Do not have both this option and npci enabled at the same time**) +* EHCI/XHCI Hand-off +* OS type: Windows 8.1/10 UEFI Mode + +# [Post-install](/post-install/README.md) diff --git a/AMD/AMD-config.md b/AMD/zen.md similarity index 96% rename from AMD/AMD-config.md rename to AMD/zen.md index 2b611e5ad7..53fc7cbae5 100644 --- a/AMD/AMD-config.md +++ b/AMD/zen.md @@ -1,4 +1,4 @@ -# AMD +# Ryzen and Threadripper(17h) * Supported version: 0.5.7 @@ -17,7 +17,6 @@ Now with all that, we'll need some things to get started: * [Sample.plist](https://github.com/acidanthera/OpenCorePkg/releases): This is found under the Docs folder of the release download * [AMD Kernel Patches](https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore): Needed for booting macOS on AMD hardware(save these for later, we'll go over how to use them below) * [Ryzen/Threadripper(17h)](https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore/17h) (Supports 10.13, 10.14, and 10.15) - * [Bulldozer/Jaguar(15h/16h)](https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore/15h_16h) (Supports 10.13, 10.14, and 10.15) Now with those downloaded, we can get to really get started: @@ -76,7 +75,7 @@ Settings relating to ACPI, leave everything here as default. ## Booter -![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/696571557115461632/Screen_Shot_2020-04-05_at_10.04.04_PM.png) This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi @@ -91,7 +90,7 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * **AvoidRuntimeDefrag**: YES * Fixes UEFI runtime services like date, time, NVRAM, power control, etc * **DevirtualiseMmio**: NO - * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful for most firmware though breaks on most AMD systems. + * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems * **DisableSingleUser**: NO * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines * **DisableVariableWrite**: NO @@ -113,13 +112,12 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **RebuildAppleMemoryMap**: YES - * Generates Memory Map compatible with macOS, recommended over using `EnableWriteUnprotector` on Skylake and newer -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses - + * Generates Memory Map compatible with macOS +* **SetupVirtualMap**: NO + * Fixes SetVirtualAddresses calls to virtual addresses, not needed on Skylake and newer * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used -* **SyncRuntimePermissions**: NO +* **SyncRuntimePermissions**: YES * Fixes alignment with MAT tables and required to boot Windows and Linux with MAT tables, also recommended for macOS. Mainly relevant for Skylake and newer ## DeviceProperties @@ -128,7 +126,7 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about **Add**: Sets device properties from a map. -By default, the Sample.plist has this section set for iGPU and Audio. We have no iGPU so PCIRoot `PciRoot(0x0)/Pci(0x2,0x0)` can be removed from `Add` section. For audio we'll be setting the layout in the boot-args section, so removal of `PciRoot(0x0)/Pci(0x1b,0x0)` is also recommended from both `Add` and `Block` sections +By default, the Sample.plist has this section set for iGPU and Audio. We have no iGPU so PCIRoot `PciRoot(0x0)/Pci(0x2,0x0)` can be removed from `Add` section. For audio we'll be VoodooHDA, so removal of `PciRoot(0x0)/Pci(0x1b,0x0)` is also recommended from both `Add` and `Block` sections TL;DR, delete all the PciRoot's here as we won't be using this section. @@ -162,7 +160,6 @@ TL;DR, delete all the PciRoot's here as we won't be using this section. Kernel patches: * [Ryzen/Threadripper(17h)](https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore/17h) (10.13, 10.14, and 10.15) -* [Bulldozer/Jaguar(15h/16h)](https://github.com/AMD-OSX/AMD_Vanilla/tree/opencore/15h_16h) (10.13, 10.14, and 10.15) To merge: * Open both files, @@ -218,8 +215,10 @@ Settings relating to the kernel, for us we'll be enabling `DummyPowerManagement` * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour * **HideSelf**: YES * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: +* **ConsoleAttributes**: `0` * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAttributes**: `0` + * Used for setting custom picker attributes, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO @@ -272,7 +271,7 @@ We'll be changing `AllowNvramReset`, `AllowSetDefault`, `RequireSignature`, `Req * Self-explanatory, enables or disables * **Path** * Path to file after the `Tools` folder - * ex: [Shell.efi](https://github.com/acidanthera/OpenCoreShell/releases) + * ex: [OpenShell.efi](https://github.com/acidanthera/OpenCorePkg/releases) **Entries**: Used for specifying irregular boot paths that can't be found naturally with OpenCore diff --git a/README.md b/README.md index 9a58b4117e..f43c8a4db0 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Please remember that OpenCore is still new and currently in beta. Unless you wan Lastly, this guide is only meant to be a starting point in your journey with OpenCore and not recommended for beginners unless absolutely necessary. For those starting, please see the [r/Hackintosh Vanilla Desktop Guide](https://hackintosh.gitbook.io/-r-hackintosh-vanilla-desktop-guide/). And those who have issues can visit both the [r/Hackintosh subreddit](https://www.reddit.com/r/hackintosh/) and [r/Hackintosh discord](https://discord.gg/u8V7N5C) for more help. -**This guide supports 0.5.6**, newer versions will require you to read the [Differences.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Differences/Differences.pdf). Guide will be updated soon after each [OpenCore release](https://github.com/acidanthera/OpenCorePkg/releases) +**This guide supports 0.5.7**, newer versions will require you to read the [Differences.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Differences/Differences.pdf). Guide will be updated soon after each [OpenCore release](https://github.com/acidanthera/OpenCorePkg/releases) ### Advantages of OpenCore diff --git a/SUMMARY.md b/SUMMARY.md index fe76864eff..f718659cd1 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -24,8 +24,8 @@ ## AMD Config.plist -* [AMD](AMD/AMD-config.md) - +* [Bulldozer/Jaguar](AMD/fx.md) +* [Zen](AMD/zen.md) ## Post Install diff --git a/config-HEDT/broadwell-e.md b/config-HEDT/broadwell-e.md index 5583adf48f..cc590d1b7d 100644 --- a/config-HEDT/broadwell-e.md +++ b/config-HEDT/broadwell-e.md @@ -73,7 +73,7 @@ Settings relating to ACPI, leave everything here as default. ## Booter -![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/696572990342823976/Screen_Shot_2020-04-05_at_10.11.39_PM.png) This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi @@ -83,7 +83,7 @@ This section is allowing devices to be passthrough to macOS that are generally i **Quirks**: -Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio` and `SetupVirtualMap` +Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio`, `DisableVariableWrite` and `RebuildAppleMemoryMap` * **AvoidRuntimeDefrag**: YES * Fixes UEFI runtime services like date, time, NVRAM, power control, etc @@ -91,8 +91,8 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems * **DisableSingleUser**: NO * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines -* **DisableVariableWrite**: NO - * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works +* **DisableVariableWrite**: YES + * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works. For X99 we'll assume NVRAM doesn't work but post install you can double check * **DiscardHibernateMap**: NO * Reuse original hibernate memory map, only needed for certain legacy hardware * **EnableSafeModeSlide**: YES @@ -112,7 +112,7 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * **RebuildAppleMemoryMap**: YES * Generates Memory Map compatible with macOS, recommeneded for ATPIO IV firmwares and HEDT platforms * **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses + * Fixes SetVirtualAddresses calls to virtual addresses, not needed on Skylake and newer * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used * **SyncRuntimePermissions**: NO @@ -206,8 +206,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour * **HideSelf**: YES * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: +* **ConsoleAttributes**: `0` * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAttributes**: `0` + * Used for setting custom picker attributes, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO diff --git a/config-HEDT/haswell-e.md b/config-HEDT/haswell-e.md index d61f5ebd03..0601a9ad46 100644 --- a/config-HEDT/haswell-e.md +++ b/config-HEDT/haswell-e.md @@ -73,7 +73,7 @@ Settings relating to ACPI, leave everything here as default. ## Booter -![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/696572990342823976/Screen_Shot_2020-04-05_at_10.11.39_PM.png) This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi @@ -83,7 +83,7 @@ This section is allowing devices to be passthrough to macOS that are generally i **Quirks**: -Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio` and `SetupVirtualMap` +Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio`, `DisableVariableWrite` and `RebuildAppleMemoryMap` * **AvoidRuntimeDefrag**: YES * Fixes UEFI runtime services like date, time, NVRAM, power control, etc @@ -91,8 +91,8 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * Reduces Stolen Memory Footprint, expands options for `slide=N` values and generally useful especially on HEDT and Xeon systems * **DisableSingleUser**: NO * Disables the use of `Cmd+S` and `-s`, this is closer to the behaviour of T2 based machines -* **DisableVariableWrite**: NO - * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works +* **DisableVariableWrite**: YES + * Needed for systems with non-functioning NVRAM, you can verify [here](/post-install/nvram.md) if yours works. For X99 we'll assume NVRAM doesn't work but post install you can double check * **DiscardHibernateMap**: NO * Reuse original hibernate memory map, only needed for certain legacy hardware * **EnableSafeModeSlide**: YES @@ -110,9 +110,9 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **RebuildAppleMemoryMap**: YES - * Generates Memory Map compatible with macOS, recommeneded for ATPIO IV firmwares and HEDT platforms + * Generates Memory Map compatible with macOS * **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses + * Fixes SetVirtualAddresses calls to virtual addresses, not needed on Skylake and newer * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used * **SyncRuntimePermissions**: NO @@ -206,8 +206,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour * **HideSelf**: YES * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: +* **ConsoleAttributes**: `0` * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAttributes**: `0` + * Used for setting custom picker attributes, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO diff --git a/config-HEDT/skylake-x.md b/config-HEDT/skylake-x.md index cfa83b365d..778a150805 100644 --- a/config-HEDT/skylake-x.md +++ b/config-HEDT/skylake-x.md @@ -74,7 +74,7 @@ Settings relating to ACPI, leave everything here as default. ## Booter -![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/696572196310745128/Screen_Shot_2020-04-05_at_10.07.41_PM.png) This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi @@ -84,7 +84,7 @@ This section is allowing devices to be passthrough to macOS that are generally i **Quirks**: -Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio` and `SetupVirtualMap` +Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio`, `RebuildAppleMemoryMap`, `SyncRuntimePermissions` and `SetupVirtualMap` * **AvoidRuntimeDefrag**: YES * Fixes UEFI runtime services like date, time, NVRAM, power control, etc @@ -111,9 +111,9 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **RebuildAppleMemoryMap**: YES - * Generates Memory Map compatible with macOS, recommended over using `EnableWriteUnprotector` on Skylake and newer -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses + * Generates Memory Map compatible with macOS +* **SetupVirtualMap**: NO + * Fixes SetVirtualAddresses calls to virtual addresses, not needed on Skylake and newer * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used * **SyncRuntimePermissions**: YES @@ -202,8 +202,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour * **HideSelf**: YES * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: +* **ConsoleAttributes**: `0` * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAttributes**: `0` + * Used for setting custom picker attributes, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO diff --git a/config.plist/coffee-lake.md b/config.plist/coffee-lake.md index f72aad0f75..5ba9a6ac28 100644 --- a/config.plist/coffee-lake.md +++ b/config.plist/coffee-lake.md @@ -77,7 +77,7 @@ Settings relating to ACPI, leave everything here as default. ## Booter -![Booter](https://cdn.discordapp.com/attachments/683011276938543134/683505771153326081/Screen_Shot_2020-02-29_at_7.47.35_PM.png) +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/696572196310745128/Screen_Shot_2020-04-05_at_10.07.41_PM.png) This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi @@ -87,7 +87,7 @@ This section is allowing devices to be passthrough to macOS that are generally i **Quirks**: -Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio` and `SetupVirtualMap` +Settings relating to boot.efi patching and firmware fixes, ones we need to change are `DevirtualiseMmio`, `RebuildAppleMemoryMap`, `SyncRuntimePermissions` and `SetupVirtualMap` * **AvoidRuntimeDefrag**: YES * Fixes UEFI runtime services like date, time, NVRAM, power control, etc @@ -115,9 +115,9 @@ Settings relating to boot.efi patching and firmware fixes, ones we need to chang * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **RebuildAppleMemoryMap**: YES - * Generates Memory Map compatible with macOS, recommended over using `EnableWriteUnprotector` on Skylake and newer -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses + * Generates Memory Map compatible with macOS +* **SetupVirtualMap**: NO + * Fixes SetVirtualAddresses calls to virtual addresses, not needed on Skylake and newer * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used * **SyncRuntimePermissions**: YES @@ -242,8 +242,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour * **HideSelf**: YES * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: +* **ConsoleAttributes**: `0` * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAttributes**: `0` + * Used for setting custom picker attributes, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO diff --git a/config.plist/haswell.md b/config.plist/haswell.md index 01e8908637..d57b234b83 100644 --- a/config.plist/haswell.md +++ b/config.plist/haswell.md @@ -77,7 +77,7 @@ Settings relating to ACPI, leave everything here as default. ## Booter -![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/696573787994325013/Screen_Shot_2020-04-05_at_10.15.09_PM.png) This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi @@ -87,7 +87,7 @@ This section is allowing spaces to be passthrough to macOS that are generally ig **Quirks**: -Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` +Settings relating to boot.efi patching and firmware fixes, one we need to change is `RebuildAppleMemoryMap` * **AvoidRuntimeDefrag**: YES * Fixes UEFI runtime services like date, time, NVRAM, power control, etc @@ -114,9 +114,9 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **RebuildAppleMemoryMap**: YES - * Generates Memory Map compatible with macOS, recommeneded for ATPIO IV firmwares and HEDT platforms + * Generates Memory Map compatible with macOS * **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses + * Fixes SetVirtualAddresses calls to virtual addresses, not needed on Skylake and newer * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used * **SyncRuntimePermissions**: NO @@ -255,8 +255,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour * **HideSelf**: YES * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: +* **ConsoleAttributes**: `0` * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAttributes**: `0` + * Used for setting custom picker attributes, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO diff --git a/config.plist/ivy-bridge.md b/config.plist/ivy-bridge.md index e61ffe7814..97235e173e 100644 --- a/config.plist/ivy-bridge.md +++ b/config.plist/ivy-bridge.md @@ -75,7 +75,7 @@ Settings relating to ACPI, leave everything here as default. ## Booter -![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/696573787994325013/Screen_Shot_2020-04-05_at_10.15.09_PM.png) This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi @@ -85,7 +85,7 @@ This section is allowing spaces to be passthrough to macOS that are generally ig **Quirks**: -Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` +Settings relating to boot.efi patching and firmware fixes, one we need to change is `RebuildAppleMemoryMap` * **AvoidRuntimeDefrag**: YES * Fixes UEFI runtime services like date, time, NVRAM, power control, etc @@ -112,9 +112,9 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **RebuildAppleMemoryMap**: YES - * Generates Memory Map compatible with macOS, recommeneded for ATPIO IV firmwares and HEDT platforms + * Generates Memory Map compatible with macOS * **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses + * Fixes SetVirtualAddresses calls to virtual addresses, not needed on Skylake and newer * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used * **SyncRuntimePermissions**: NO @@ -233,8 +233,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour * **HideSelf**: YES * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: +* **ConsoleAttributes**: `0` * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAttributes**: `0` + * Used for setting custom picker attributes, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO diff --git a/config.plist/kaby-lake.md b/config.plist/kaby-lake.md index 37530b8de2..32602ab069 100644 --- a/config.plist/kaby-lake.md +++ b/config.plist/kaby-lake.md @@ -72,7 +72,7 @@ Settings relating to ACPI, leave everything here as default. ## Booter -![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/696571557115461632/Screen_Shot_2020-04-05_at_10.04.04_PM.png) This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi @@ -82,7 +82,7 @@ This section is allowing spaces to be passthrough to macOS that are generally ig **Quirks**: -Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap` +Settings relating to boot.efi patching and firmware fixes, ones we need to change are `RebuildAppleMemoryMap`, `SyncRuntimePermissions` and `SetupVirtualMap` * **AvoidRuntimeDefrag**: YES * Fixes UEFI runtime services like date, time, NVRAM, power control, etc @@ -109,9 +109,9 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **RebuildAppleMemoryMap**: YES - * Generates Memory Map compatible with macOS, recommended over using `EnableWriteUnprotector` on Skylake and newer -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses + * Generates Memory Map compatible with macOS +* **SetupVirtualMap**: NO + * Fixes SetVirtualAddresses calls to virtual addresses, not needed on Skylake and newer * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used * **SyncRuntimePermissions**: YES @@ -232,8 +232,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour * **HideSelf**: YES * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: +* **ConsoleAttributes**: `0` * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAttributes**: `0` + * Used for setting custom picker attributes, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO diff --git a/config.plist/skylake.md b/config.plist/skylake.md index 9e85af84f5..97933b3497 100644 --- a/config.plist/skylake.md +++ b/config.plist/skylake.md @@ -72,7 +72,7 @@ Settings relating to ACPI, leave everything here as default. ## Booter -![Booter](https://cdn.discordapp.com/attachments/456913818467958789/681325158815760384/Screen_Shot_2020-02-23_at_7.22.44_PM.png) +![Booter](https://cdn.discordapp.com/attachments/683011276938543134/696571557115461632/Screen_Shot_2020-04-05_at_10.04.04_PM.png) This section is dedicated to quirks relating to boot.efi patching with OpenRuntime, the replacement for AptioMemoryFix.efi @@ -82,7 +82,7 @@ This section is allowing spaces to be passthrough to macOS that are generally ig **Quirks**: -Settings relating to boot.efi patching and firmware fixes, for us we care about enabling `SetupVirtualMap`, `RebuildAppleMemoryMap` and `SyncRuntimePermissions` +Settings relating to boot.efi patching and firmware fixes, ones we need to change are `RebuildAppleMemoryMap`, `SyncRuntimePermissions` and `SetupVirtualMap` * **AvoidRuntimeDefrag**: YES * Fixes UEFI runtime services like date, time, NVRAM, power control, etc @@ -109,9 +109,9 @@ Settings relating to boot.efi patching and firmware fixes, for us we care about * **ProvideCustomSlide**: YES * If there's a conflicting slide value, this option forces macOS to use a pseudo-random value. Needed for those receiving `Only N/256 slide values are usable!` debug message * **RebuildAppleMemoryMap**: YES - * Generates Memory Map compatible with macOS, recommended over using `EnableWriteUnprotector` on Skylake and newer -* **SetupVirtualMap**: YES - * Fixes SetVirtualAddresses calls to virtual addresses + * Generates Memory Map compatible with macOS +* **SetupVirtualMap**: NO + * Fixes SetVirtualAddresses calls to virtual addresses, not needed on Skylake and newer * **SignalAppleOS**: NO * Tricks the hardware into thinking its always booting macOS, mainly benifitial for MacBook Pro's with dGPUs as booting Windows won't allow for the iGPU to be used * **SyncRuntimePermissions**: YES @@ -232,8 +232,10 @@ The reason being is that UsbInjectAll reimplements builtin macOS functionality w * Hides Recovery and other partitions unless spacebar is pressed, more closely matches real Mac behaviour * **HideSelf**: YES * Hides the EFI partition as a boot option in OC's boot picker -* **PickerAttributes**: +* **ConsoleAttributes**: `0` * Sets OpenCore's UI color, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info +* **PickerAttributes**: `0` + * Used for setting custom picker attributes, won't be covered here but see 8.3.8 of [Configuration.pdf](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/Configuration.pdf) for more info * **PickerAudioAssist**: NO * Used for enabling VoiceOver like support in the picker, unless you want your hack talking to you keep this disabled * **PollAppleHotKeys**: NO diff --git a/extras/kalsr-fix.md b/extras/kalsr-fix.md index 3cfeafe47b..04edc7800f 100644 --- a/extras/kalsr-fix.md +++ b/extras/kalsr-fix.md @@ -41,29 +41,35 @@ Fun Fact: It takes around 31 ms to find an area to operate in, manually setting The real fix to this is quite simple actually, the process is both the same for Clover and OpenCore users. What you'll need: -* Clover users: - * [AptioMemoryFix](https://github.com/acidanthera/AptioFixPkg/releases)(Don't mix Aptio fixes together or use OsxAptioFixDrvX, only AptioMemoryFix is supported in this guide) +* **Clover users**: * Clover Shell(most users already have this included, usually called shell64.efi or some variation) -* OpenCore users: + * This will be found under `EFI/CLOVER/tools` + * If you're missing this, you can grab it from the [CLOVER.zip](https://github.com/CloverHackyColor/CloverBootloader/releases) + * [OcQuirks](https://github.com/ReddestDream/OcQuirks/releases)(Don't mix Aptio fixes together or use OsxAptioFixDrvX, AptioMemoryFix, only OcQuirks is supported in this guide) + * Make sure this is inside `EFI/CLOVER/drivers/UEFI` + * OpenRuntime.efi(Bundled with OcQuirks) + * Make sure this is inside `EFI/CLOVER/drivers/UEFI` + * OcQuirks.plist(Bundled with OcQuirks) + * Make sure this is inside `EFI/CLOVER/drivers/UEFI` + +* **OpenCore users**: * [OpenRuntime](https://github.com/acidanthera/OpenCorePkg/releases) - * [OpenShell](https://github.com/acidanthera/OpenCorePkg/releases)(Don't forget to enable this under `Root->Misc->Tools`) - * Config.plist settings: - * AvoidRuntimeDefrag: `YES` - * Fixes UEFI runtime services like date, time, NVRAM, etc - * DevirtualiseMmio: `YES` - * Reduces stolen memory footprint so we're given more options for slide values, **do not use on AMD CPU based systems** - * EnableSafeModeSlide: `YES` - * Allows us to use slide in safe mode, just so if you have other issues troubleshooting won't mess it up. - * EnableWriteUnprotector: `YES` - * Allows us to write to certain areas that the firmware locks, specifically the CR0 register. - * ProtectUefiServices: `YES` - * This is extremly important to enable on Icelake and Coffeelake machines, otherwise DevirtualiseMmio will not work due to memory protetions in place - * ProvideCustomSlide: `YES` - * Kinda need that slide to do any real work. - * SetupVirtualMap: `YES` - * Creates a layer between macOS and your memory map for greater support and fewer chances of insecure write access. - * RebuildAppleMemoryMap: `YES` - * Fixes issues with very large memory maps that don't fit, very useful for X99 and X299 platforms and sometimes for Z390. + * [OpenShell](https://github.com/acidanthera/OpenCorePkg/releases)(Don't forget to enable this under `Root -> Misc -> Tools`) + +And we'll also need to configure our config.plist -> Booter(for OpenCore) or OcQuirks.plist(for Clover): + +* **AvoidRuntimeDefrag**: YES + * Fixes UEFI runtime services like date, time, NVRAM, power control, etc +* **DevirtualiseMmio**: YES + * Reduces Stolen Memory Footprint, expands options for `slide=N` values and very helpful with fixing Memory Allocation issues on Z390. +* **EnableSafeModeSlide**: YES + * Allows for slide values to be used in Safemode +* **ProtectUefiServices**: NO + * Protects UEFI services from being overridden by the firmware, mainly relevant for VMs, 300 series and newer systems like Ice Lake and Comet Lake +* **ProvideCustomSlide**: YES + * This makes sure the kernel will only choose good regions and avoid those that may result inboot failures. It's still random but omits those bad reions in its randomization +* **RebuildAppleMemoryMap**: YES + * Generates Memory Map compatible with macOS, this makes sure our memory map will fit to what the kernel expects ## Prepping the BIOS @@ -84,6 +90,10 @@ The reason we need to reset the memory map is we want it to be more deterministi * `LED lighting`: Sorry mate, time to go. * `Legacy USB`: More Legacy Crap. +## Test boot + +With our adjusted EFI, config.plist and BIOS settings, it's time we try out our new setup. If you still have issues, well it looks like we'll need to do a deep dive and calculate our slide value + ## Finding the Slide value Now what you'll want to do is open the EFI shell in your boot manager of choice and run `memmap`. This will give you a list of all pages and their sizes. This is where the fun begins. diff --git a/installer-guide/opencore-efi.md b/installer-guide/opencore-efi.md index 0231155ac3..7ab4d4256e 100644 --- a/installer-guide/opencore-efi.md +++ b/installer-guide/opencore-efi.md @@ -24,7 +24,7 @@ Depending on which OS you're on, see your specific section on making the USB, th To setup OpenCore’s folder structure, you’ll want to grab the EFI folder found in OpenCorePkg's releases page(this will already be done on the `BOOT` USB drive for windows users): -![base EFI folder](https://i.imgur.com/PvNIR4y.png) +![base EFI folder](https://cdn.discordapp.com/attachments/683011276938543134/696593582701805568/Screen_Shot_2020-04-05_at_11.33.56_PM.png) Now something you'll notice is that it comes with a bunch of files in `Drivers` and `Tools` folder, we don't want most of these: @@ -37,28 +37,21 @@ Now something you'll notice is that it comes with a bunch of files in `Drivers` * Used for Sandy Bridge and older when no XHCI driver is built into the firmware * HiiDatabase.efi * Used for fixing GUI support like OpenShell.efi on Sandy Bridge and older + * OpenCanopy.efi + * This is OpenCore's optional GUI, we'll be going over how to set this up in post-install so remove this for now * **Remove everything from Tools:** - * BootKicker.efi - * Used for fixing the Apple picker on genuine Macs - * CleanNvram.efi - * We'll be using OpenCore's built-in function - * GopStop.efi - * Used for [testing GOP](https://github.com/acidanthera/OcSupportPkg/tree/master/Application/GopStop) - * HdaCodecDump.efi - * Used for finding info for AudioDxe setup, this is not covered in this guide so not needed - * VerifyMsrE2.efi - * Used for [verifying MSR lock](/extras/msr-lock.md), for install we can ignore + * Way to many to list them all, but I recommend keeping OpenShell.efi for troubleshooting pruposes A cleaned up EFI: -![Clean EFI](https://i.imgur.com/2INJYol.png) +![Clean EFI](https://cdn.discordapp.com/attachments/683011276938543134/696593842849316904/Screen_Shot_2020-04-05_at_11.34.58_PM.png) Now you can place **your** necessary firmware drivers(.efi) from AppleSupportPkg into the _Drivers_ folder and Kexts/ACPI into their respective folders. Please note that UEFI drivers from Clover are not supported with OpenCore!(EmuVariableUEFI, AptioMemoryFix, OsxAptioFixDrv, etc). Please see the [Clover firmware driver conversion](https://github.com/khronokernel/Opencore-Vanilla-Desktop-Guide/blob/master/clover-conversion/clover-efi.md) for more info on supported drivers and those merged into OpenCore. Here's what a populated EFI can look like: -![Populated EFI folder](https://i.imgur.com/HVuyghf.png) +![Populated EFI folder](https://cdn.discordapp.com/attachments/683011276938543134/696594137591578644/Screen_Shot_2020-04-05_at_11.36.13_PM.png) **Reminder**: diff --git a/ktext.md b/ktext.md index 59fc5813f5..68c5aca61c 100644 --- a/ktext.md +++ b/ktext.md @@ -191,4 +191,5 @@ A quick TL;DR of needed SSDTs(This is source code, you will have to compile them **AMD Config.plist** -* [AMD](/AMD/AMD-config.md) +* [Bulldozer/Jaguar](AMD/fx.md) +* [Zen](AMD/zen.md) diff --git a/troubleshooting/troubleshooting.md b/troubleshooting/troubleshooting.md index 55713e3d92..676355dee8 100644 --- a/troubleshooting/troubleshooting.md +++ b/troubleshooting/troubleshooting.md @@ -334,7 +334,6 @@ For Skylake-X, many firmwares including Asus and EVGA won't write to all cores. * DRM Broken * "Memory Modules Misconfigured" on MacPro7,1 * Apps crashing on AMD -* No temperature/fan sensor output ## Broken iMessage and Siri @@ -435,6 +434,8 @@ You can double check which controller is XHC0 via IOReg and checking the Vendor * Incorrect resolution with OpenCore * No temperature/fan sensor output * Can't find Windows/Bootcamp drive in picker +* Booting Windows results in Bluescreen or Linux crashes +* Booting Windows error: `OCB: StartImage failed - Already started` ## Can't run `acpidump.efi` @@ -509,3 +510,16 @@ Now to get onto troubleshooting: * Make sure `Misc -> Security -> ScanPolicy` is set to `0` to show all drives * Enable `Misc -> Boot -> Hideself` is enabled when Windows bootloader is loacated on the same drive * Enable `Platforminfo -> Generic -> AdviseWindows -> True` if the EFI partition isn't the first on the partition table + + +## Booting Windows results in Bluescreen or Linux crashes + +This is due to alignment issues, make sure `SyncRuntimePermissions` is enabled on firmwares supporting MATs. Check your logs whether your fimrware supports Memory Attribute Tables(generally seen on 2018 firmwares and newer) + +Common Windows error code: + +* `0xc000000d` + +## Booting Windows error: `OCB: StartImage failed - Already started` + +This is due to OpenCore getting confused when trying to boot boot Windows and acidentally thinking it's booting OpenCore. This can be avoided by either adding a custom drive path under entires and have Windows with it's bootloader renamed *or* move Windows to it's own drive