Hackintosh on x86 platform – Part II Install macOS

A MacBook Pro photo

I introduced the Hackintosh hardware tips in the first article. However, some software is required to configure, install, and run macOS on the Hackintosh. I used OpenCore. The other option is Clever.

The high-level configure procedure

  1. Prepare macOS image.
  2. Create bootable USB disk with macOS image.
  3. Edit EFI configuration on the USB disk.
  4. Install macOS on the hardware.
  5. Tuning.

However, you need to follow OpenCore official guidelines to prepare and install macOS. I only share my experience on Dell Inspiron 15-7569.

Helper Machine for the Hackintosh

OpenCore guidelines provide the tools on Windows, Linux, and macOS. I think the tools under macOS are most straightforward. So I suggest you have another computer to prepare the macOS image. Suppose you don’t have an Apple computer. You can create a macOS virtual machine on Windows 10. Following is what I used:

  1. Prepare a Windows 10 computer.
  2. Install VMware Workstation or VMware Player. The evaluation version is enough.
  3. Run unlocker 3.0.3 to enable macOS support on the VMware products above.
  4. Create a macOS VM.
  5. Download macOS image and install on the VM. (This article offers some images that can be used directly on VMware Workstation. I didn’t test it. But the guide is also helpful.)

I recommend downloading the Catalina or older macOS version for the virtual machine since it is more stable. And another trick is you need to install VMware Tools on the virtual machine twice after install macOS.

Tools

Once the virtual machine is ready, you need to download and upload the following tools to it:

  • MountEFI. It’s a tool to mount the EFI partition.
  • OpenCore. It’s the core part to boot up macOS on non-Apple platform. It simulates the Apple hardware environment.
  • ProperTree. It’s used to edit the configure.plist file.
  • GenSMBIOS. It generates fake Apple serial number, board id…etc.
  • IORegistryExplorer. It’s useful to list graphic card on macOS for troubleshooting purpose.
  • installmacos.py. It downloads the official images to macOS.

Configuration

Now you have enough tools to start the actual works. I would suggest you follow the OpenCore official guidelines. Since it contains the detailed steps, I mentioned below. Following is the high-level procedure I used:

You should complete the following steps on the helper macOS virtual machine.

  1. Download macOS image. I used to see some newer versions of Big Sur that could not complete the installation progress. If it’s the case, please choose a lower version.
  2. Format a USB disk to the Mac OS Extended (Journaled) format.
  3. Create the USB bootable installer with the downloaded image.
  4. Mount EFI partition of the USB disk.
  5. Create a folder called EFI in the empty EFI partition you mounted.
  6. Copy OperCore files over to the EFI folder.
  7. Add, remove, and modify the files in the EFI folder according to the OpenCore official guidelines.
  8. Edit the “config.plist” file in the EFI folder according to the OpenCore official guide.

Installation

Now you should be able to install macOS on the Hackintosh with the USB disk.

Please make sure the partition is APFS when you format the local disk. Otherwise, macOS installation may be in problem.

Please leave some space to install Windows 10 if you can. It will be beneficial for macOS issues in the future.

You may want to use an external keyboard and mic if it’s a laptop. The reason is the laptop keyboard and touchpad may require additional tuning. You can do that later after installed the macOS.

If everything goes smoothly, you should be able to see the login screen after several reboots.

Post Installation Tuning

The installation is not the end of the Hackintosh game. You still need to tune the macOS as much as possible to works as an actual Mac. Even it’s a Hackintosh. 🙂 Following is my experience:

Apple’s unique features

  1. Play DRM content. Such as Apply TV+, High quality lossless music in Apply Music, Netflix or Amazon in Safari…etc. It doesn’t work if your computer only has embedded GPU (iGPU). And it only works well on AMD Dedicate GPU (dGPU, the secondary GPU on your computer). You may need to follow the commands I mentioned in the part I to enable it.
  2. AirDrops, SideCar, and Apple Bluetooth features (Such as AirPod Pro). You need a compatible wireless card to enable these features. The card with different part number (PN) may not work on some computers. For example, my laptop is Dell Inspiron 15-7569. I bought an DW1820A. The bluetooth worked but wireless never worked. According to the community, the only work version is DW1820A with PN: CN-08PKF4. Then I returned the first card and bought another one with the correct PN, it worked just fine. People says that driver is not required for compatible wireless card. This is inaccurate. You actually need to follow OpeCore guidelines to install 3rd party driver.

