|
Motherboard | Gigabyte Z390 Aorus Elite |
CPU | Intel i7 9700 |
iGPU | Intel UHD Graphics 630 |
dGPU | AMD Radeon RX 6600 8GB |
Sound | Realtek ALC1220 |
Ethernet | Intel I219V7 |
Wifi + BT | Fenvi FV-T919 BCM94360CD |
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) |
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) |
For the installation / update to be successful, 3 parameters related to security must be set:
SecureBootModel=j137
or j160
or Default
in config.plist (Apple secure boot j137
corresponds to iMacPro1,1, j160
to MacPro7,1 and Default
sets the same model as in SMBIOS)csr-active-config=00000000
in config.plist)sudo spctl --master-enable
in Terminal).These security options can be changed after installation as they do not are required for Monterey / Ventura to run.
iMac19,1 SMBIOS requires:
iMacPro1,1 or MacPro7,1 SMBIOS require:
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
acpi-wake-type=01
>> removed with OpenCore 0.8.9 release, using acpi-wake-gpe=6D
in USB DeviceProperties instead.Drivers
Tools
Some settings:
acpi-wake-type
as data=01
, to improve wake from sleepPickerAttributes=144
to enable Flavours systemalcid=7 agdpmod=pikera
(agdpmod=pikera
not needed with RX 580 or Polaris card, only with Navi cards)AllowToggleSip=True
to show in the picker the ToggleSIP tool that allows to easily switch between SIP enabled and SIP disabled for the current boot.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:
AAPL,ig-platform-id=07009B3E
is mandatory to detect the iGPU as Coffee Lakedevice-id=9B3E000
to be displayed as Intel UHD Graphics 630
instead of Kabylake Unknown
enable-metal=01
to enable Metal 3 in VenturaIf 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:
force-online=01
to force online status on all displays (mandatory).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:
5500 | ATY,Python |
5700 | ATY,Adder |
6600 | ATY,Henbury |
6800 | ATY,Belknap |
6900 | ATY,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
}
}
}
}
}
}
}
The process is almost the same for installation and for update:
agdpmod=piker
a from boot-args and don't use the framebuffer patchAcidanthera | OpenCore and kexts |
Dortania | OpenCore guides |
InsanelyMac | Hackintosh forum |
tonymacx86 | Hackintosh forum |
OCLP | OpenCore Legacy Patcher |