Skip to content

Latest commit

 

History

History
740 lines (548 loc) · 28.1 KB

README.md

File metadata and controls

740 lines (548 loc) · 28.1 KB

OpenCore Z490-E (Comet Lake)
v1.0.0

OpenCore Hackintosh configuration example for the ASUS ROG STRIX Z490-E GAMING motherboard with an Intel® Core™ i9-10900K.

GitHub GitHub repo size Discord



Z490-E Hackintosh

macOS Sonoma running on native hardware.


You can also use this template to make your own writeup for your setup!



Motherboard

ASUS ROG STRIX Z490-E GAMING
Product Page

"The ROG Strix Z490-E Gaming motherboard is designed to cope with the demands of 10th Generation Intel® Core™ processors, with boosted power delivery and an optimised cooling design providing more surface area for heat dissipation."
Product description provided by ASUS.

BIOS

UEFI BIOS Utility
Version 3001 (19/02/2024)

These are the BIOS settings used with this Hackintosh setup.

Setting Value
VT-d Enabled
Above 4G Decoding1 Disabled
ReSizeable BAR1 Disabled
Memory Remap Enabled
Primary Output CPU Graphics
DVMT PreAlloc Size 64MB
iGPU Multi-Monitor Enabled

1 ReSizable BAR and Above 4G Decoding are disabled to allow for the proper virtualisation of macOS under QEMU/KVM with PCI passthrough.



OpenCore

OpenCore
1.0.2

This is the version of OpenCore used, including bundled files. The included config.plist targets this version.

macOS

macOS Sonoma

This is the version of macOS that this OpenCore configuration currently targets. Other versions of macOS that are compatible with it are listed below.

Supported

macOS Sequoia
macOS Ventura
macOS Monterey
macOS Big Sur
macOS Catalina


What works?

macOS

  • macOS Sequoia
  • macOS Sonoma
  • macOS Catalina

Hardware

  • Dedicated GPU (RX 5700 XT)
  • iGPU (UHD 630)
  • NVMe drives
  • SATA drives
  • USB 3.1 (XHCI)
  • Ethernet
  • Wi-Fi
  • Bluetooth
  • Camera
  • Sound

Software

  • AirDrop
  • iMessage
  • FaceTime
  • Sidecar
  • Unlock with Apple Watch
  • QE/CI graphics acceleration
  • Metal support (Metal 3)
  • Temperature sensors
  • Sleep / Wake
  • RTC (protection)
  • Hyperthreading
  • Virtualisation
  • Memory bank configuration


Problems

🎉 ALL MAJOR PROBLEMS HAVE BEEN FIXED!


  • HDMI on Intel UHD 630 (iGPU) ‏‏‎ ‏‏‎ ‎‎‏‏‎ ‎ 🎉 FIXED!
  • Despite trying multiple different framebuffers and connection patches, I cannot get the HDMI output to work from the iGPU. DisplayPort works fine. HDMI also works fine on the dedicated GPU. As a result, the iGPU is being used for internal compute only - which works really well. I do still intend to find the fix though!

    Tip

    This was fixed by using new DeviceProperties connector patches (mentioned in the DeviceProperties section of this readme!).

    Note

    The DeviceProperties for the UHD 630 iGPU has been updated to support Metal 3!


  • Wi-Fi and Bluetooth ‏‏‎ ‏‏‎ ‎‎‏‏‎ ‎ 🎉 FIXED!
  • Having worked on my virtualised instances of macOS Catalina and macOS Monterey, I'm still unable to get stable Wi-Fi or Bluetooth support on macOS Sonoma with AirportItlwm.kext. Wi-Fi networks will often connect but crash the entire system after a minute or two. Strangely, Wi-Fi worked flawlessly in macOS Recovery, and I even used it to install macOS as I had not patched the I225-V ethernet yet.

    Tip

    This was fixed by using the debug (alpha) version of AirportItlwm.kext.


  • AirDrop ‏‏‎ ‏‏‎ ‎‎‏‏‎ ‎ 🎉 FIXED!
  • As this relies on Wi-Fi and Bluetooth connectivity, while shown as available throughout the system, it sadly does not work at this time. As a workaround, I have been using LocalSend, a cross-platform alternative.

    Tip

    This was fixed by two seperate patches;

    • Wi-Fi and Bluetooth fixed
    • Secure Boot model changed from Default to j185f

  • Unlock with Apple Watch‏‏‎ ‏‏‎ ‎‎‏‏‎ ‎ 🎉 FIXED!
  • Again, as a Wi-Fi and Bluetooth reliant feature, unlocking with Apple Watch doesn't work either right now.

    Tip

    This was fixed by two seperate patches;

    • Wi-Fi and Bluetooth fixed
    • Secure Boot model changed from Default to j185f

  • BIOS POSTs in "Safe Mode"‏‏‎ ‏‏‎ ‎‎‏‏‎ ‎ 🎉 FIXED!
  • After booting macOS, the next reboot always caused the BIOS to POST in a "safe mode" with the message The system has POSTed in safe mode. displayed. This is because macOS tries to write to disallowed areas of the RTC.

    Tip

    This was fixed by using using this guide.