Common features

  1. Sound Card. You may see no sound card in the macOS settings. Therefore, you need to follow the guide to find out your sound card’s ALC and try the layout id one by one in the boot arg section in configure.plist file. It spent me a lot of time to identify ALC of my sound card. Following is my experience:
    • Find your sound card’s vendor id (VEN), device id (DEV), and subsys id (SUBSYS) in device manager -> Properties of your sound card -> Detials -> Device instance path on Windows 10.
    • Search the combination of VEN and DEV. For example: Dell Inspiron 15-7569’s sound card is customized. It’s hard to find the actual Codec. I found the VEN 10EC, DEV 0225, SUBSYS 1028073 in the devce manager on Windows 10. I searched 10EC0225 in this file. And then try to match the SUBSYS in results. And found out the codec is ALC3234.
    • Found the codec in the AppleALC list.
    • You should see there are few or a lot of layout ids for your codec.
    • Now you need to test each id by following “Testing your layout section” in OpenCore.
    • Be patient! I tried a lot of ids for my codec, and one time I was about to gave up. But suddenly one ID was working!
  2. TouchPad and Mic on laptop. The OpenCore official guidelines have enough information for this. However, The trick is you need to decide are your TouchPad and Mic a PS2, USB, I2C or something else. It really confused me. My workaround to identiy it is to go to BIOS setting to check. My laptop has a keyword “PS2” in the TouchPad setting.

That’s all I have at this moment. I didn’t provide detailed procedures since everyone’s hardware is different. However, the high-level processes may bring you some ideas about the whole picture of Hackintosh. Good luck and have fun!!!

Hackintosh on x86 platform – Part I Hardware

laptop notebook internet connection


“Hackintosh is a computer that runs Apple’s Macintosh operating system macOS on computer hardware not authorized for the purpose by Apple.”

Wiki

All credits belong to the OpenCore official guide. I cannot complete without the super detailed guide. 🙂

Hardware is the first step for Hackintosh. You need compatible computer parts that macOS can support. I have successfully build my Hackintosh system on a desktop PC and a laptop.

Please refer to the OpenCore official guide to buy your computer parts. I will only share my experience in this article.

CPU

First of all, I recommend Intel CPU. According to the guide. It appears a bit hard and extra steps if you use AMD CPU.

Memory

Memory is more flexible. I have tried from high-end Samsung DIMMs to some super cheap DIMMs (32GB per DIMM). I didn’t see any issue.

Hard Disk

Hard disk is also flexible. You can use SATA to NVMe. However, I would recommend SATA SSD or NVMe SSD. It’s much faster. My macOS loading speed is about 4 – 6 seconds with NVMe SSD. And any brand is ok. My desktop PC use SAN Disk. And my laptop uses a cheap ($85 for 512 GB) no-brand SATA SSD.

GPU

A graphics card is essential. It impacts Apple TV+, NetFlix, and any other online streaming services that use Apple DRM technology. I assume you are using Intel CPU. And you only want to use the embedded graphics card. You will not be able to watch movies on Apple TV+. (I have tried all options. Please let me know if you figured it out.) If you use an external graphics card. AMD card is the best choice since Apple’s computers use only AMD graphics cards.

And “iGPU” means the embedded graphics card. “dGPU” means the external graphics card. If you have a proper dGPU, you build a Hackintosh computer by following the OpenCore official guide. And you find Apple TV+ still doesn’t work. In addition, you need to run the following command in the terminal:

defaults write com.apple.AppleGVA gvaForceAMDKE -bool YES
defaults write com.apple.AppleGVA gvaForceAMDAVCEncode -bool YES
defaults write com.apple.AppleGVA gvaForceAMDAVCDecode -bool YES
defaults write com.apple.AppleGVA gvaForceAMDHEVCDecode -bool YES

Wifi and Bluetooth

The wifi card is a critical part of achieving most of Apple’s unique functions. Such as AirDrop, SideCar, AirPod, and Apple Watch unlock, etc. The suggestion is to buy a second-hand Apple wifi card or something natively supported by macOS. For example, my laptop uses the DW1820A wifi card. The part number is CN-08PKF4 which is perfectly running on my Dell Inspiron 15-7569! I would recommend the same card if you have a Dell laptop. Please make sure the part number is the same as mine. I tried some other model on the Dell laptop. No one works.

Other Consideration

In addition. You also need to prepare a USB keyboard and mouse if you build Hackintosh on a laptop. The laptop keyboard and touchpad may not work in the macOS installation if you do not configure OpenCore properly. So you may need to use the USB keyboard and mouse temporarily.

