This repository provides the basic EFI folder to run macOS Catalina on an ASRock Phantom Gaming ITX/TB3 motherboard. The default provided currently using a Ryzen 9 3900X 12 Core CPU and a Radeon RX 5500 XT. For a short guide to using different CPUs and GPUs see below (all kexts specific to those are named explicitely). This is intended as a reference and to share improvements for similar build, not as an out of the box EFI to download. It is highly recommended to start with a vanilla OpenCore and following OpenCore Vanilla Guide first.
Prozessor: AMD Ryzen 9 3900X
Cooler: Corsair H80i v2 AIO
Motherboard: AsRock X570 Phantom Gaming ITX/TB3 (BIOS 2.0)
Memory: Corsair Vengeance RGB Pro (2x, 16GB) DDR4-3200
Storage: Corsair MP600 (1000GB) M.2 NVMe PCIe 4.0
Video Card: Sapphire Radeon RX 5500 XT Pulse 8G
Power Supply: Corsair SF600 Platinum
Case: Phanteks Enthoo Evolv Shift (Mini-ITX)
Case fans: 2x Noctua NF-A14 PWM
AIO fans: 2x Noctua NF-F12 PPC 2000 PWM
I've replaced the stock Corsai SP120 fans with Noctua's NF-F12 which are quite a bit cooler or quieter depending on how you set up your fan curves. Due to limited space it is not possible to connect the USB cable directly to the pump on this motherboard, instead I've ordered a flat Mini-USB head from AliExpress. Liquidctl allows to controll the AIO under MacOS.
BIOS: 2.00 / 2.30
OpenCore: 0.6.0
macOS: 10.15 / 11.0 Beta
For BIOS 2.30
- RebuildAppleMemoryMap: Yes
- SetupVirtualMap: No
- SyncRuntimePermissions: Yes
For BIOS 2.00:
- RebuildAppleMemoryMap: No
- SetupVirtualMap: Yes
- SyncRuntimePermissions: No
BigSurInstall-config.plist
has a minimal set of kexts and settings which should get the MacOS 11 installer running.
The following SSDT files are for setting up HPET and EC.
- SSDT-EC.aml
- SSDT-HPET.aml
- SSDT-PLUG.aml
- SSDT-SBRG.aml
The following SSDT files are for USB Power and properly name USB controllers and ports. Note: to fix sleep issues the internal HS10 port connected to bluetooth is not configured as internal.
- SSDT-USBX.aml
- SSDT-XHC.aml
Besides the default kexts the following are noteworthy:
For enabling the integrated Intel Bluetooth
- IntelBluetoothFirmware.kext
- IntelBluetoothInjector.kext
The SMCAMDProcessor.kext is used to provide CPU temperature and frequency information, the AMD Power Gadget can be downloaded from https://github.com/trulyspinach/SMCAMDProcessor/releases. Other monitoring tools can also access and display this information. AMDRyzenCPUPowerManagement-ES.kext is a custom compiled version with a few minor differences: Upon boot low power state (P2) is enabled and Core Performance Boost is desabled by default. Additionally the adjustment has been tuned down a little to not immediately go to the highest power state and go down again faster. This with the intent to not have the CPU going full power for just minor loads like opening an empty browser tab. Only use this kext if you know what you are doing as it requires P2 to work correctly on your CPU.
The VoodooTSCSyncAMD kext is used to sync the cores and required the correct number of threads (cores * 2). Either update the Info.plist of the kext or create a new one with the VoodooTSCSync configurator.
The RadeonBoost kext is used to inject proper power management (AGPMInjector) and fixes some performance issues. It support SMBIOS iMacPro1,1/all MacPro and RX 480, 580, 590, 5500 (XT), 5600 (XT), 5700 (XT) and Radeon VII. Note: As of 10.15.5 macOS the SMU firmware is broken for Navi cards, therefore RadeonBoost does no longer load it and the previously seen performance gains in Benchmarks are lost again. Other than that RadeonBoost still provides some small improvements for Navi.
The AMD-USB-Map kext is depending on the SMBIOS and can be created with the Hackintool. See section about sleep for the other variant.
Everything is tested with ASRocks latest BIOS v2.00 and v2.30:
- CSM: disabled
- Above 4G decoding: disabled (must be enabled for certain older graphics card)
- Thunderbolt: enabled
- Security Level: No Security
- Fast boot: disabled
Note: ASRock did a wide cleanup of BIOS options in v2.30, several options were removed like advanced PCIe settings and possibility to disable USB controllers... BIOS version 2.30 seems to break sleep, screen turns off but system keeps running where as with 2.00 it properly enters sleep.
The front USB ports on the internal USB 3 header are SS5/HS5 and SS6/HS6.
The port of the internal USB header is mapped to HS9, the internal Bluetooth module to HS10.
In case the XHC0 controller is disabled, the ports 3/4 on the back I/O are USB 2 only.
XHC0 -> XHCI | ||
---|---|---|
PRT1 | HS4 | USB 2 |
PRT4 | HS9 | internal USB 2 |
PRT5 | HS2 | USB 2 |
PRT6 | HS1 | USB 2 |
PRT9 | SS1 | USB 2 |
PRT10 | SS2 | USB 2 |
XHC1 -> XHC | ||
---|---|---|
PRT1 | HS6 | USB 2 |
PRT2 | HS10 | Bluetooth |
PRT3 | HS5 | USB 2 |
PRT4 | SS10 | USB Type C |
PRT7 | SS6 | USB 3 |
PRT8 | SS5 | USB 3 |
XHC0 -> XHC2 | ||
---|---|---|
PRT7 | SS3 | USB 3 |
PRT8 | SS4 | USB 3 |
(The last is the problematic controller causing wake up issues)
Best way is to disable that controller in BIOS: AMD PBS -> FCH Common Options -> XCHI Controller 0 to disabled
Thunderbolt controller is not detected by MacOS unless device is already connected during boot. SSDT-TB3.aml file might improve TB support (Thanks to XinJiangCN for that).
The integrated Intel Wifi is not yet supported.
Microphone is not yet working through integrated audio codec.
Sleep can be a difficult topic with little things breaking either entering or leaving sleep. Certain USB devices can break transition into sleep (resulting in a kernel panic after 3 minutes).
And make sure boot flag -hbfx-disable-patch-pci
is set to avoid black screens on wakeup.
If it does not entering sleep properly there are some things to be tried:
- Disable "Allow Bluetooth devices to wake this computer" in Advanced Bluetooth settings (may require the use of the power button if keyboard and mouse are connected through standard bluetooth)
- Disconnect specific bluetooth devices (like monitor speakers and the like)
- Turn off monitor before entering sleep
Note that the AIO prevents sleep from working if the pump is connected by USB, even if the port is not configured. I'm currently working around this by connecting the pump one of the external USB ports to manually disconnect it before going to sleep until I can find an internal USB hub which supports PPPS (per port power switch) to disable the connection through software.
Use at your own risk.
Discussions:
Cedits and links: