Jump to content
osy

[Guide] HaC Mini - OSX Mojave on Intel Hades Canyon (NUC8i7HVK/NUC8i7HNK)

49 posts in this topic

Recommended Posts

Posted (edited)

I recently acquired the NUC Hades Canyon at a bargain and thought it was almost the perfect computer for me: extremely tiny, has a powerful GPU, and a lot of ports. The only downside is that it doesn't run OSX (well). Since this is my ideal Mac Mini, I called the project HaC mini and have been working on it for the past month. The goal is to have a perfect build that is indistinguishable from a real Mac. That means every hardware and software feature works perfectly. I have a background in hardware and platform engineering but no experience in Hackintosh, so this was a great learning opportunity for me as well. In the spirit of learning, I'm also releasing a series of writeups for various hard issues that I resolved in hope that it will help future hackintoshers. These writeups are independent of the NUC Hades Canyon.

 

NUC Hades Canyon Installation Guide

Writeup - Fixing Metal Drivers

Writeup - Fixing Thunderbolt Hotplug

Writeup - Fixing HDA Audio

 

Some improvements to existing Hades Canyon work I've seen previously:

  • Metal graphics issues fixed
  • Workaround for 10.14.5+ GPU panics
  • Thunderbolt 3 working including hot plug, usb-c + hot plug, boot without anything connected, sleep, wake, etc
  • SDXC port working
  • Second ethernet port working
  • Power management working

 

Some highlights in general:

  • Full graphics acceleration
  • Working services: iMessages, iCloud, Siri (with built in mics), Find My Mac, FileVault, etc
  • Working Handoff, Continuity, Universal Clipboard, Apple Watch unlock with swapped Wifi card
  • Multiple displays, two ethernet ports, TB3, eGPU with eject

 

Pretty much everything works, there's some very specific hardware issues documented here and are being worked on.

  • Front headphone doesn't work yet, SPDIF digital audio doesn't work yet
  • Most USB ports have sleep/wake eject issues (this is a hardware/BIOS problem)
  • For TB3 to work you must have at least one TB or USB-C device plugged in on boot and during wakeup (you are free to unplug and hot-plug while running)
Edited by osy

Share this post


Link to post
Share on other sites
Advertisement
Posted (edited)

Thanks to help from al3x, the “TB3 doesn’t show up without anything plugged in on boot” issue is resolved. TB3 is fully working now including sleep, hotplug, and usb c. 

 

Also the layout changes in AppleALC has been merged upstream. 

Edited by osy

Share this post


Link to post
Share on other sites
On 6/27/2019 at 12:15 PM, osy said:

I recently acquired the NUC Hades Canyon at a bargain and thought it was almost the perfect computer for me: extremely tiny, has a powerful GPU, and a lot of ports. The only downside is that it doesn't run OSX (well). Since this is my ideal Mac Mini, I called the project HaC mini and have been working on it for the past month. The goal is to have a perfect build that is indistinguishable from a real Mac. That means every hardware and software feature works perfectly. I have a background in hardware and platform engineering but no experience in Hackintosh, so this was a great learning opportunity for me as well. In the spirit of learning, I'm also releasing a series of writeups for various hard issues that I resolved in hope that it will help future hackintoshers. These writeups are independent of the NUC Hades Canyon.

 

NUC Hades Canyon Installation Guide

Writeup - Fixing Metal Drivers

Writeup - Fixing Thunderbolt Hotplug

Writeup - Fixing HDA Audio

 

Some improvements to existing Hades Canyon work I've seen previously:

  • Metal graphics issues fixed
  • Workaround for 10.14.5+ GPU panics
  • Thunderbolt 3 working including hot plug, usb-c + hot plug, boot without anything connected, sleep, wake, etc
  • SDXC port working
  • Second ethernet port working
  • Power management working

 

Some highlights in general:

  • Full graphics acceleration
  • Working services: iMessages, iCloud, Siri (with built in mics), Find My Mac, FileVault, etc
  • Working Handoff, Continuity, Universal Clipboard, Apple Watch unlock with swapped Wifi card
  • Multiple displays, two ethernet ports, TB3, eGPU with eject

 

Pretty much everything works, there's some very specific hardware issues documented here and are being worked on.

  • Front headphone doesn't work yet, SPDIF digital audio doesn't work yet
  • Most USB ports have sleep/wake eject issues (this is a hardware/BIOS problem)

I enjoy reading your write-up, Great Work !

Share this post


Link to post
Share on other sites

Thanks! What wake issue are you experiencing? Did you disable the IGPU?

Share this post


Link to post
Share on other sites
Posted (edited)

It refuse to wake up most of the time and have to reset. Yes I did tried with IGPU disable but to no avail. It maybe due to the bluetooth/wireless card that I am using.

 

Are you able to get quicksync working without whatevergreen.kext ?

Edited by Alex.C

Share this post


Link to post
Share on other sites

Updated the release package to 1.2. I removed the TbtForcePower driver because it's not 100% working (will add it back when it's stable). Updated Lilu+AppleALC to latest release build (my changes were merged). Finally, using the new Polaris22MetalFixup that does not require a hacked-up Lilu.

