Skip to content

Latest commit

 

History

History
383 lines (305 loc) · 29.2 KB

File metadata and controls

383 lines (305 loc) · 29.2 KB

Gigabyte Z490 Vision G Hackintosh OpenCore

BIOS OpenCore Version MacOS Release
15161753

TABLE of CONTENTS

About

OpenCore EFI folder for the Gigabyte Z490 Vision G mainboard created from scratch and updated and refined regularly since September 2020. The configuration is based on Dortania's OpenCore Install Guide and analysis of an .ioreg file from a real iMac20,1. USB Ports are mapped via ACPI, so no USB Port kext is required.

Tested successfully with macOS 10.14 to 15 beta. For best results, read and follow the install instruction carefully and thoroughly.

⚠️ Important Updates
Upgrading from to macOS 14.3.1 to 14.4 and newer via System Updatecauses a Kernel Panic during install! The workaround is to temporarily disable SecureBootModel (Background)
The Intel I225-V Ethernet Controller finally got a dedicated kext called AppleIGC so the previous fixes are now obsolete!
600/700-series Nvidia Cards require root patching with OpenCore Legacy Patcher to reinstall Nvidia drivers.

Hardware Info

System Specs

Component Details
Mainboard Gigabyte Z490 Vision G. BIOS: F21. F5 or newer is required to disable CFG Lock. Otherwise enable Kernel Quirk AppleXcpmCfgLock
CPU Intel Core i9 10850K (Comet Lake)
RAM 32 GB DDR4 2400 Crucial Ballistix Sport LT
iGPU Intel UHD 630 (Headless). Use this Framebuffer Patch if you want to use it for driving a display.
dGPU Saphire RX580 Nitro+ (4 GB)
Audio Realtek® ALC1220-VB (Layout-id: 17)
Ethernet
(on-board)
Intel I225-V 2.5GbE. Compatible with macOS 10.15.7 and newer.
Ethernet (PCIe) Intel PRO/1000 PT Dual Port Server Adapter (any macOS). Currently unused.

Intel® 400 Series Chipset Datasheets (PDF): Vol. 1 | Vol. 2 | Specs Update

BIOS Settings

Click to reveal

BIOS

  • Tweaker [TAB]
    • Extreme Memory Profile (XMP): Enabled (if supported by RAM)
    • Advanced CPU Settings
      • VT-d: Enabled
      • Intel Speed Shit: Enabled
  • Settings [TAB]
    • Platform Power
      • Platform Power Management: Disabled
      • ErP: Enabled (so USB Power turns off, after PC is shut down)
    • IO Ports
      • Internal Graphics: enabled (if CPU has integrated graphics). NOTE: The config.plist uses dGPU for Display(s) and iGPU for computational tasks only by default. If you want to use the iGPU to drive a display you need a different Framebuffer Patch (see "EFI Install Instructions" for details).
      • OnBoard LAN Controller: Enabled
      • Audio Controller: Enabled (if On-Board Sound Card is used)
      • Above 4G Decoding: Enabled
      • Re-Size BAR Support: Disabled (Enable if your GPU supports it)
      • IOAPIC 24-119 Entries: Enabled
      • Super IO Configuration
        • Serial Port: Disabled
      • USB Configuration
        • Legacy USB Support: Disabled
        • XHCI Hand-off: Enabled
      • Network Stack Configuration
        • Network Stack: Disabled
  • Boot [TAB]
    • CFGLock: Disabled (only available on newer BIOS versions)
    • Windows 10 Features: Windows 10
    • CSM: Disabled (to get rid of legacy code from DSDT)

OpenCore Details

General Information

Parameter Details
SMBIOS iMac20,2. For i5/i7 CPUs, use iMac20,1. SMBIOS data needs to be generated. I use OCAT for this
Supported macOS macOS 10.14 up to 15.x (10.14 requires iMac19,1 config)
OpenCanopy Enabled
Boot Chime No
FileVault Optional
SIP Current value: 03080000. Adjust csr-active-config based on the used OS and your specific needs.
SecureBootModel Disabled. Change to j185f for iMac20,2 SMBIOS. For iMac20,1, use j185. ⚠️ Needs to be set to Disabled when using an NVIDIA Kepler GPU in macOS 12 or newer (requires root-patching with OCLP)
USB Port Mapping Yes, via ACPI. Details here.

EFI Folder Structure (OpenCore)

