Parts

  • Motherboard - Gigabyte Z390 UD (~$130)
  • CPU - i7-9700K (~$420)
  • Memory - G.Skill F4-3200C14D-32GVR Ripjaws V (~$245)
  • M.2 PCIe NVMe SSD - Samsung 970 EVO 500GB [boot drive] (~$100)
  • SSD - Samsung 1TB 860 EVO [weekly backup] (~$150)
  • HDD - WD 1TB 2.5" [daily backup] (~$150)
  • Video - Sapphire RX-580 Nitro 4GB (~$190)
  • WiFi/Bluetooth - Fenvi FV-T919 (~$60)
  • PS - Corsair RM650x ($100)
  • Cooler Master water cooling for the CPU ($75)
  • Case - Cooler Master HAF XB EVO ($100)

The Z390 UD motherboard has a socket 1151 for the 8th and 9th gen Core i3/i5/i7/i9 CPUs. It doesn't have a bunch of extra stuff on board that would complicate a clean install of Mac OS. I've seen people buy it and then give it bad marks because it doesn't have this or that. I was looking for just that. A perfect motherboard. It has one m.2 PCIE slot, one x16 PCIe slots, two x4 slots, three x1 slots and a Realtek ALC887 sound chip. It supports the Gigabyte Alpine Ridge or Titan Ridge Thunderbolt card, the former of which I was using with a Thunderbolt monitor and drives, but I have since taken that out. Note: The BIOS disables the Titan Ridge's TB1 and TB2 compatibility.


Case

The case is a Cooler Master HAF XB EVO. I like them because they can breathe and I can work on the innards without tearing it all apart. The case is cubic and a bit gothic, but it isn't ugly.


Memory

I originally chose 2 x 16GB Corsair LPX DDR4-2666 because they are fast enough and still cheap. Then 6 months in I replaced the memory with the G.Skill Ripjaws V DDR4-3200. The memory has a 20% faster clock, but also has lower latency.

Some say memory speed has little or nothing to do with performance. I got about 13.75% performance improvement in single core CPU benchmarks (Geekbench 5), and a snappier overall response by going from 2666MHz to 3200MHz. Results are 1367 single-threaded and 8058 multi-threaded, up from 1200/7500.


Video

I started with a Sapphire RX 580 Pulse 8GB, but although I run three monitors, I don't do games, so I switched to the Nitro with 4GB. It is beyond adequate. There are two monitors at 1920 x 1080 and one at 2560 x 1440. There is a KVM switch that switches the two lower resolution monitors, and keyboard/mouse. The High res monitor has to be switched from DP to HDMI to change computers.


WiFi/Bluetooth

This was the easiest part. Plug it in, hook up the internal USB2 port using the supplied cable, and everything works. The only part that required work was finding which USB2 port number it was, and that just required rebooting, changing the exclude string, and identifying the port that had a Bluetooth adapter on it.


Boot drive

The boot drive has been, at various times, a WD Black, WD Velociraptor, Samsung 860 EVO SATA, and now a 970 EVO M.2 NVMe. Each time but the last the boot time decreased by a magnitude. Now I use the 970 for the OS, and the 960 for data. The 970 is not astronomically faster on boot than the 860, because the disk isn't the problem. It is, however, much, much faster with loading and running applications, especially those that hit the disk.

To bring it up on the NVMe drive, I formatted the NVMe with APFS, restored the Carbon Copy Cloner image of the 860 SATA drive onto the NVMe, then copied the EFI folder from the EFI volume on the 860 to the EFI volume on the 970 and booted. The 860 is now my weekly backup and the WD Black 2.5" is the daily backup. All three drives are bootable. I verify them once a week. I have some projects on the system I really don't want to lose.

If you are going to use Catalina, or any Mac OS with APFS partitions, you are going to want an SSD. Performance on a mechanical drive is horrible. It takes seconds to boot from the NVMe or SATA SSDs, but a couple of minutes to boot from the WD Black. Even longer to populate the Launch Pad with apps.


BIOS Settings for Z390 UD motherboard

The bios settings are best shown in pictures, so:





Build

I put it all together, and then booted with a Linux optical disk to verify that everything worked. It did ok, but when I booted Mac OS it failed on USB, with a circle with a line through it on the screen. You have to "inject" the USB ports. The proper way to do it is with USBInjectAll.kext and a config file, but I used USBInjectAll.kext and an exclude list in the boot string. My exclude list seems to allow all on-board USB ports and the front panel ports to function properly. Two of the back panel ports are USB2 only with this setup. This is due to a 15 port limit on MacOS. I use one of them as the keyboard/mouse input from the KVM switch.


Boot Parameters

The boot parameters on mine look like this:

dart=0 nv_disable=1 kext-dev-mode=1 slide=0 uia_exclude=HS09,HS10,HS11,HS13,HS14,SS03,SS04,SS09,SS10,SS11,SS12,SS13,SS14,USR1,USR2

