All Projects → zearp → Nucintosh

zearp / Nucintosh

Intel NUC hackintosh stuff

Projects that are alternatives of or similar to Nucintosh

Macos Simple Kvm
Tools to set up a quick macOS VM in QEMU, accelerated by KVM.
Stars: ✭ 11,732 (+7141.98%)
Mutual labels:  hackintosh
Lenovo Thinkpad T450 Macos Catalina
Lenovo ThinkPad T450 || macOS Catalina || Hotpatched || Broadwell || *** iMessage: [email protected] ***
Stars: ✭ 132 (-18.52%)
Mutual labels:  hackintosh
Deskmini
Hackintosh DeskMini 310 - 黑苹果 - OpenCore - LTS长期支持 - Big Sur
Stars: ✭ 148 (-8.64%)
Mutual labels:  hackintosh
Clover
Share some hackintosh Clover files 分享一些黑苹果clover配置文件
Stars: ✭ 1,265 (+680.86%)
Mutual labels:  hackintosh
Xps15 9560 High Sierra
XPS15-9560 黑苹果10.13
Stars: ✭ 129 (-20.37%)
Mutual labels:  hackintosh
Osx Kvm
Run macOS on QEMU/KVM. With OpenCore + Big Sur + Monterey support now! Only commercial (paid) support is available now to avoid spammy issues. No Mac system is required.
Stars: ✭ 12,926 (+7879.01%)
Mutual labels:  hackintosh
Hackintosh Rog Strix Z490i
Hackintosh on Asus ROG STRIX Z490-I
Stars: ✭ 104 (-35.8%)
Mutual labels:  hackintosh
Hackintosh
Hackintosh v3 (i7-9700K + Radeon RX 5700 XT) - Clover Configuration + Kexts
Stars: ✭ 162 (+0%)
Mutual labels:  hackintosh
Xiaomi Air I5 7200u
小米笔记本Air 13.3 7代黑苹果配置 / Hackintosh EFI for Xiaomi Notebook Air 13.3
Stars: ✭ 131 (-19.14%)
Mutual labels:  hackintosh
Thinkpad T460s Macos Opencore
Bootloader configuration for macOS on T460s and possibly others 6th gen ThinkPads
Stars: ✭ 146 (-9.88%)
Mutual labels:  hackintosh
Xps9550 Macos
This repository contains my own files on the installation and configuration of macOS Catalina (10.15) on the Dell XPS 15 (9550)
Stars: ✭ 118 (-27.16%)
Mutual labels:  hackintosh
T440p Hackintosh
Thinkpad T440p Hackintosh Catalina (10.15.4) Guide
Stars: ✭ 126 (-22.22%)
Mutual labels:  hackintosh
Efi
拯救者Y7000和Y50-70装黑苹果(hackintosh),已经配置好的EFI引导文件,安装时可用,不同分支功能不同
Stars: ✭ 144 (-11.11%)
Mutual labels:  hackintosh
Xps 9360 Macos
XPS 13 (9360) with macOS Catalina
Stars: ✭ 118 (-27.16%)
Mutual labels:  hackintosh
Xps13 9360 Hackintosh
macOS on XPS-9360
Stars: ✭ 151 (-6.79%)
Mutual labels:  hackintosh
Combojack
Hackintosh combojack support for alc256/alc255.
Stars: ✭ 109 (-32.72%)
Mutual labels:  hackintosh
Xps13 9360 I5 8250u Macos
Hackintosh macOS Mojave 10.14 on XPS13-9360 黑苹果10.14安装配置及教程
Stars: ✭ 134 (-17.28%)
Mutual labels:  hackintosh
Matebook 13 2019 Oc Efi
Matebook 13/14 2019/2020 OpenCore黑苹果 hackintosh
Stars: ✭ 161 (-0.62%)
Mutual labels:  hackintosh
Asus Zenbook Hackintosh
Run macOS on Asus Zenbook with OpenCore
Stars: ✭ 155 (-4.32%)
Mutual labels:  hackintosh
Xiaomi Notebook Air 1gen
Xiaomi Notebook Air 1rst Gen
Stars: ✭ 144 (-11.11%)
Mutual labels:  hackintosh

NUC8IxBEx Hackintosh

This is a quick and dirty repo for Intel NUC 8th gen computers. It should work on all the Coffee Lake ones. I've used various sources (see credits) to build my EFI and did quite some testing. It should leave you with a stable and reliable build but as always, these things are never really finished. While it should work on older macOS versions, I've done all building and testing on Catalina and Big Sur. If you want to use your machine as a stable and reliable daily driver, I suggest sticking with Catalina. Mojave and older will only boot when you set SecureBootModel to disabled, if left enabled you will end up in macOS recovery after an automatic reboot.