System

The specs of my main system that the OpenCore configuration targets.

Motherboard ASUS ROG STRIX Z490-E GAMING
CPU Intel® Core™ i9-10900K
Chipset Z490
Generation Comet Lake
Memory 64 GB DDR4 3200MHz
Storage 500 GB WD Blue NVMe M.2
GPU Intel UHD Graphics 630
AMD Radeon RX 5700 XT
NVIDIA RTX 3090 *
NIC Intel I225-V 2.5Gb Ethernet

Note

The system contains an NVIDIA RTX 3090 graphics card, but it has been intentionally disabled through a custom SSDT (SSDT-GPU-DISABLE.aml).

Geekbench Scores

Intel Core i9-10900K Windows Linux macOS
Single Core 1,694 1,936 1,751
Muti Core 9,279 10,229 9,883
GPU Windows
Vulkan
Linux
Vulkan
macOS
Metal
NVIDIA
GeForce RTX 3090
182,120 194,027 -
AMD
Radeon RX 5700 XT
68,514 76,096 101,291
Intel
UHD 630 Graphics
6,275 5,702 6,312


ACPI

SSDTs used:

  • SSDT-AWAC
  • SSDT-EC-USBX-DESKTOP
  • SSDT-GPU-DISABLE
  • SSDT-PLUG-DRTNIA
  • SSDT-RHUB
  • SSDT-RX5700XT

Important

SSDT-GPU-DISABLE is a custom SSDT used to disable an NVIDIA RTX 3090 graphics card. It should be removed if config is being used on a different system.

SSDT-RX5700XT is an EXPERIMENTAL custom SSDT used to enhance the performance of an AMD RX 5700 XT graphics card. It should be removed if config is being used on a different system.


DeviceProperties

The following tables display the added PCI devices and their child keys.

PciRoot(0x0)/Pci(0x2,0x0)

Intel UHD Graphics 630

Key Type Value
AAPL,ig-platform-id Data 07009B3E
device-id Data 9B3E0000
enable-metal Data 01000000
disable-agdc Data 01000000
enable-hdmi-dividers-fix Data 01000000
enable-hdmi20 Data 01000000
framebuffer-con0-busid Data 02000000
framebuffer-con0-enable Data 01000000
framebuffer-con0-flags Data C7030000
framebuffer-con0-index Data 02000000
framebuffer-con0-pipe Data 0A000000
framebuffer-con0-type Data 00080000
framebuffer-con1-busid Data 04000000
framebuffer-con1-enable Data 01000000
framebuffer-con1-flags Data C7030000
framebuffer-con1-index Data 03000000
framebuffer-con1-pipe Data 08000000
framebuffer-con1-type Data 00080000
framebuffer-con2-busid Data 01000000
framebuffer-con2-enable Data 01000000
framebuffer-con2-flags Data C7030000
framebuffer-con2-index Data 01000000
framebuffer-con2-pipe Data 09000000
framebuffer-con2-type Data 00080000
framebuffer-patch-enable Data 01000000
framebuffer-stolenmem Data 00003001
rps-control Data 01000000
hda-gfx String onboard-1
model String Intel UHD Graphics 630
igfxfw Data 02000000

