Home

Awesome

Gigabyte Z590 Aorus Elite Monterey Hackintosh 🍎

🖥 Hardware Details

ComponentDetails
CPUIntel Core i7 11700K (Rocket Lake)
MoboGigabyte Z590 Aorus Elite
GFXRadeon RX 580 8 GB (GV-RX580GAMING-8GD)
Intel UHD Graphics 750 (Unsupported)
AudioRealtek ALC1220-VB
NetworkRealtek 2.5GbE (RTL8125)
BCM943602CS (Identified as BCM94360CD) AirPort Extreme (0x14E4, 0x133)
BluetoothBCM943602CS
StorageNVMe Samsung 980 PRO 1TB (MacOS Boot, PCIe 4.0)
NVMe Samsung 970 EVO Plus 1TB (Windows Boot)
SATA SanDisk SDSSDHII480G
DisplayDell U3219Q UltraSharp USB C Display
<p align="center"> <img alt="Photo of setup" src="resources/desk.jpeg"> <img alt="System Information (About this Mac)" src="resources/sys_info_2.png"> </p>

Executive Summary

Overall I was generally quite pleased with how quickly and easily I was able to get Mac OS Monetery up and running on this new hardware, despite (purposely) picking a Z590 motherboard and 11th generation Rocket Lake CPU. With that being said, I am relatively comfortable with configuring OpenCore as I have been running/maintaining my Z77 Hackintosh prior to this.

I opted to go for a Rocket Lake + Z590 combo for the following reasons:

I ensured that the board I picked (or variants of it) some track record for success running Mac OS.

I had a working installer USB / OpenCore configuration running within 2 hours after following the Dortania Comet Lake Install Guide and applying relevant patches from the Dortania Z590 compatibility write up.

Once I had a working installer USB, I didn't install MacOS from scratch, instead I booted into my existing install from my Z77 build and used Carbon Copy Cloner to migrate the data onto my new PCIe 4.0 NVMe SSD.

I spent a following 6-8 hours doing post-install tweaks and checks, like CPU power management, USB mapping, this write up, etc.

⚠️⚠️ Warning ⚠️⚠️

This is the EFI configuration for my very specific combination of hardware. It comes with absolutely no guarantees whatsoever.

It is extremely unlikely that this configuration will even work for you, even if your hardware combination is very similar. Please use it as a learning/reference resource only.

EFI, in git?

For my sanity, I have revisioned my /Volumes/EFI/EFI directory under git. This allows me to easily diff any changes I have made and easily roll back at any point in time.

However, typically the EFI partition is a tiny, around 200MB in size. This does not work well when there is a .git directory living inside, as every revision of binary files will be stored in here, easily filling up the space.

As a workaround, it is possible to place the .git directory across different mount-points by instead creating a file, .git and pointing it to the real .git location with the following directive:

gitdir: /Users/nickw/repos/opencore-efi-z590/.git

Secret Management

With this repository being publicly shared on GitHub, there are going to be things I do not wish to share, such as SystemUUID, SystemSerialNumber, ROM, and MLB. I do not check in my config.plist, instead config.redacted.plist with these private fields redacted.

❓ Guides

✅ Past Success for similar board

💤 Sleep/Wake

🍎 SMBIOS

I initially chose the iMacPro1,1 SMBIOS, however moved across to MacPro7,1 as it is a newer build, more reflective of the date of release of the hardware I am using.

I have not noticed any issues due to using MacPro7,1, not even the reported memory slot errors some users have noticed.

🖥 Hardware

⚙️ BIOS Settings

Diffable Settings:

Tweaker

Settings

System Info.

Boot

🧠 ACPI / DSDT / SSDT

PatchDescription
SSDT-AWAC.amlSSDT-AWAC re-enables the old RTC clock that is compatible with macOS (source). Generated via SSDTTime in Windows.
SSDT-EC.amlProvides a fake embedded controller. Generated with SSDTTime in Windows. Does not include USBX patch like prebuilt versions do, so SSDT-USBX.aml is also required.
SSDT-GPRW.amlFixes instant wake due to USB or power state changes. More info.
SSDT-HPET.amlHPET IRQ fixes. More info. Generated via SSDTTime in Windows. Requires DSDT patching in config.plist.
SSDT-PLUG.amlEnables CPU power management. Generated via SSDTTime in Windows.
SSDT-SBUS-MCHC.amlEnables the SMBus support. More info.
SSDT-SLEEP-Z590.amlPatch to fix sleep. Provides a PMCR device as a child of PC00. Requires _PTS to ZPTS, _WAK to ZWAK renames. More info. Providing a PMCR device as a child of PC00.LPCB (as generated by SSDTTime as SSDT-PMC) does not work for some reason.
SSDT-USBW.amlPatch to fix wake up from USB keyboard devices. More info. Modified for Z590 device paths (SB.PC00, not SB.PCI0).
SSDT-USBX.amlPatch to fix USB power management. Using prebuilt from dortania.

Other Quirks

PatchDescription
SSDT-RHUB.amlThis doesn't seem to be needed on this board. (More info)

🔊 Audio

Works OOB with AppleALC using layout-id=1

⌨️ USB

Port Mapping

diagram of port numbers/labels

Back Panel

Physical Port NumberUSB2 Personalality APCI PortUSB3 Personality APCI Port
P1Via hub connected to Port #11N/A
P2Via hub connected to Port #11N/A
P3Via hub connected to Port #11N/A
P4Via hub connected to Port #11N/A
P5Port #7Port #22
P6Port #8Port #23
P7 (USB C)Port #1Port #17
P8Port #4Port #19
P9Port #5Port #20
P10Port #6Port #21

Internal Headers

Physical Port NumberUSB2 Personalality APCI PortUSB3 Personality APCI Port
F_U32 (P1)Port #9Port #24
F_U32 (P2)Port #10Port #25
F_USB1 (P1)Via hub connected to Port #12N/A
F_USB1 (P2)Via hub connected to Port #12N/A
F_USB2 (P1)Via hub connected to Port #12N/A
F_USB2 (P2)Via hub connected to Port #12N/A
RGB Fusion (ITE Device)Port #13N/A

note: This mapping is missing the front panel USB C connector as I do not have front panel USB C on my case. Additional mapping would be required to determine the ACPI location of the port. Strikethrough lines indicate physical ports which are not enabled in the map to ensure we stay within the 15 port limit

PCI/ACPI Map

The above listed ports/locations are found by temporarily using USBInjectAll to inject all ports to find their location IDs. These IDs can then be worked into an injector kext using USBMap.

The Z590 Aorus Elite board doesn't appear to need a XHC1 rename patch, as the XCHI controller sits at XHCI ACPI name. However, as above, we see that this board has over 15 ACPI connected USB ports, above the Mac OS limit of 15 ports. Because of this, the XhciPortLimit quirk must be enabled to create an initial map of all functioning ports. In my mapping, I noticed when XhciPortLimit is enabled alongside USBInjectAll, the USB2 personality of many back panel ports did not work. Disabling XhciPortLimit and keeping USBInjectAll allowed for these to also be mapped (I believe I also needed to use -uia_exclude_ss boot flag).

USBMap Port Map

After creating a USBMap.kext with the ports we want to enable (less than 16 ports), XhciPortLimit can be removed and USBInjectAll.kext can be disabled.

To keep within the port limit I excluded the following physical ports:

If I ever add front panel USBC, I will likely need to remove another back panel USB port to make way for an additional port to be mapped.

BCM943602CS USB Connector

In order to avoid phantom wake events from the BCM943602CS USB Bluetooth adapter, it must be connected to a mapped port marked as type 255 (Internal Connector). Since all internal USB2.0 connectors are connected via a hub, we cannot use these ports to internally connect the plug.

However, because the USB 2 personality of the front panel USB 3 connector can be mapped as ACPI ports, we can use these ports for the BCM943602CS internal USB connector.

I had previously experimented with a USB 3 20 pin to female A type connector cable, connected to a male A type connector cable for the second front panel USB 3 port. Unfortunately this caused issue with USB detection of the second FP port. Instead a splice was made directly in the cable from the case. It may be worth "unsplicing" if a new mobo has better internal USB support (e.g. front panel USB2.0 connectors are not connected to the chipset via a hub)

RHUB Reset

RHUB reset DSDT is not needed for this motherboard.

Fix Keyboard Wake

Source: Dortania - Keyboard Wake Issues

Sometimes macOS requires a second keyboard press or some other wake event to power up the monitor as well, with some requiring a keypress+power button to wake.

Even when using the following patch, wake up without mashing the keyboard still doesn't work.

<key>PciRoot(0x0)/Pci(0x14,0x0)</key>
<dict>
    <key>acpi-wake-type</key>
    <data>AQAAAA==</data>
</dict>

I also tried https://github.com/osy/USBWakeFixup, and by using the correct PCI path, I managed to get this to work (SB.PC00, not SB.PCI0).

🕸 Ethernet

The 2.5GbE is a RTL8125, and is supported via LucyRTL8125Ethernet

🖥 Intel 11700K / Intel UHD Graphics 750

Rocket Lake has not been shipped in any production Mac yet, as such we need to:

Emulate the CPUID

<key>Cpuid1Data</key>
<data>VQYKAAAAAAAAAAAAAAAAAA==</data>
<key>Cpuid1Mask</key>
<data>/////wAAAAAAAAAAAAAAAA==</data>

Disable Intel UHD Graphics 750 graphics

Disable Intel UHD Graphics 750 graphics if enabled in BIOS. This can be avoided if running a 11th gen "F" CPU (no GPU) or if IGFX is disabled in BIOS. (I want IGFX acceleration available for Windows)

The following DeviceProperties need to be be added to disable iGPU:

<key>PciRoot(0x0)/Pci(0x02,0x0)</key>
<dict>
    <key>disable-gpu</key>
    <data>AQAAAA==</data>
</dict>

🔌 CPU Power Management

Appears to be working out of the box. Cross check with Intel Power Gadget if unsure.

📶 Bluetooth / WiFi w/ Broadcom Card

BCM943602CS: 802.11ac 3x3, (1.3Gbps / 5GHz) + Bluetooth 4.1. The module will be applied in MacBook Pro computers (2015)

Bluetooth USB connection must be connected to a ACPI mapped port, marked as internal (type 255), otherwise this will cause random wake as soon as machine goes to sleep. See above in the USB section for more details.