Details

  • Works with macOS Catalina and Big Sur*
  • OpenCore bootloader with the following kexts:
    • Lilu
    • VirtualSMC
    • WhateverGreen
    • AppleALC
    • IntelMausi
    • NVMeFix
    • CPUFriend
    • OpenIntelWireless kexts for Intel bluetooth and wifi
    • FakePCIID (without this audio over HDMI only works when re-plugging the cable)

Index

Installation

  • Update to the latest (0087) BIOS -> load BIOS defaults -> click advanced and change;
Devices -> USB -> Port Device Charging Mode: off
Devices -> USB -> USB Legacy -> Disabled
Security -> Thunderbolt Security Level: Legacy Mode
Power -> Wake on LAN from S4/S5: Stay Off
Boot -> Boot Configuration -> Network Boot: Disable
Boot -> Secure Boot -> Disable
  • Download macOS from the App Store and create a USB installer with createinstallmedia on macOS (real mac/hack or vm) or use gibMacOS*
  • Download the EFI folder here or download/clone the complete repo for latest builds
  • Edit config.plist with ProperTree and change the following fields;
PlatformInfo -> Generic -> MLB
PlatformInfo -> Generic -> ROM
PlatformInfo -> Generic -> SystemSerialNumber
PlatformInfo -> Generic -> SystemUUID

Generate new serials with GenSMBIOS. The ROM value is your ethernet (en0) mac address (more info).

  • Copy the EFI folder to the EFI partition on the USB installer
  • Clear NVRAM from the OpenCore picker
  • Install macOS

* Installers made with GibMacOS on Windows and Linux require a working internet connection as it uses the recovery image only, it then downloads the full installer from Apple. The createistallmedia script makes an offline installer.

Post install

  • Remove express card icon: Run sudo mount -uw / && killall Finder && sudo mv /System/Library/CoreServices/Menu\ Extras/ExpressCard.menu /System/Library/CoreServices/Menu\ Extras/ExpressCard.menu.bak && sudo touch /System/Library/CoreServices/Menu\ Extras/ExpressCard.menu -- This no longer works on Big Sur, but you can use a cool and free app called Hidden Bar to hide it with instead.
  • Please re-enable SIP if you don't need it disabled; change csr-active-config to 00000000 reboot and reset nvram
  • Check if TRIM is enabled, If not run sudo trimforce enable to enable it
  • Disable NVMeFix.kext if you don't have an NVMe drive
  • Don't forget to copy the EFI folder from the installer's EFI partition to the internal disk's EFI partition. This is needed to boot from the internal disk. You can use EFI Agent to easily mount EFI partition.

Finally make sure sleep works properly. You can skip some of these but it will make your machine wake up from time to time. Same as real Macs.

sudo pmset standby 0
sudo pmset autopoweroff 0 
sudo pmset proximitywake 0
sudo pmset powernap 0 
sudo pmset tcpkeepalive 0
sudo pmset womp 0
sudo pmset hibernatemode 0