📄 Show as property list data


Expand this if you want to copy and paste the entries above as .plist data!

You can paste this data straight into plist editors like ProperTree.

<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>disable-agdc</key>
	<data>AQAAAA==</data>
	<key>enable-hdmi-dividers-fix</key>
	<data>AQAAAA==</data>
	<key>enable-hdmi20</key>
	<data>AQAAAA==</data>
	<key>enable-metal</key>
	<data>AQAAAA==</data>
	<key>framebuffer-con0-busid</key>
	<data>AgAAAA==</data>
	<key>framebuffer-con0-enable</key>
	<data>AQAAAA==</data>
	<key>framebuffer-con0-flags</key>
	<data>xwMAAA==</data>
	<key>framebuffer-con0-index</key>
	<data>AgAAAA==</data>
	<key>framebuffer-con0-pipe</key>
	<data>CgAAAA==</data>
	<key>framebuffer-con0-type</key>
	<data>AAgAAA==</data>
	<key>framebuffer-con1-busid</key>
	<data>BAAAAA==</data>
	<key>framebuffer-con1-enable</key>
	<data>AQAAAA==</data>
	<key>framebuffer-con1-flags</key>
	<data>xwMAAA==</data>
	<key>framebuffer-con1-index</key>
	<data>AwAAAA==</data>
	<key>framebuffer-con1-pipe</key>
	<data>CAAAAA==</data>
	<key>framebuffer-con1-type</key>
	<data>AAgAAA==</data>
	<key>framebuffer-con2-busid</key>
	<data>AQAAAA==</data>
	<key>framebuffer-con2-enable</key>
	<data>AQAAAA==</data>
	<key>framebuffer-con2-flags</key>
	<data>xwMAAA==</data>
	<key>framebuffer-con2-index</key>
	<data>AQAAAA==</data>
	<key>framebuffer-con2-pipe</key>
	<data>CQAAAA==</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>igfxfw</key>
	<data>AgAAAA==</data>
	<key>model</key>
	<string>Intel UHD Graphics 630</string>
	<key>rps-control</key>
	<data>AQAAAA==</data>
</dict>

Important

The connector patches in the table above are new as of the 25th August 2024 and were implemented to fix HDMI output. Please add these new entries to enable HDMI!

Note

The NEW configuration of the UHD Graphics 630 can run in both display and headless modes!

Tip

The enable-metal key is now included to enable Metal 3 graphics support with the UHD Graphics 630!

This means various macOS apps can now utilise the iGPU - even while headless - for more trivial tasks, such as rendering Finder. This frees up the dGPU's resources for other more intensive tasks.

You can even see this in action by enabling the hidden GPU tab in Activity Monitor.


PciRoot(0x0)/Pci(0x1C,0x1)/Pci(0x0,0x0)

Intel I225-V 2.5Gb Ethernet

Key Type Value
device-id Data F2150000

📄 Show as property list data


Expand this if you want to copy and paste the entries above as .plist data!

You can paste this data straight into plist editors like ProperTree.

<key>PciRoot(0x0)/Pci(0x1C,0x4)/Pci(0x0,0x0)</key>
<dict>
	<key>device-id</key>
	<data>8hUAAA==</data>
</dict>

Note

The Intel I225-V requires a special patch mentioned in Kernel.

This only applies to macOS Big Sur and older.

Tip