This operation is restricted by the administrator – ‘vpxd.stats.maxQueryMetrics’

You may see vpxd.stats.maxQueryMetrics relevant error when retrieving performance data of ESXi hosts, virtual machines, or other entities on vCenter Server by PowerCLI. The full error message:

This operation is restricted by the administrator – ‘vpxd.stats.maxQueryMetrics’. Contact your system administrator

VMware published a KB about how to fix that. Please notice that the mentioned vCenter advanced parameter config.vpxd.stats.maxQueryMetrics is case-sensitive.

202203 Update:

The parameter is removed in vCenter Advanced Settings after upgrading to vCenter Server 7.x. You have to reconfigure it.

Disable DHCP Service for VMware Fusion in Big Sur

Article background. It's a LED screen with yellow text: "DHCP: No Services"

My home lab virtual machines are connected on private network 192.168.1.x. All internet traffic goes to a gateway server and is forwarded over the internet network adapter. The gateway server is a DHCP server also to assign IP addresses to my lab devices. The benefit to use my own DHCP server is I can control some advanced DHCP settings in the simple GUI interface. However, I didn’t find the DHCP settings on VMware Fusion 12 for the private network. And my VMs got 172.x.x.x DHCP IP addresses automatically.

The reason is I’m using macOS Big Sur. Apple requests developers to use the vmnet framework for network virtualization programming. The framework only offers limited functions for virtualized networking. This limitation is confirmed by VMware staff in the community.

Since macOS has its own DHCP server. One workaround is to disable the native DHCP server by following the command which is mentioned in the same post:

sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/bootps.plist

macOS Virtual Machine Cannot Boot with the error “No Media”

The screenshot of boot error. The error message is "Mac OS X... No Media"

I installed a macOS virtual machine on VMware Fusion. As you may know, the installation time is super long. It took me about 1 hour to complete the installation. To save recovery time in case my computer OS needs to be re-installed. I exported the virtual machine to an OVA file to another partition.

However, the virtual machine failed to boot up when I imported the OVA file as a new virtual machine. I got the following error message:

Mac OS X… No Media

And the virtual machine entered the Boot Manager screen after few minutes. Mac OS X was in the boot list. However, it wouldn’t allow me to boot even I chosen it manually.

I tried to reset NVRAM for the virtual machine. It’s no luck. BTW, Apple has an official article talks about how to reset NVRAM or PRAM on your Mac. I’m not sure is it suitable for macOS virtual machines. I just simply delete the *.nvram file in the virtual machine’s package.

I also tried to reset BIOS and EFI booting order…etc. No one works.

Finally, I created a new empty virtual machine with macOS 11.0 as the operating system. And compared the configuration file between the empty and imported virtual machines. And I noticed that the guestos parameter was different:

My imported virtual machine is guestos = "other".

The empty virtual machine is guestOS = "darwin20-64".

The fix is just simply to change the guest OS from other to darwin20-64.

I’m not sure why the parameter was changed after exporting and importing. It may be a VMware Fusion bug.

VMware Fusion is quite different from VMware Workstation. To open the VMX file for a virtual machine. You need to right-click the virtual machine in the virtual machine library and hold the Option (Alt) key, then select Open Config File in Editor.

“DNS bad key” on Windows Failover Cluster

Cover photo.

I used to see two common errors on the new created Microsoft Failover Cluster. “DNS bad key” and CNO update error.

Cluster network name resource ‘Cluster Name’ failed registration of one or more associated DNS name(s):

DNS bad key

or

Cluster network name resource failed registration of one or more associated DNS names(s) because the access to update the secure DNS Zone was denied.

The error “DNS bad key” is more often rather than the other error. I did a lot of study on the internet. The issue was fixed after applying the following steps:

  1. Right click the Windows button – Click Run.
  2. Run following command to enter Network Connections.
    ncpa.cpl
  3. Go to Properties of the network adapter that you are using for Microsoft Failover Cluster.
  4. Go to Internet Protocol Version 4 (TCP/IPv4)AdvancedDNS tab.
  5. Deselect the Register this connection’s addresses in DNS.
Screenshot of the key option to fix the issue.

The cluster error events appears in event log in regular frequency. If you want to test it without waiting. You can initiate a core cluster resource failover to test it.

How to move core cluster resource?

Microsoft Cluster Failover – Right click the cluster – More actionsMove Core Cluster Resources.