The first two need to be 0 the rest can be left on if you want.

  • Proximity wake can wake your machine when an iDevice is near
  • Power Nap will wake up the system from time to time to check mail, make Time Machine backups, etc, etc
  • TCP keep alive has resolved periodic wake events after setting up iCloud
  • Womp is wake on lan, which is disabled in the BIOS as it (going by other people's experience) might cause issues. I never use WOL, if you do use WOL please try enabling it in the BIOS and leave this setting on, the issues might have been due to bugs that haven been solved by now. Let me know if it works or not.
  • Hibernate is sometimes set to 3 in my testing. It could be possible to get hibernation to work by using HibernationFixup but I haven't tested it. I'm fine with normal sleep.

With hibernation disabled you can delete the sleepimage file and create an empty folder in its place so macOS can't create it again, this saves some space and is optional.

sudo rm /var/vm/sleepimage
sudo mkdir /var/vm/sleepimage

That's all!

Tip: Once everything works and you installed and configured all your stuff, create a bootable clone of your system with a trial version of Carbon Copy Cloner or Superduper!. Don't forget to copy your EFI folder to the clone's EFI partition. First time? Follow my little guide here.

Big Sur

  • Big Sur needs its own version of Airportitlwm, download the kext here and put it in the kext folder replacing the other one
  • When you see Forcing CS_RUNTIME for entitlement displayed macOS did not hang; its sealing the filesystem, do not reboot!
  • To fully disable SIP you need to change csr-active-config to FF0F0000 in the config, in order to remove the express card icon SIP needs to be disabled!
  • Error 66 when trying to mount / in read/write mode and/or errors about diskXs5s1 when booting, this is due to apfs snapshots;

Boot into recovery and open a terminal then list the snapshots with diskutil apfs listSnapshots diskXs5 and delete them with diskutil apfs deleteSnapshot diskXs5 -uuid UUIDHERE.

Replace diskX with the correct disk, if you only have one disk it will be disk1s5. The UUID is the string above each snapshot.

As of 11.1 the above no longer seems to work. Will update when I find a method that works and isn't overtly complicated.

The current EFI will work on all versions of Big Sur including 11.3 beta builds. alt text

Updating

Updating is easy, first copy the MLB/ROM/SystemSerialNumber/SystemUUID values from your current config to a text file then delete the whole EFI folder and replace it with the latest release/clone from this repo. Copy your PlatformInfo fields from the text file into the new config. Unless you made other changes this is all thats needed. If you patched the Thunderbolt firmware you'll also need to set SSDT-TbtOnPCH-POST.aml (7) to true and SSDT-TbtOnPCH-PREP.aml (8) to false.

Thunderbolt

Should work as long as Thunderbolt security is set to legacy mode. Thanks to crp724 for confirming. He also confirmed eGPU works in his Mantiz TB3 enclosure. I assume that if eGPU works then all other Thunderbolt stuff works as well.

In order for Thunderbolt hotplugging to work you will need to modify the firmware.

Apple/3rd party bluetooth and wifi

For both 1st and 3rd party you will need a supported wifi/bluetooth combo card and an adapter (see below) to convert it to M key. As far as I know compatible M key combo cards don't exist.

3rd party cards will need these kexts: AirportBrcmFixup + BrcmPatchRAM, read the instructions on the repo's and you'll be up and running in no time. I've tested the very affordable DW1820A in many machines including the NUC and it works great. For some cards you may need to create an entry under devices in the config that disables ASPM, this only needed if you have issues with sleep.

1st party is my preferred option. Grab an Apple 6+12 pin to m.2 M-key converter card and go native with something like the BCM94360CS2. Please note the number of antenna connectors. Some have more than 2, so you'll have to add some antenna's and maybe even mod your case. Though there is some room under the plastic lid, it can fit internal antennas like this. The lid can be removed with some strategic force and there's a hole to route the wires trough too. I would use those and leave the standard antenna's connected to the Intel module. They're very cheap and the antenna connectors on the Intel module are very fragile.

One big plus of going native is that you gain HID-proxy. This means that when there is no OS running the Airport card will proxy any paired HID bluetooth devices to the machine as usb devices. This means you can enter the BIOS or boot menu using the bluetooth keyboard and mouse. This is not a feature you will find on many other cards, including the the one Intel put in here. Even expensive bluetooth cards often can not do this. But Apple has added it even in the cheap BCM943224PCIEBT2 Airport card. I've personally tested that card and it still works fine in Catalina and Big Sur by setting Kernel -> Patch -> 0 to true. Big Sur will also need a patched IO80211.kext. See my comment here for more info on Big Sur and this card.

Some sellers on AliExpress have converter cards that already have the small 1.25mm pitch jst connector on it. It connects to one of the two internal usb ports. I use one without issues in my NUC. They usually list them as NUC8 compatible and cost a bit more than other converter cards.

Those other cards (and 3rd party ones) do not come with this connector so you'd have to make your own. My cheaper eBay card came with a cable with standard internal usb header and a cable without any plugs so you can attach your own. Check the listing carefully before ordering. Also make sure it converts to M key and once you have it that the spacing pillar is in the correct position. Don't short the poor Airport out.

  • The two internal usb ports are already mapped in the USBPorts.kext, if you made your own map you'll need to make a new map if you use the internal usb headers
  • When using a 1st or 3rd party combo card you need to disable both bluetooth and wifi in the BIOS and also remove any Intel related bluetooth and wifi kexts
  • You will also need to remove the config block for HS10 from Info.plist inside USBPorts.kext, without this step bluetooth won't work after sleep. On 1st party cards it gets "stuck" in HID-proxy mode; bluetooth mouse and keyboard may still work but not optimally and laggy.

You'll also want to set your region to #a as it allows for full 80mhz channel width on ac cards. It might not be 100% legal depending on where you live. I've used this method on a few DW1820A cards and the speed increase was pretty amazing. This method may also apply when using real Apple cards, you will need add AirportBrcmFixup on 1st party cards. To change the region simply add the following boot flag brcmfx-country=#a.

One last thing to remember is that waking the machine from sleep using bluetooth devices will not work. This is due to power being cut to the module. The module does start itself up very fast. By the time my screen wakes up my bluetooth devices are already reconnected. There is way to bypass this but it includes either modding your adapter card or making your own. I've asked some sellers on AliExpress to produce this card but didn't have any luck. If you can make it or know a seller who's willing to make it please let me know.

Intel bluetooth and wifi

  • Wifi works and can be managed using native tools, speeds are still slow but connections are stable
  • Bluetooth works for HID devices such as mouse, keyboard and audio stuff but connections are flaky. It may also not wake up from sleep properly

Natively supported bluetooth dongle

I often use these cheap dongles from eBay that work in macOS out of the box. When going this route don't forget to disable the Intel bluetooth kexts in the config and also disable bluetooth in the BIOS when using a dongle. You will also need to map the port it connects to as internal else sleep will be dodgy. You can do this easily by setting the port type to 255 in the USBPorts.kext info.plist file. You can find the port identifier (example HS03) with Hackintool. Because power isn't cut when entering sleep you can wake the machine up with bluetooth devices.

Not working/untested

  • Card reader (sort of works with v2.3-beta2 of this kext)
  • IR receiver (it shows up in ioreg but no idea how to make macOS use it like on some MBP)
  • Handoff/AirDrop are not supported (yet) on Intel chips Should work now, untested by me
  • 4K might need some additional parameters and a new portmap 4K confirmed working. Thanks again to crp724
  • You tell me!

Undervolting

Undervolting is a great way to to maximise performance, lower power consumption and reduce temperatures. The amount of undervolting you can apply depends on your luck in the silicon lottery. You'll have to lower the voltage step by step and test stability with stress-ng, Prime95 or other tools like it.

Please read this page for an explanation of all the options and what they do, I'm only focusing on the basics here. Also heed the warning displayed but realise this warning doesn't really apply when undervolting, but this tool can also do overvolting which could indeed be dangerous. The worst thing that can happen when undervolting is data loss due to system freeze. So only do this after making a backup.

Installation is easy, I've compiled a version that will load from EFI so there's no need to disable SIP or allow loading of unsigned kexts. Simply download this and place the kext file inside the kext folder of OpenCore in your EFI and place the voltageshift binary file in your home directory or somewhere else where it is not in your way. Don't forget to add to the kext to your config file too. Using ProperTree's snapshot function makes it easy to do this quickly. Once this is done reboot and verify the kext is loaded by running kextstat | grep VoltageShift in a terminal.

Once you confirmed the kext is loaded you can start undervolting. In the terminal go to the folder where you placed the voltageshift binary and run the following command ./voltageshift info if all is well it will return the current configuration, in my case;

[email protected] ~ % ./voltageshift info
------------------------------------------------------
   VoltageShift Info Tool
------------------------------------------------------
CPU voltage offset: 0mv
GPU voltage offset: 0mv
CPU Cache voltage offset: 0mv
System Agency offset: 0mv
Analogy I/O: 0mv
OC mailbox cmd failed
Digital I/O: 0mv
CPU BaseFreq: 2300, CPU MaxFreq(1/2/4): 3800/3800/3600 (mhz)  PL1: 35W PL2: 65W 
CPU Freq: 0.8ghz, Voltage: 0.6144v, Power:pkg 3.53w /core 0.80w,Temp: 94 c

Take note of your PL1 and PL2 numbers. Close all open apps and start out with only applying some light undervolting to CPU and CPU Cache by running ./voltageshift offset -25 0 -25 and you'll see a message like this;

[email protected] ~ % ./voltageshift offset -25 0 -25                                       
--------------------------------------------------------------------------
VoltageShift offset Tool
--------------------------------------------------------------------------
Before CPU voltageoffset: 0mv
Before GPU voltageoffset: 0mv
Before CPU Cache: 0mv
--------------------------------------------------------------------------
After CPU voltageoffset: -25mv
After GPU voltageoffset: 0mv
After CPU Cache: -25mv
--------------------------------------------------------------------------

Now run a stress test for 5-10 minutes and if it doesn't freeze you can try to go lower. Repeat this until the system freezes and then use the last voltage that didn't cause a freeze. In my testing I've found that applying an undervolt of -75 to -125 on the CPU/CPU Cache works fine, but it will differ on every system. If you don't want to spend time finding the perfect numbers you can apply -50 for both, it should be stable and still help a bit. Once you found the perfect offset you can have this apply at boot by running; sudo ./voltageshift buildlaunchd -75 0 -75 0 0 0 1 35 65 0 120.

Please note that the util will exit with an error, this is normal as we modified it to run from EFI. It will execute some commands that fail which causes it to display an error. To verify the launch deamon has been created you can check if it exits:

[email protected] ~ % file /Library/LaunchDaemons/com.sicreative.VoltageShift.plist
/Library/LaunchDaemons/com.sicreative.VoltageShift.plist: XML document text, ASCII text, with very long lines

You will need to change -75/-75 to your magic numbers and change 35/65 to whatever PL1/PL2 values were when running the info command. PL1/PL2 values change depending on BIOS settings. I've changed mine in the BIOS to 35/65 since my cooling solution is better than stock. Lowering it below 28watts may decrease temps but also performance. The tdp of the i5 is 28 watts according to Intel and I think the stock values are 30/50. This setting regulates the amount of power the NUC is allowed to consume when running normally and in turbo mode. Change 120 to whatever interval you wish to have the script check if undervoltage has been applied. Sleep can reset the settings, with it set to 120 minutes you'll be without an undervolt after waking from sleep for a max of 2 hours. Change to your liking or set to 0 to disable. Refer to the documentation for an explanation about every single option. For example the 1 is to keep turbo enabled. A zero means the offset isn't changed.

If you want your stock cooled NUC to be more silent with a little performance penalty you can disable turbo and set PL1/PL2 both to 28 watts. This will result in a much cooler and quieter machine but with some performance loss. With these setting and a custom fan curve you can get your NUC to be silent pretty much all the time unless you really push it. It can pay off to play around with these to find the perfect balance between noise and performance.

There are a lot more things you can do but as a start just undervolting CPU/CPU Cache is enough. In my testing undervolting GPU didn't make any difference but maybe on yours it does help. Experiment and see what works best for you.

Please share your undervolting results here.

Tip: Use Intel Power Gadet and/or HWMonitor to check current voltages and temperatures.

Performance, power and noise

While benchmarks don't really represent real life it can be handy when testing. In my tests undervolting didn't have any impact on Geekbench results scores. But using CPUFriend can have some impact on (immediate) performance depending on which power profile you select.

  • Without CPUFriend: ~915 / ~4000
  • With CPUFriend:
    • Performance: same as without
    • Balanced performance: same as without
    • Balanced power savings: ~875 / ~3800
    • Maximum power savings: ~715 / ~3300

The default kexts provided give you the best performance and still lowers the lowest clock speed to 800mhz. Which lowers heat and power consumption a bit. I didn't notice any difference between the performance and balanced performance profiles but I only ran some quick tests. It is pretty easy to create your own profile or disable both CPUFriend kexts in the config.

Noise

In order to reduce noise I've setup a custom fan profile, disabled the option that the fan can be turned off and set a 25% duty cycle for both CPU and RAM. The idle temps are slightly higher but the noise is a lot less. I've also limited the sustained tdp to 28 watts to match the CPU itself. The peak tdp has been left to its default of 50 watts. With CPUFriend I've set the lowest frequency to 800mhz and a applied a mild undervolt of -50 on the CPU and CPU cache and -25 on the iGPU. A duty cycle of 21 or lower gives me a silent computer but its not ideal to run the fans lower than 25%.

Note: No longer using a fan, passive cooling ftw!

Passive cooling

Received my Akasa case. To my surprise it does a better job than the stock cooler. It's not cheap and the case is not finished very smoothly (it can hurt you lol). I have mine vertically and didn't use any of the end cheeks, only the feet. It would just introduce more options to hurt myself ;-)

It works really well. So good I have set the power setting in the BIOS to max performance. It idles around 35-40c (with undervolt) which is just fine considering my ambient temperature is around 25c. When put under load it doesn't get anywhere near 80c. I've ran the matrix test from stress-ng for a while and it stayed stable around 70c the whole test.

My only complaint is the rough finish. I wish they would've skipped on those cheeks and spend the money saved on a smooth finish, but thats besides the point of this thing. The silence is worth the occasional scratch.

Todo

  • Get rid of FakePCIID.kext and do what it does with a config entry or ACPI patch, feel free to contribute here

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].