For improved compatibility with macOS Big Sur and older, the I225-V model has now been masked as the near-identical I225-LM model. After extensive testing, it appears functionality is the same.


PciRoot(0x0)/Pci(0x1b,0x0)

Apple ALC

Key Type Value
AAPL,ig-platform-id Data 0300220D
layout-id Data 01000000

📄 Show as property list data


Expand this if you want to copy and paste the entries above as .plist data!

You can paste this data straight into plist editors like ProperTree.

<key>PciRoot(0x0)/Pci(0x1b,0x0)</key>
<dict>
	<key>AAPL,ig-platform-id</key>
	<data>AwAiDQ==</data>
	<key>layout-id</key>
	<data>AQAAAA==</data>
</dict>


Kernel

The following shows the kernel configuration.

Kexts

Kexts used:

  • Lilu
  • WhateverGreen
  • AirportItlwm
  • IntelBluetoothFirmware
  • NVMeFix
  • VirtualSMC
  • AppleALC
  • BlueToolFixup
  • IntelBTPatcher
  • SMCProcessor
  • SMCSuperIO
  • SMCRadeonSensors
  • RestrictEvents
  • FeatureUnlock
  • RTCMemoryFixup
  • Z490E_USBMap

Note

Z490E_USBMap.kext is a custom kext containing the USB mappings of my ASUS ROG STRIX Z490-E GAMING motherboard ports - your mileage may vary!

Note

RestrictEvents.kext has been added to utilise its OTA software update patches. It does NOT apply any other patches.

Tip

There are multiple versions of AirportItlwm.kext installed to support various versions of macOS.

You don't have to remove any - they have all been individually configured to only be injected based on the macOS version booted.

Patches

Intel I225-V 2.5Gb Ethernet

Key Type Value
Arch String Any
Base String __Z18e1000_set_mac_typeP8e1000_hw
Comment String I225-V patch
Count Number 1
Enabled Boolean True
Find Data F2150000
Identifier String com.apple.driver.AppleIntelI210Ethernet
Limit Number 0
Mask Data
MaxKernel String 20.4.0
MinKernel String 19.0.0
Replace Data F3150000
ReplaceMask Data
Skip Number 0

📄 Show as property list data


Expand this if you want to copy and paste the entries above as .plist data!

You can paste this data straight into plist editors like ProperTree.

<dict>
	<key>Arch</key>
	<string>Any</string>
	<key>Base</key>
	<string>__Z18e1000_set_mac_typeP8e1000_hw</string>
	<key>Comment</key>
	<string>I225-V patch</string>
	<key>Count</key>
	<integer>1</integer>
	<key>Enabled</key>
	<true/>
	<key>Find</key>
	<data>8hUAAA==</data>
	<key>Identifier</key>
	<string>com.apple.driver.AppleIntelI210Ethernet</string>
	<key>Limit</key>
	<integer>0</integer>
	<key>Mask</key>
	<data></data>
	<key>MaxKernel</key>
	<string>20.4.0</string>
	<key>MinKernel</key>
	<string>19.0.0</string>
	<key>Replace</key>
	<data>8xUAAA==</data>
	<key>ReplaceMask</key>
	<data></data>
	<key>Skip</key>
	<integer>0</integer>
</dict>


Security

SecureBootModel 》 j185f

Vault 》 Optional

Note

The secure boot model j185f corresponds to an iMac20,2 from August 2020.


NVRAM

Contents stored in NVRAM.


4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14

Key Type Value
DefaultBackgroundColor Data 00000000

4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102

Key Type Value
rtc-blacklist Data

7C436110-AB2A-4BBB-A880-FE41995C9F82

Key Type Value
ForceDisplayRotationInEFI Number 0
SystemAudioVolume Data 46
boot-args String keepsyms=1 debug=0x100 alcid=1 agdpmod=pikera igfxgl=1 forceRenderStandby=0 itlwm_cc=GB revpatch=sbvmm
csr-active-config Data 00000000
prev-lang-diags:kbd Data 656E2D47 42
prev-lang:kbd Data 656E2D47 423A32
StartupMute Data 00