Click to reveal
EFI
├── BOOT
│   └── BOOTx64.efi
└── OC
    ├── ACPI
    │   ├── DMAR.aml
    │   ├── SSDT-AWAC-ARTC.aml
    │   ├── SSDT-EC-USBX.aml
    │   ├── SSDT-MCHC.aml
    │   ├── SSDT-PLUG.aml
    │   └── SSDT-PORTS.aml
    ├── Drivers
    │   ├── HfsPlus.efi
    │   ├── OpenCanopy.efi
    │   ├── OpenRuntime.efi
    │   └── ResetNvramEntry.efi
    ├── Kexts
    │   ├── AdvancedMap.kext
    │   ├── AMFIPass.kext
    │   ├── AppleALC.kext
    │   ├── CPUFriend.kext
    │   ├── CPUFriendDataProvider.kext
    │   ├── Lilu.kext
    │   ├── NVMeFix.kext
    │   ├── RestrictEvents.kext
    │   ├── SMCProcessor.kext
    │   ├── SMCRadeonSensors.kext
    │   ├── SMCSuperIO.kext
    │   ├── VirtualSMC.kext
    │   └── WhateverGreen.kext
    ├── OpenCore.efi
    ├── Resources (NOTE: removed files in sub-folders from tree view to reduce clutter)
    │   ├── Font
    │   ├── Image
    │   │   ├── Acidanthera
    │   │   │   ├── Chardonnay
    │   │   │   ├── GoldenGate
    │   │   │   └── Syrah
    │   │   ├── Blackosx
    │   │   │   └── BsxM1
    │   │   └── velickovicdj
    │   │	└── EnterTwilight
    │   └── Label
    └── config.plist

Installing/Upgrading macOS

Coming from Windows/Linux: If you are on Windows or Linux, follow the guide provided by Dortania. I provide no support for issues with UBS Installers created in Windows or Linux or when installing macOS into a VM!

Coming from macOS: If you already have access to macOS, you can either download macOS from the App Store, via the OpenCore Legacy Patcher App or use ANYmacOS. Botch can download macOS High Sierra to Ventura and create a USB Installer as well.

Deployment

Please read the following explanations carefully and thoroughly and follow the given instructions. In order to boot your PC with this EFI successfully, adjustments to the config.plist and used kexts may be necessary to adapt the config to your system configuration and the macOS version you want to install/run.

In general: if your system has the same hardware specs as mine, you can use the EFI folder as us. You only need to enter the required data in the PlatformInfo/Generic section (Model, Serial Number, MLB, ROM, etc.).

Preparing the config.plist

Download my latest EFI Folder from the Releases section and unpack it. Make sure to check the included Changelog.md as well, since it contains important information about config changes and useful explanations.

Select the config of your choice and rename it to config.plist. Open it with OCAT or a ProperTree and check the following sections/settings and adjust them to your needs:

  1. ACPI/Add Section. Add/Enable/Disable SSDTs as needed

    • [DMAR] (optional): DMAR replacement table with specific Reserved Memory Regions removed. For 3rd party LAN/Wifi/BT cards that won't work if VT-D and the Intel I225-V controller are enabled (macOS Big Sur and newer).
    • SSDT-AWAC-ARTC: Custom variant of SSDT-AWAC. Disables AWAC Clock and enables RTC as ARTC instead. Also disables legacy HPET device.
    • SSDT-PORTS: OS-agnostic USB Port Mapping Table for the Z490 Vision G. No additional USB Port kext or quirks are required. Since the USB ports are mapped via ACPI, they will work in any version of macOS. Check this pdf for a detailed list of mapped ports. NOTE: macOS does not support USB 3.2 via the USB protocol. It requires Thunderbold 3 or newer instead to support speeds greater than 5 Gbit. So there's no speed benefit when using the red USB ports over the blue ones when running macOS!
    • SSDT-PLUG.aml: Not needed for macOS 12 and newer. Also not needed when using CPUFriend.kext and CPUFriendDataProvider.kext.

    NOTE: Additional info about these ACPI Tables can be found on my OC Little Repo

  2. ACPI/Delete Section

    • Drop OEM DMAR Table → Only enable if you need to use the DMAR replacement table. OpenCore 0.9.2 introduced a new Quirk called DisableIoMapperMapping. It works independently of DisableIoMapper and addresses reoccurring connectivity issues in macOS 13.3+ which weren't there before. If your configuration required to drop/replace the DMAR table before it still does now!
    • Drop OEM USB Port Map (xh_cmsd4) → Drops the original USB Port mapping so SSDT-PORTS.aml can replace it.
    • Drop HPET Table → Drops the table for the High Precision Event Timer which is now a legacy device.
  3. Booter Section

    • Booter/MMIOWhitelist
      • I added these memory regions after analyzing the bootlog. Since I don't know if these are used by all systems, I disabled them.
      • To figure out which ones can be whitelisted, follow this guide
      • This is not a necessity, just some fine-tuning.
    • Booter/Patch: OpenCore patches used to skip the board-id check as part of a workaround to fix System Update Notifications. Only needed when using an NVIDIA Kepler Card which requires disabling SecureBootModel and SIP in oder to install and load the GPU drivers.
    • Booter/Quirks: If your GPU supports resizable BAR (enable Above 4G Decoding and Resizable BAR in BIOS), you can set ResizeAppleGpuBars to 0. But leave UEFI/Quirks at -1 to not affect the BAR size in other OSes.
  4. DeviceProperties

    • #PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0) → Disabled device-id spoof for the Intel I-225V. → Only required when running macOS Catalina! Delete the # to enable it. Requires Kernel/Patch as well. Read this for getting the Intel(R) I225-V Ethernet Controller to work on different versions of macOS. No longer required.
    • #PciRoot(0x0)/Pci(0x2,0x0) → Disabled Framebuffer for using the iGPU for driving a display. Delete the leading # to enable it.
    • PciRoot(0x0)/Pci(0x1F,0x3) → Settings for on-board audio. Also contains the Layout-id
    • PciRoot(0x0)/Pci(0x2,0x0) → Headless Framebuffer for using the iGPU for computational tasks only.
      • Disable this entry when using the iMacPro1,1 or MacPro7,1 SMBIOS.
      • Delete/Disable the enable-metal property when using a AMD (Big) Navi Card, since these cards support Metal 3.
  5. Kernel/Add Section. The following Kexts are disabled by default since I don't know which CPU, GPU, Hard Disk and SMBIOS you will be using:

    • CPUFriend.kext and CPUFriendDataProvider.kext. Create your own CPUFriendDataProvider in Post-Install with CPUFriendFriend to optimize CPU Power Management as explained here. It is recommended to create a new Data Provider kext after switching the SMBIOS and/or updating/upgrading macOS.
    • RestrictEvents:
      • Required when using MacPro7,1 SMBIOS → Disables warnings about unpopulated RAM slots.
      • Also required for enabling the VMM-x86_64 Board-id so OTA updates work when SIP is not fully enabled and SecureBootModel is set to Disabled (necessary when using NVIDIA Kepler Cards in macOS 12+).
    • AppleALC.kext: Slimmed version of AppleALC I compiled myself. It only contains Layout 17 and is only 86 kB in size. If you want to use a different Layout, you need to use the regular version of AppleALC or compile your own.
  6. Kernel/Quirks:

    • If your BIOS does not provide the option to disable CFG Lock (requires BIOS Update), enable the AppleXcpmCfgLock Quirk.
    • If you don't use Microsoft Windows on your system, you can change UpdateSMBIOSMode from CustomSMBIOSGuid (prohibits injecting SMBIOS data into Windows) to Create
    • OpenCore 0.9.2 introduced a new Quirk for macOS 13.3+ called DisableIoMapperMapping. It can be used to "resolve compatibility issues with Wi-Fi, Ethernet and Thunderbolt devices when AppleVTD is enabled". So you can try this quirk to address issues with 3rd party WiFi/BT cards.
  7. Misc/Security:

    • SecureBootModel:
      • Set to to j185 (for iMac20,1) or j185f (for iMac20,2).
      • Set to Disabled if you are using an NVIDIA Kepler Card. Otherwise the system will crash on boot. In this case you also need to enable RestrictEvents.kext to enable the VMM-x86_64 board-id so OTA updates will work. More details here.
  8. NVRAM/Add

    • 4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102:
      • revpatch:sbvmm → Setting for RestrictEvents.kext to enable the board-id VMM spoof. Only required if you have to disable SIP and SecureBootModel in order to boot with patched in NVIDIA Drivers for Kepler GPUs.
      • Boot-args: based on the fix you are using to get the Intel I225-V working in macOS 12 and newer, you might need dk.e1000=0 (macOS Big Sur) and/or e1000=0 (macOS Monterey+).
      • OCLP-Settings: -allow_amfi → Required for OpenCore Legacy Patcher so Kepler Drivers can be installed
    • 7C436110-AB2A-4BBB-A880-FE41995C9F82:
      • Change csr-active-config to disable SIP:
        • SIP fully enabled: 00000000
        • Big Sur and newer: 03080000 (0x803) → My default so macOS doesn't bother me. This is also the required value if you need to apply root patches with OCLP.
        • Mojave/Catalina: EF070000 (0x7EF)
        • High Sierra: FF030000 (0x3FF)
  9. PlatfotmInfo/Generic Section:

    • Generate SMBIOS data for iMac20,1 (for Core i9) or iMac20,2 (for Core i5/i7)
    • If you're not using Windows on your system, change UpdateSMBIOSMode from Custom to Create
  10. Save the config.plist