I can't say what some of the options mean, but they are recommended based on the problems I encountered. YMMV. kext-dev-mode tells the kernel it is Ok to load unsigned kernel extensions. Slide is the offset from the beginning of memory in which to load the OS. I believe "0" means figure it out. The most interesting part is the uia_exclude, which tells USBInjectAll.kext to exclude those USB ports from the ports it enables. That keeps the number of active USB ports below 16.


USB

USB on a Hackintosh has always been a mystery to me, but I think I finally have it figured out.

Port HS12 is a port on the USB2 header on the motherboard. It hooks to the WiFi/Bluetooth card for Bluetooth. The ports then map as follows:

  USB2+3       USB2       ----- USB2+3 -----     -- Not Used --   USB2   ---- Not Used ----
 01    02    03    04    05    06    07    08    09    10    11    12    13    14  USR1  USR2
HS01, HS02, HS03, HS04, HS05, HS06, HS07, HS08, N/A , N/A , XXX , HS12, N/A , N/A , N/A , N/A
SS01, SS02, XXX , XXX , SS05, SS06, SS07, SS08, N/A , N/A , N/A , N/A , N/A , N/A , N/A , N/A

The "HS" is high speed (USB2) while the "SS" is super speed (USB3). "XXX" means they exist but are disabled in the boot string, and "N/A" means they don't appear on the motherboard at all, but still have to be disabled.

If you have need of the other USB2 port on the internal USB2 connector, you will need to remove "HS11" from the exclude list, and modify the Bluetooth cable connector to bring out the other port pins. They are standard 0.1" header female pins.


The picture shows the ports as they appear on the motherboard and front panel. Of course the front panel is on the HAF XB EVO, but the two ports will be numbered 07 and 08 as long as the USB3 front panel connector on the motherboard is hooked to your front panel. Don't look for USB3 only ports (the blue box) - there aren't any. 05 and 06 were, but when I saw the picture I found I could make them USB2 + USB3.


EFI

The drivers I had to add to /EFI/CLOVER/drivers64UEFI were:

  • ApfsDriverLoader-64.efi (APFS driver so Clover knows how to access an APFS drive)
  • AptioMemoryFix-64.efi (For memory mapping in AMI Aptio UEFI BIOS)
  • OsxAptioFix2Drv.efi (Not supposed to be required, but stops random reboots)
  • PartitionDxe-64.efi (Supports Apple partition map)

The kexts I added to /EFI/CLOVER/kexts/Other are:

  • FakeSMC.kext (All Hacks need this to boot)
  • IO80211Family.kext (Realtek ethernet).
  • Lilu.kext (Patcher)
  • VoodooHDA.kext (Audio)
  • USBInjectAll.kext (Opens all of the USB ports)
  • WhateverGreen.kext (Lilu plugin for video)

You make the bootable USB stick by formatting Journaled, GUID Partition Map, name it MacBootUSB, then run the install media creator:
sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/MacBootUSB /Applications/Install\ macOS\ Catalina.app --nointeraction
The installer will change the name of the USB stick.

Install Clover on the EFI partition of the USB stick. Using Clover Configurator, open the EFI volume on the USB stick and copy a working EFI folder into the volume. My EFI folder works for the hardware listed above. The thing that matters is the motherboard. The drivers and kexts are the ones that I found to work with the Gigabyte Z390 UD. Be sure to change the serial numbers using Clover Configurator in the SMBIOS section if you use the EFI above.

UPDATE: I switched to Clover r5101, and of course it has different directories and filenames. Instead of /EFI/CLOVER/drivers64UEFI, it puts the drivers in /EFI/CLOVER/drivers/UEFI. They're named the same, but have no -64 suffix. The new minimum driver list is:

  • ApfsDriverLoader.efi
  • EmuVariableUefi.efi
  • NvmExpressDxe.efi
  • OsxAptioFix3Drv.efi
  • PartitionDxe.efi

Conclusions

What works

Sound, WiFi, Bluetooth, Airdrop, Apple Trackpad II, USB2 & USB3 (2 ports on front, 6 ports on back), ethernet, and video all work.

What doesn't work

Once in a great while, after a power off/on, the audio comes up with 6 x "HDMI" as the available audio ports. Another reset and it works with both the front panel jack and the rear panel jack. It shows an S/PDIF, but I don't have a cable to connect a DAC to see if it works.

I haven't figured out how to do a minor update (from 10.14.2 to 10.14.3 for instance). It goes through the install process, and comes up with the same old version. I've had to download the latest full installer and do a fresh install.

What finally works

Carbon Copy Cloner didn't like the NVMe drive much. After a backup, but before finishing the task, the computer would reboot, rendering the backup useless. I solved it by telling CCC to unmount the target drive after backup. That's fine because CCC mounts the target drive if it isn't mounted when the backup starts. A good side effect is that I can't do anything stupid to the backup drive without really trying because it is never mounted during normal operation. A reboot will mount the drive, but the backup will unmount it when done.

It is now my primary machine. It hasn't hung or freaked out once since I finished it, and with the RAM and NVMe additions has become very peppy indeed.