macOS Monterey 12.01~12.4 worked successfully on ASRock Z690 Steel Legend WiFi 6E with Intel 12700K and 12900K. The motherboard has 5 PCIe slots. ASRock Z690 Steel Legend (without WiFi) should also work as the difference is just the M.2 WiFi card and antennas. All the 12 generation CPUs, i.e., 12900, KS, K, KF, F, T, 12700, K, KF, F, T 12600, K, KF, T, 12500, T, 12400, F, T, 12300, T, 12100, F, and T will most likely work with the same configuration.
Wireless Module
I have replaced the Intel AX210NGW WiFi/BT module with macOS-compatible Broadcom BCM94360NG. The E key M.2 socket on the motherboard supports non CNVi modules. BCM94360NG works OOB with the M.2 socket.
View attachment 535903
CPU Emulation
As Alder Lake CPUs are not supported by macOS, the CPU ID has to be faked. In the config.plist, CPU ID is set to
0x0A0655 that is found in Comet Lake CPUs such as 10900, 10850, 10700, and 10400.
View attachment 535957
Components
- Motherboard: ASRock Z690 Steel Legend WiFi 6E
- CPU: Intel 12900K (12700K is also tested to work)
- M.2 wireless module: Broadcom BCM94360NG
- GPU: Radeon RX 6600 XT
Components below are not mandatory to work with the EFI files attached to this post.
- Memory: Corsair DDR4 3200MHz 16GB x 4
- M.2 SSD: WD_BLACK 1TB SN770 NVMe SSD
- CPU cooler: Noctua NH-U12S chromax.black
- Power supply: SilverStone SST-ST85F-GS-V2 (850W)
BIOS
The current UEFI version is 6.03. It works with all the default BIOS settings, i.e.
it works OOB. I have optionally changed following settings from their default value.
- OC Tweaker > DRAM Configuration > Load XMP Setting > XMP 2.0 Profile 1
- Advanced > USB Configuration > XHCI Hand-off > Enabled
- Boot > Bootup Num-Lock > off
Following settings should be set to default values, otherwise Monterey boot sequence stops.
- Advanced > CPU Configuration > CFG Lock > Disabled (default)
- Advanced > Chipset Configuration > Above 4G Decoding > Enabled (default)
EFI System Partition (ESP) Files
The attached EFI (ESP files) is configured with OpenCore 0.8.1, and will successfully boot macOS 12.4. The EFI is based on
the EFI provided by
@etorix.
SSDTs used in the EFI are:
- SSDT-AWAC.aml
- SSDT-EC-USBX.aml
- SSDT-SBUS.aml
- SSDT-PLUG-ALT.aml
Kexts used in the EFI are:
- Lilu.kext
- VirtualSMC.kext
- WhateverGreen.kext
- SMCProcessor.kext
- SMCSuperIO.kext
- AppleALC.kext (layout-id is 12)
- LucyRTL8125Ethernet.kext
- NVMeFix.kext
- USBPorts.kext
USBPorts.kext is a custom kext created by Hackintool.app to activate 15 USB ports chosen in the next section.
Recommended SystemProcudtName for Alder Lake-S is iMacPro1,1 or MacPro7,1. In the attached EFI, iMacPro1,1 is used because performance tuning is simpler. In case of using MacPro7,1, CPUFriend and related kexts are additionally required for optimal performance. However, there is no specific difference between the two products, you can use one you prefer.
Graphics Processing Unit (GPU)
A discrete GPU is required because the iGPU (UHD 770) is not supported in macOS. Compatible GPUs to the recent versions of macOS are:
- AMD Vega 56, Vega 64, Radeon VII (OOB)
- AMD RX 400 series, RX 500 series (OOB)
- AMD RX 5000 series (with "agdpmod=pikera")
- AMD RX 6600 XT, RX 6800, RX 6800 XT, RX 6900 XT (with "agdpmod=pikera")
In this build, 6600 XT is used and the boot argument "agdpmod=pikera" is added at the plist:NVRAM:7C436110-AB2A-4BBB-A880-FE41995C9F82:boot-args parameter in attached config.plist. The -wegnoigpu option is also added to the boot-args to ensure the iGPU deactivate.
USB
This motherboard has 6 physical USB ports on the back panel. They are assigned as follows:
View attachment 535958
Besides the back panel ports, I found that:
- HS14 is assigned to the Bluetooth pins at the M.2 E key socket (M2_WIFI),
- HS01 and SS01 are assigned to the Type-C connector on the motherboard (F_USB32_TC_1),
- HS08 and SS08 are assigned to a USB hub chip ASM107x that is used by two internal USB 3 connectors (i.e. USB3_5_6 and USB3_7_8),
- HS09, 10, 11, 12 are assigned to two internal USB 2 connectors (USB_1_2 and USB_3_4), and
- HS13 is used by ASRock LED Controller for motherboard illumination.
Internal USB connectors on the board are assigned as follows:
View attachment 547131
I made a USBPorts.kext to activate all of the back-panel ports and the M.2 E key socket. Other internal USB connectors (USB 2.0 and 3) on the motherboard are omitted because of the infamous macOS limitation of 15 ports. Edit the info.plist file in the USBPorts.kext for your hardware configuration.
View attachment 535967
View attachment 548121
In case you want to use a PCIe WiFi/Bluetooth card like Fenvi FV-T919 instead of an M.2 WiFi card, you may want to activate HS9, HS10, HS11 or HS12 instead of HS14. You can edit the info.plist file in the USBPorts.kext, and rewrite the HS14 dictionary part:
XML:
<key>HS14</key>
<dict>
<key>Comment</key>
<string>M.2 E key for Bluetooth</string>
<key>UsbConnector</key>
<integer>255</integer>
<key>name</key>
<string>HS14</string>
<key>port</key>
<data>
DgAAAA==
</data>
</dict>
to HS10 (for example).
XML:
<key>HS10</key>
<dict>
<key>Comment</key>
<string>PCIe card for Bluetooth</string>
<key>UsbConnector</key>
<integer>255</integer>
<key>name</key>
<string>HS10</string>
<key>port</key>
<data>
CgAAAA==
</data>
</dict>
When you have to deactivate some of the back panel USB ports, SS05, SS04, HS05, HS04 are possible candidates. These USB ports (USB3_1_2) are less useful than others, because they do
not support ACPI wake-up function, while other USB ports do. This means that a keyboard or pointing-device connected to USB3_1_2 cannot be used to awake the computer from sleep. The motherboard manual says:
View attachment 548158
Sleep and Wake
Update: Instant-wake issue has bee fixed in Monterey 12.2.1. All the Type-A connectors can be normally mapped with USB 3 (USBConnector = 3).
Although above USB mapping reflects actual connector configulation, it causes instant wake issue. When a USB keyboard or USB flash devices are connected to some of USB Type-A connectors at the back-panel, the computer wakes up about 1 minute after starting sleep. In case no devices are connected to Type-A, it successfully sleeps, stops the CPU fan, and wakes up when Bluetooth input device is operated.
This instant wake issue can be solved by mapping USB Type-A connectors with "internal" (UsbConnector = 255) instead of with USB 2 (0) or USB 3 (3). As for USB Type-C connectors, sleep behavior is normal with actual mapping of TypeC+Sw (9). In the attached EFI, USBPorts.kext maps USB connectors as follows:
View attachment 537385
The remaining sleep issue is that the computer will not wake by operating a keyboard plugged to one of the USB Type-A connector. It can be waken only by either of input devices connected to Bluetooth or USB Type-C, or by the power switch. As I mainly use Apple's BT input devices, this does not matter.
In the Energy Saver setting, "Wake for network access" should be disabled in my environment, otherwise the computer wakes up very frequently. "Enable Power Nap" may be enabled, in that case, it wakes about once an hour to execute background jobs.
View attachment 537386
Benchmarks
As shown in the Activity Monitor.app, 24 cores (8 P-cores, 8 hyper-threads, and 8 E-cores) are activated.
View attachment 547122
A benchmark result by Geekbench 5 w/o over-clocking (stock freq.) is as follows:
View attachment 547121
The result is 13 to 23 % better than M1 Max score found in the Geekbench browser site. Alder Lake scores in the following graph are averaged over 5 benchmark trials.
View attachment 547120
Following is the GPU Geekbench 5 comparison to M1 Max iGPU.
View attachment 547357
Want More Threads?
Update: From OpenCore 0.7.7, all the cores and threads work.
The attached EFI requires all the E-cores to be disabled in BIOS. Although this is a stable way for macOS, you could try an experimental method to increase threads. See details in following post by @vandroiy .
If it only had Bootcamp for Windows ARM https://www.theverge.com/22383598/parallels-desktop-mac-windows-10-install-m1-macbook
www.tonymacx86.com
The method is to replace OpenCore.efi, and to set ProvideCurrentCpuInfo=true. This version of OpenCore.efi is said to be included in the next version of OpenCore 0.7.7.
What Works
- Stable operation over 24 hours
- Shutdown, restart
- Ethernet port (onboard 2.5GbE, Realtek RTL8125BG)
- M.2 WiFi, Bluetooth (using Broadcom BCM94360NG)
- Audio (ALC897, layout-id=12)
- Quick Look, Preview
- Messages, FaceTime
- iCloud, App Store, Apple TV
- Universal clipboard, Continuity, AirDrop
- Amazon Prime Video in Safari
- AirPlay Receiver (plays DRM contents)
- Sleep (CPU and case fans stop.)
- Wake from sleep by Bluetooth KBDs, USB-connected KBDs, or power switch. (Except for KBDs connected to USB3_1_2 that does not support ACPI wake-up function.)
- Universal Control (macOS 12.3 and later)
What doesn't work
Acknowledgements
@etorix and
@CaseySJ who shared excellent Z690 guide.
Updates:
- Audio worked with AppleALC.kext 1.6.7
- Confirmed sleep without USB devices
- Confirmed DRM video playback
- Confirmed Apple ID related functions
- Updated for OC0.7.6 based on https://www.tonymacx86.com/threads/z690-chipset-and-alder-lake-cpus.316618/page-153#post-2294767
- Unwanted wake from sleep by USB devices is disabled
- USB Type-A connectors are mapped with "internal" to avoid instant wake
- Updated for OC0.7.8. All cores and hyper-threads work.
- Removed the USB mapping tip. From 12.2.1, no instant-wake happens.
- Updated for OC0.8.0. (05/04/2022)
- Updated the USB assignment information. (05/04/2022)
- Updated to macOS 12.4. (05/18/2022)
- Updated the USB tips. (05/22/2022)
- Updated about wake from sleep by USB connected keyboards. (05/23/2022)
- Updated for OC0.8.1. (06/15/2022)