Share this post


Link to post
Share on other sites
19 hours ago, osy said:

Maybe it’s due to tb3 panic: https://github.com/osy86/HaC-Mini/issues/11

 

I would try to remove the force power stuff.

 

I don’t use whatevergreen since I have the IGPU disabled. So I don’t have quicksync either but shouldn’t AMD VCE work as well?

I thought it would be nice to have quicksync feature since the hardware is already there.

 

BTW which version of bios do you have in your nuc8 ?

Share this post


Link to post
Share on other sites

I’m on 0056

 

I disable the IGPU because when enabled it wakes up to a black screen for me. 

Share this post


Link to post
Share on other sites
Posted (edited)
11 minutes ago, osy said:

I’m on 0056

 

I disable the IGPU because when enabled it wakes up to a black screen for me. 

Was on 0057 bios, downgrade to 0056 still no good wake on sleep even with disable IGPU.

Otherwise, the system is very usable and stable.

Edited by Alex.C

Share this post


Link to post
Share on other sites

What do you get for the wake reason? What’s the output of pmset -g log?

Share this post


Link to post
Share on other sites
36 minutes ago, osy said:

What do you get for the wake reason? What’s the output of pmset -g log?

I get about 50% success rate, see attach

nuc8.txt

Share this post


Link to post
Share on other sites

Do you have any usb devices plugged in? If so what port(s)? Did you disable portable device charging mode?

Share this post


Link to post
Share on other sites
Posted (edited)
15 hours ago, osy said:

Do you have any usb devices plugged in? If so what port(s)? Did you disable portable device charging mode?

Yes charging mode disable, had a usb 3 hub connected but had that rule out. Have make some progress, 100% wake from sleep with clover->dsdt->patches "change NTFY to XTFY" disabled. Not that I know, I am trying to understand your code in SSDT-tbtOnPCH.aml to find out what I have done or caused (break some TB3 stuff I think).

 

Edited by Alex.C

Share this post


Link to post
Share on other sites
Posted (edited)

HacC_mimi 1.1

 

With "change NTFY to XTFY" disabled" OR "change RWAK to XWAK" disabled, system sleep & wake consistently with dual GPU (IGPU enabled).

 

Issues: Wakeup from USB, display does not power on immediately.

It can be resolve by adding darkwake=0, display almost power up immediately (1s maybe) after a key press

 
Issues: Low (or not charging), no Extra Operating Current (1600mA) & no Sleep current (2100mA) when connecting to IPad via USB3, AppleBusPowerController not loading. Fix, add clover->dsdt->patches "change H_EC to EC" with SSDT-USBX.aml injection.
 
AppleLPC.kext loaded with LPC Injector (Xnu CPU Power Management) https://pikeralpha.wordpress.com/2013/10/05/xnu-cpu-power-management/
 
 
Edited by Alex.C

Share this post


Link to post
Share on other sites

I wonder if there's a difference between the HVK and HNK that affects the acpi changes.

 

I do not want to use darkwake=0 because I like to use dark wake. I guess it's a tradeoff, if you want longer wake times vs dark wake features.

 

H_EC => EC may cause other issues because the NUC has a fake EC. That's why I didn't include that patch. However, I haven't ran into any issues that is caused by that and if it fixes charging issues, then I'll add it.

 

AppleLPC should already be loaded due to the device-id changes.

Share this post


Link to post
Share on other sites
Posted (edited)
20 minutes ago, osy said:

I wonder if there's a difference between the HVK and HNK that affects the acpi changes.

 

I do not want to use darkwake=0 because I like to use dark wake. I guess it's a tradeoff, if you want longer wake times vs dark wake features.

 

H_EC => EC may cause other issues because the NUC has a fake EC. That's why I didn't include that patch. However, I haven't ran into any issues that is caused by that and if it fixes charging issues, then I'll add it.

 

AppleLPC should already be loaded due to the device-id changes.

Strange ? for my case AppleLPC.kext was never loaded

Edited by Alex.C

Share this post


Link to post
Share on other sites

Can you post a ioregistry dump (or ioregistryviewer file)?

Share this post


Link to post
Share on other sites

I noticed you said that you have tb and usb-c hot plug working, but in your commits you said you removed b/c it doesn't. Could you go into a bit more detail on what's not working or what is messed up. Is it the the Notify methods or the Thunderbolt Efi driver?

 

Been working on TB/USB-C hot plug on my XPS 9560 without using the express card trick and TB hot plug for sometime with not much success. I like the idea of using notify, almost like the _ON/_OFF method we use for disabling NVIDIA on Optimus.

Share this post


Link to post
Share on other sites
7 hours ago, blazinsmokey said:

I noticed you said that you have tb and usb-c hot plug working, but in your commits you said you removed b/c it doesn't. Could you go into a bit more detail on what's not working or what is messed up. Is it the the Notify methods or the Thunderbolt Efi driver?

 

