perez987 / macOS-12-13-on-Z390-with-OpenCore

macOS Monterey/Ventura with OpenCore on Z390 Aorus Elite and RX 6600 XT
MIT License
58 stars 9 forks source link
hackintosh macos12 macos13 macos14 monterey opencore rx6600 ventura

macOS Ventura / Monterey with OpenCore on Z390 Aorus Elite motherboard (AMD RX 6600 or Intel UHD 630)

Monterey HDD
  • Guide using OpenCore for Ventura / Monterey on Gigabyte Z390 Aorus Elite motherboard
  • Settings for AMD dGPU as main card or iGPU as single card
  • EFI folder available for different SMBIOS.

Hardware

MotherboardGigabyte Z390 Aorus Elite
CPUIntel i7 9700
iGPUIntel UHD Graphics 630
dGPUAMD Radeon RX 6600 8GB
SoundRealtek ALC1220
EthernetIntel I219V7
Wifi + BTFenvi FV-T919 BCM94360CD

What works well?

Radeon graphics card (VDA decoder fully supported)
Shutdown, restart and sleep
Audio (ALC1220 and HDMI)
USB ports (USB ports map for this motherboard)
Airdrop, iMessage (wifi + Bluetooth)

BIOS settings (version F10)

CFG Lock: Disabled
CSM: Disabled
VT-d: Disabled
Fast Boot: Disabled
OS Type: Windows 8/10 WHQL
Platform Power Management: Disabled
XHCI Hand-Off: Enabled
Network Stack: Disabled
Wake on LAN: Disabled
Secure Boot: Disabled
DVMT Pre-Allocated: 256M or higher
Integrated Graphics: Disabled / Enabled (according to SMBIOS)

OpenCore

For the installation / update to be successful, 3 parameters related to security must be set:

These security options can be changed after installation as they do not are required for Monterey / Ventura to run.

SMBIOS

iMac19,1 SMBIOS requires:

iMacPro1,1 or MacPro7,1 SMBIOS require:

CPUFriend.kext

Although the CPU is well detected with MacPro's SMBIOS, my guess is that it does not run at low frequency as often as it does with iMac19.1 or iMacPro1,1. For this reason, I have generated a CPUFriendDataProvider.kext extension by the CPUFriendFriend command to accompany CPUFriend.kext. Remember that this kext is specific to my CPU: i7 9700, try building your own if yours differs. With these 2 kexts (CPUFriendDataProvider.kext + CPUFriend.kext) the CPU shows correct power management and frequency drops to 800 MHz at system idle.

SSDTs, drivers and tools

SSDTs

Drivers

Tools

config.plist

Some settings:


Intel UHD 630 headless mode

You have to add in DeviceProperties >> Add:

<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
    <key>AAPL,ig-platform-id</key>
    <data>AwCRPg==</data>
    <key>device-id</key>
    <data>mz4AAA==</data>
    <key>enable-metal</key>
    <data>AQAAAA==</data>
</dict>

This code has data values in Base64, in plist editors they can be seen as hexadecimal, e.g. AwCRPg== in Base64 (AAPL,ig-platform-id) = 0300913E in hexadecimal.

To check if the VDA Decoder function is activated you can get Hackintool app (Fully Supported or Failed in the first System tab).

Notes:

Image: iGPU as secondary card

Intel UHD 630 as single GPU

If you don't have an external graphics card and need to use the iGPU as single card, you have to use iMac19,1 SMBIOS with code in config.plist to patch the framebuffer and other properties so that the iGPU is well detected:

<key>PciRoot(0x0)/Pci(0x2,0x0)</key>
<dict>
    <key>AAPL,ig-platform-id</key>
    <data>BwCbPg==</data>
    <key>device-id</key>
    <data>mz4AAA==</data>
    <key>device_type</key>
    <string>VGA compatible controller</string>
    <key>enable-hdmi20</key>
    <data>AQAAAA==</data>
    <key>enable-metal</key>
    <data>AQAAAA==</data>
    <key>framebuffer-con0-busid</key>
    <data>AAAAAA==</data>
    <key>framebuffer-con0-enable</key>
    <data>AQAAAA==</data>
    <key>framebuffer-con0-pipe</key>
    <data>EgAAAA==</data>
    <key>framebuffer-con1-busid</key>
    <data>AAAAAA==</data>
    <key>framebuffer-con1-enable</key>
    <data>AQAAAA==</data>
    <key>framebuffer-con1-pipe</key>
    <data>EgAAAA==</data>
    <key>framebuffer-con2-busid</key>
    <data>BAAAAA==</data>
    <key>framebuffer-con2-enable</key>
    <data>AQAAAA==</data>
    <key>framebuffer-con2-pipe</key>
    <data>EgAAAA==</data>
    <key>framebuffer-con2-type</key>
    <data>AAgAAA==</data>
    <key>framebuffer-patch-enable</key>
    <data>AQAAAA==</data>
    <key>framebuffer-stolenmem</key>
    <data>AAAwAQ==</data>
    <key>hda-gfx</key>
    <string>onboard-1</string>
    <key>force-online</key>
    <data>AQAAAA==</data>
    <key>rps-control</key>
    <data>AQAAAA==</data>
</dict>

Note:

Image: iGPU as main card

AMD RX 6600 on Ventura with MacPro or iMacPro SMBIOS

AMD Navi cards run fine on Ventura when using iMac SMBIOS with agdpmod=pikera in boot args as the only needed setting. But when using MacPro or iMacPro SMBIOS a lot of users have reported black screen. The simplest way to fix this is to add in DeviceProperties of config.plist properties that set Henbury framebuffer for each of the 4 ports of this GPU.

By default, Radeon framebuffer (ATY,Radeon) is loaded. But, in AMDRadeonX6000Framebuffer.kext >> Contents >> Info.plist we can see that AMDRadeonNavi23Controller has ATY,Henbury and 6600 series are Navi 23. This is why this framebuffer is selected.

The patch is added in this way:

<key>DeviceProperties</key>
    <dict>
        <key>Add</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
            <dict>
                <key>@0,name</key>
                <string>ATY,Henbury</string>
                <key>@1,name</key>
                <string>ATY,Henbury</string>
                <key>@2,name</key>
                <string>ATY,Henbury</string>
                <key>@3,name</key>
                <string>ATY,Henbury</string>
            </dict>
        </dict>
        <key>Delete</key>
        <dict/>
    </dict>

Notes:

If needed for other Navi cards, the framebuffers to be loaded are different for each family:

5500ATY,Python
5700ATY,Adder
6600ATY,Henbury
6800ATY,Belknap
6900ATY,Carswell

1. Alternative method to avoid black screen with MacPro or iMacPro SMBIOS (thanks @dreamwhite)

Using SSDT-BRG0.aml fixes black screen on Ventura with SMBIOS models lacking iGPU. This SSDT allows to define a missing pci-bridge device. With it, the Henbury patch is no longer necessary.

As noted above, the Henbury patch drops down the GeekBench 5 scores, however with SSDT-BRG0 expected scores are got, in line with those got by many users with this graphics card.

SSDT-BRG0:

/*
 * This table provides an example of creating a missing ACPI device
 * to ensure early DeviceProperty application. In this example
 * a GPU device is created for a platform having an extra PCI
 * bridge in the path - PCI0.PEG0.PEGP.BRG0.GFX0:
 * PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
 * Such tables are particularly relevant for macOS 11.0 and newer.
 */

DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000)
{
    External (_SB_.PCI0.PEG0.PEGP, DeviceObj)

    Scope (\_SB.PCI0.PEG0.PEGP)
    {
        /*
         * This is a PCI bridge device present on PEGP.
         * Normally seen as pci-bridge in I/O Registry.
         */
        Device (BRG0)
        {
            Name (_ADR, Zero)
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (_OSI ("Darwin"))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (Zero)
                }
            }

            /*
             * This is an actual GPU device present on the bridge.
             * Normally seen as display in I/O Registry.
             */
            Device (GFX0)
            {
                Name (_ADR, Zero)  // _ADR: Address
            }
        }
    }
}

Be sure of the PCI path to your dGPU, mine is /PCI0@0/PEG0@1/PEGP@0/GFX0@0 so the SSDT has these lines:

External (_SB_.PCI0.PEG0.PEGP, DeviceObj)

Scope (\_SB.PCI0.PEG0.PEGP)

Modify the SSDT (if needed) to be set within your system. How to chek the PCI path?

2. Alternative method to avoid black screen with MacPro or iMacPro SMBIOS

There are some more advanced SSDT configurations such as SSDT-VEGA.aml which, in addition to creating devices, does so by mimicking the way real Macs are configured (EGP0 and EGP1 devices instead of BRG0).

SSDT-VEGA has the same benefits as SSDT-BRG0: Henbury patch not needed and good GeekBench 5 scores.

It also requires checking the PCI path to your graphics card. In the example code I keep the same path as in the previous SSDT-BRG0.

DefinitionBlock ("", "SSDT", 2, "HACK", "VEGA", 0x00000000)
{
    External (_SB_.PCI0, DeviceObj)
    External (_SB_.PCI0.PEG0, DeviceObj)
    External (_SB_.PCI0.PEG0.PEGP, DeviceObj)

    Scope (\_SB)
    {
        Scope (PCI0)
        {
            Scope (PEG0)
            {
                Scope (PEGP)
                {
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (_OSI ("Darwin"))
                        {
                            Return (Zero)
                        }
                        Else
                        {
                            Return (0x0F)
                        }
                    }
                }

                Device (EGP0)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (_OSI ("Darwin"))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

                    Device (EGP1)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Device (GFX0)
                        {
                            Name (_ADR, Zero)  // _ADR: Address
                        }

                        Device (HDAU)
                        {
                            Name (_ADR, One)  // _ADR: Address
                        }
                    }
                }
            }
        }
    }
}  

Installing Monterey / Ventura

The process is almost the same for installation and for update:


SMBIOS and config.plist files

Important!

  1. Don't forget to rename the selected config file to config.plist.
  2. Do ResetNVRAM the first time you boot a new EFI.
  3. Press spacebar to show auxiliary entries in the picker.

Credits

AcidantheraOpenCore and kexts
DortaniaOpenCore guides
InsanelyMacHackintosh forum
tonymacx86Hackintosh forum
OCLPOpenCore Legacy Patcher