Important

  • AMD GPUs may require additional `boot-args`. Check WhateverGreen's documentation for details.
  • Applying root patches with OCLP results in a broken security seal which affects System Updates: incremental (or delta) system updates won't work after that. Instead, the full macOS installer (about 12 GB) will be downloaded every time a system update is available. See https://github.com/5T33Z0/OC-Little-Translated/blob/main/S_System_Updates/OTA_Updates.md for a workaround to apply incremental updates so you don't have to download the full installer every time.

Testing the EFI

  1. Copy the EFI Folder to a FAT32 formatted USB flash drive for testing
  2. Reboot
  3. Perform an NVRAM Reset (hit Space Bar to reveal the option)
  4. Boot macOS from the USB flash drive
  5. If your system boots successfully, mount your ESP and copy over the EFI Folder to you HDD/SSD and reboot.
  6. Continue with Post-Install!

Post-Install

Strengthen Security (recommended)

Once you got macOS running, you should change the following settings to make your system more secure:

  1. Change SecureBootModel from Disabled to j185 (for iMac20,1) or j185f (for iMac20,2). SecureBootModel is only applicable to macOS Catalina and newer.
  2. Change csr-active-config to 00000000 to enable System Integrity Protection (SIP). Lower/Disables SIP when using a legacy NVIDIA GPU!
  3. Under UEFI/APFS, change MinDate and MinVersion from -1 (disabled) to the correct values for the macOS version you are using. A list with correct values can be found here.

Warning

You should have a working backup of your EFI folder on a FAT32 formatted USB flash drive since changing these settings can prevent the system from booting. You may have to disable them for installing macOS Monterey if you have issues.

Optimizing CPU Power Management (recommended)

You can follow my guide to generate a CPUFriendDataProvider.kext which works alongside CPUFriend.kext to optimize CPU Power Management for a more efficient performance. Have a look at the CPU behavior using Intel Power Gadget. The CPU idle frequency should be lower after adding the kexts.

Screenshot (click to reveal)

image

Calculate a Scan Policy (optional)

The items displayed in OpenCore's Boot Picker menu are based on a combination of bits representing supported devices (SATA, NVME, USB, etc.) and file systems (APFS, HFS, NTFS, etc.). There are 24 bits which can be turned on and off to modify what's displayed in the Boot Picker. The combination of selected bits create what's called the ScanPolicy. It's located under in the config.plist under Misc/Security. The default value of my EFI is 0 (everything). Although this is great for compatibility, it will also display EFI Folders on drives which are not the boot drive as well.

To change the ScanPolicy to your liking, you can use the OpenCore ScanPolicy Generator. I am using 2687747 for example which hides EFI Folders and NTFS Drives. To add a custom entry for a Windows Disk to OpenCore's Boot Picker follow my guide. Otherwise you can just boot Windows from the BIOS Boot Menu (F12) which also bypasses all the OpenCore injections.

Important

Using an incorrect ScanPolicy can lead to an empty Boot Menu without any entries. So make sure you have a working Backup of your EFI folder!

Changing Themes

Besides the included themes from Acidanthera which provide the standard macOS look and feel, I've added 2 additional themes: BsxM1 (default) and EnterTwilight. To change them, do the following:

  • Open config.plist
  • Go to Misc/Boot and change PickerVariant to: Blackosx\BsxM1 or velickovicdj\EnterTwilight
  • Save and reboot

To revert the changes, enter Acidanthera\GoldenGate as PickerVariant and change the Flavour of the NVRAM Reset Tool back to Auto.

Note

For more config tips and tricks, you can check out this.

Alternate GPU Configurations

iGPU Optimizations

Listed below, you find results of benchmark tests conducted with Geekbench 5. I was testing Metal 3 performance of the iGPU for 3 different cases: default configuration vs. using Apples GUC Firmware vs. using RPS Control.

iGPU: UHD 630 in "offline/headless" configuration
AAPL,ig-platform-id: 0300C89B
SMBIOS: iMac20,2
macOS: 13.2
Geekbench: 5.5.0

Test # Added Properties Compute Score Notes
1 enable-metal 4671
  • Default
  • Mandatory to enable Metal 3 support in macOS 13 if your dGPU doesn't support it
  • iGPU Freq.: 0,33 GHz
2 enable-metal
igfxfw=2
4808
  • igfxfw=2 forces loading of Apple Graphics Unit Control (GUC) firmware
  • Slightly higher score
  • GUI feels snappier
  • Slightly faster boot
  • iGPU Freq.: 1,2 GHz
  • Can cause system crashes
3 enable-metal
igfxfw=2
rebuild-device-tree
4796
  • Rebuilding Device Tree doesn't make a difference
  • iGPU Freq.: 1,2 GHz
4 enable-metal
rps-control
4754
  • Uses RPS control patch (whatever that is)
  • Slightly lower score compared to using igfxfw=2
  • iGPU Freq: 1,2 GHz
5 enable-metal
igfxfw=2
rebuild-device-tree
rps-control
4798
  • Same result as Test #3
  • iGPU Freq.: 1,2 GHz

Conclusions:

  • Test #2 produced the best result. But it's not really a significant increase in performance compared to the default configuration used in test #1. It basically runs the iGPU at a higher base frequency so the energy consumption is higher as well. It also seems that this setting is uncapped in terms of max frequency. This resulted in my system crashing sometimes when watching YouTube because the iGPU frequency went through the roof. So you might consider not using igfxfw=2.
  • Results of Tests #3 and #5 are virtually identical. That's because igfxfw=2 takes precedence over rps-control, so you shouldn't combine these two properties!

Enabling Resizable BAR (optional)

  • Check if your GPU supports resizable BAR – you can use GPU-Z in Windows for that. The RX 580 I am using does support it
  • In your config, change the following settings:
    • Booter/Quirks: change ResizeAppleGpuBars from -1 to 0 which will update GPU registers to their defaults when booting macOS
    • UEFI/Quirks: Leave ResizeGpuBars at -1 so other OSes are not affected by this change
  • Save your config and reboot
  • Enter the BIOS
  • Change the following Options:
    • Enable Above 4G Decoding (otherwise the Resizable BAR option is not available)
    • Change Resizable BAR mode to: Auto

NOTES:

AMD GPUs and different SMBIOSes

If you have an AMD GPU and want to benefit from improved performance of Polaris, Vega and (Big) Navi and cards, you can switch to SMBIOS iMacPro1,1 or MacPro7,1 instead. Since these Macs don't have an iGPU, tasks like Quick Sync Video and HEVC encoding are then handled by the GPU instead. More details about choosing the right SMBIOS can be found here

Mind the following:

  • Additional config edits are required when switching the SMBIOS, so that the card works as intended.
  • If you are using CPUFriend, you have to generate a new CpuFriendDataprovider.kext with CPUFriendFriend and replace the previously used on tp adapt CPU Power Management to the new SMBIOS.

Addressing DRM issues with AMD GPUs in macOS 11 and newer

The shikigva boot-arg previously used to address DRM issues is no longer supported in macOS Monterey and newer.

Instead, 'unfairgva=x' (x = number from 1 to 7) must be used now. It's a bitmask containing 3 bits (1, 2 and 4) which can be combined to enable different features (and combinations thereof) as explained here

Using NVIDIA Kepler Cards in macOS 12 and newer

Apple removed support for NVIDIA GeForce Cards from macOS Monterey beta 7 onward. So users with NVIDIA Kepler GPUs (GTX 700, etc.) need to reinstall them in post-install using OpenCore Legacy Patcher.

Config Preparation

Change the following settings in config.plist:

  • Misc/Security/SecureBootModel: Change it to Disabled → Required to load NVIDIA drivers – otherwise the system would crash during boot
  • Kernel/Add: Enable RestrictEvents.kext → This enables the VMM board-id spoof. Required for OTA System Updates to work with SIP disabled
  • csr-active-config: Change to 03080000 before applying root patches with OCLP

Important

Applying root patches breaks the seal of the snapshot volume. Once the seal is broken, incremental OTA updates are no longer available in System Updates. Therefore, each time a System Update is available, the full macOS Installer (approx 15 GB) will be downloaded – and after the update is installed, OCLP has to re-apply the root patches again.

CPU Benchmark

image
SEE ALL RESULTS

Credits and Thank yous