📄 Show as property list data


Expand this if you want to copy and paste the entries above as .plist data!

You can paste this data straight into plist editors like ProperTree.

	<key>4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14</key>
	<dict>
		<key>DefaultBackgroundColor</key>
		<data>AAAAAA==</data>
	</dict>
	<key>4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
	<dict>
		<key>rtc-blacklist</key>
		<data></data>
	</dict>
	<key>7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
	<dict>
		<key>ForceDisplayRotationInEFI</key>
		<integer>0</integer>
		<key>boot-args</key>
		<string>keepsyms=1 debug=0x100 alcid=1 agdpmod=pikera igfxgl=1 forceRenderStandby=0 itlwm_cc=GB revpatch=sbvmm</string>
		<key>prev-lang-diags:kbd</key>
		<data>ZW4tR0I=</data>
		<key>prev-lang:kbd</key>
		<data>ZW4tR0I6Mg==</data>
		<key>csr-active-config</key>
		<data>AAAAAA==</data>
		<key>StartupMute</key>
		<data>AA==</data>
		<key>SystemAudioVolume</key>
		<data>Rg==</data>
	</dict>


SMBIOS

iMac20,2

Due to the system having a 10-core i9-10900K, the CPU model is similar to the one found in an iMac 5K 27-inch (i9, 2020), with a model identifier of iMac20,2.


UEFI

Drivers in use:

  • HFSPlus
  • OpenCanopy
  • OpenRuntime
  • ResetNvramEntry

Post-Install Tweaks

This is just a collection of my post-install tweaks I apply after installing macOS. They're not really related to OpenCore or the overall functionality of the configuration.

Dark Menu Bar and Dock

Okay, so I'm a bit of a macOS boomer. Having used macOS since long before Mojave's dark mode, I'm accustomed to the regular light appearance of the windows - but I always enabled the "Dark menu bar and dock" option as I loved the look. While I still like dark mode (and use it on iOS), the hybrid light/dark mode on macOS is still my favourite!

The following commands restore that functionality:

Window Server

defaults write -g NSRequiresAquaSystemAppearance -bool Yes

Notification Centre

defaults write com.apple.notificationcenterui NSRequiresAquaSystemAppearance -bool No

Control Centre

defaults write com.apple.controlcenterui NSRequiresAquaSystemAppearance -bool No

About This Mac + System Profiler

defaults write com.apple.SystemProfiler.AboutExtension NSRequiresAquaSystemAppearance -bool No
defaults write com.apple.SystemProfiler.AboutExtension NSRequiresAquaSystemAppearance -bool No

Show Hidden Files

Does what it says on the tin. Shows all files, including hidden ones, in the Finder.

defaults write com.apple.Finder AppleShowAllFiles YES
killall Finder

Show GPU Tab in Activity Monitor

Unhides the hidden sECrET GPU tab in macOS' Activity Monitor, helpful for seeing which apps are running on what GPU!

defaults write com.apple.ActivityMonitor ShowGPUTab -bool true

AirDrop over Ethernet

Makes AirDrop scan Ethernet too!

defaults write com.apple.NetworkBrowser BrowseAllInterfaces 1
killall Finder

Frosted Glass Terminal Theme

Some macOS eye candy.

curl -OL https://raw.githubusercontent.com/Coopydood/OpenCore-Z490E-CometLake/main/EXTRAS/HyperTerm.terminal

Import through Terminal's preferences.


Gallery


Disclaimer

This repo is simply a dump of my current and up-to-date OpenCore stuff that I use on my machine.

Feel free to use it as an example and modify it however you'd like, but please don't expect it to "just work" - because it won't.


Contribute!

If you've found a way to make the configuration better, or have solved issues outlined in the Problems section, please share your changes on GitHub for us all to use! Thank you!