Been working on TB/USB-C hot plug on my XPS 9560 without using the express card trick and TB hot plug for sometime with not much success. I like the idea of using notify, almost like the _ON/_OFF method we use for disabling NVIDIA on Optimus.

No, I only removed the fix for the controller not showing up when nothing is connected. I removed it because it wasn’t stable enough. Hotplug still works; you just need to have some usbc/tb3 device plugged in during boot and before any sleep wake. Once it’s booted in you’re free to hotplug. 

Share this post


Link to post
Share on other sites
22 hours ago, osy said:

No, I only removed the fix for the controller not showing up when nothing is connected. I removed it because it wasn’t stable enough. Hotplug still works; you just need to have some usbc/tb3 device plugged in during boot and before any sleep wake. Once it’s booted in you’re free to hotplug. 

 

Thanks a lot for the response. I think I will try to implement your idea of notifying NHIO with my system.

Share this post


Link to post
Share on other sites
Posted (edited)
On 7/12/2019 at 12:15 AM, Alex.C said:

Here you go, ioreg.zipnuc8.zip

I checked your ioreg and we have the same device id for LPC (8086:A152) and my config.plist changed it to 8086:9CC1. What OSX version are you trying to run? AppleLPC.kext should attach on 8086:9CC1 on Mojave.

 

In terms of charging current, how are you checking the current output?

 

EDIT: I took a USB Charge Doctor (one of these https://www.adafruit.com/product/1852 ). On both windows and OSX, I measured 0.5A limit on the front blue port and 0.7A-0.9A output on the front yellow port. No difference in behaviour from windows and osx. No USBX/H_EC patches needed. No AppleBusPowerController loaded. I don't have any USB 3.0 device or 3.0 compatible charge doctor so I cannot confirm the limits listed in the specs (https://www.intel.com/content/dam/support/us/en/documents/mini-pcs/nuc-kits/NUC8i7HVK_TechProdSpec.pdf) which are 0.9A on blue ports and 1.5A on yellow port. If someone can measure the charging current in Windows and in OSX with and without loading AppleBusPowerController, it would be great.

Edited by osy

Share this post


Link to post
Share on other sites
Posted (edited)
12 hours ago, osy said:

I checked your ioreg and we have the same device id for LPC (8086:A152) and my config.plist changed it to 8086:9CC1. What OSX version are you trying to run? AppleLPC.kext should attach on 8086:9CC1 on Mojave.

 

In terms of charging current, how are you checking the current output?

 

EDIT: I took a USB Charge Doctor (one of these https://www.adafruit.com/product/1852 ). On both windows and OSX, I measured 0.5A limit on the front blue port and 0.7A-0.9A output on the front yellow port. No difference in behaviour from windows and osx. No USBX/H_EC patches needed. No AppleBusPowerController loaded. I don't have any USB 3.0 device or 3.0 compatible charge doctor so I cannot confirm the limits listed in the specs (https://www.intel.com/content/dam/support/us/en/documents/mini-pcs/nuc-kits/NUC8i7HVK_TechProdSpec.pdf) which are 0.9A on blue ports and 1.5A on yellow port. If someone can measure the charging current in Windows and in OSX with and without loading AppleBusPowerController, it would be great.

10.14.5 in NUC8i7HNK. I notice you did not mention disable IGPU and VT-d  in your install guide and I cannot install without any of them. Do you have NUC8i7HVK ?

 

I do not have a config.plist that changed it to 8086:9CC1. I am using the config.plist from HaC_mini 1.1 in your guide. What version of IORegistryExplorer are you running ? I am on v2.1.

 

I do not have usb current meter but I use my iPad as reference and with see attach. This is with my Alienware 13r3 (ssdt-usbx injected) with iPad connected and charging (not with my nuc now). I know is better to have a mA meter check out.

 

iPad charge.jpeg

Edited by Alex.C

Share this post


Link to post
Share on other sites
42 minutes ago, Alex.C said:

10.14.5 in NUC8i7HNK. I notice you did not mention disable IGPU and VT-d  in your install guide and I cannot install without any of them. Do you have NUC8i7HVK ?

 

I do not have a config.plist that changed it to 8086:9CC1. I am using the config.plist from HaC_mini 1.1 in your guide. What version of IORegistryExplorer are you running ? I am on v2.1.

 

I do not have usb current meter but I use my iPad as reference and with see attach. This is with my Alienware 13r3 (ssdt-usbx injected) with iPad connected and charging (not with my nuc now). I know is better to have a mA meter check out.

 

iPad charge.jpeg

I forgot to have disable IGPU, I will add it. VT-d doesn’t have to be disabled. I use parallels so I need it on.

 

The setting is here: https://github.com/osy86/HaC-Mini/blob/master/Clover/config.plist#L167

 

That preference panel doesn’t mean anything. It just prints what you put in the USBX dsdt. Try putting in something like 9999 and it’ll print it out. You need a usb 3.0 current monitor device or a jailbroken iPhone/iPad running BatteryLife (or a rooted android device running some charging monitor app).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×