Jump to content

[Guide] Mac OSX 10.12 and 10.13 with X99 Broadwell-E family and Haswell-E family


nmano
 Share

1,954 posts in this topic

Recommended Posts

Hey fellas did the patches change with 10.12.4 update?

I don't think any config.plist patches need to be changed. From what I saw, Fergarth's EFI hasn't changed much since 10.12.3 (more so reduction than addition, at least from what he's been posting).

 

The unknowns would be whether or not Apple included more native support for newer processors (which is unlikely). I'm personally holding off a few weeks before upgrading. Give 10.12.4 some time to work out some kinks.

  • Like 2
Link to comment
Share on other sites

Hi Balamut

you have to update clover to a latest version if you are using 3xxx version in 10.12.2 or 10.12.3

Got it.

 

We should put the patches with explanation next to somewhere. Might be useful for some so they won't have to hunt then down on the forum.

 

Just my 2c

Link to comment
Share on other sites

Got it.

 

We should put the patches with explanation next to somewhere. Might be useful for some so they won't have to hunt then down on the forum.

 

Just my 2c

For my config with Bios unlocked, these are enough! But you have different hardware, I do not know...

http://www.insanelymac.com/forum/topic/313296-guide-mac-osx-1012-with-x99-broadwell-e-family-and-haswell-e-family/?p=2390363

Link to comment
Share on other sites

 

See iMac17,1 too, its a new

SSDT 5

 

in my DSDT i apply it, mobo GIGABYTE Z170X-UD5TH

Device (DSB0)
                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Device (NHI0)
                        {
                            Name (_ADR, Zero)  // _ADR: Address
                            Name (_STR, Unicode ("Thunderbolt"))  // _STR: Description String
                            Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
                            {
                                Return (Zero)
                            }
                        }
                    }

                    Device (DSB1)
                    {
                        Name (_ADR, 0x00010000)  // _ADR: Address
                        Name (_SUN, 0x02)  // _SUN: Slot User Number
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }

                            Return (Package (0x06)
                            {
                                "AAPL,slot-name", 
                                "PCI Slot 2", 
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 

                                "name", 
                                "pci-bridge"
                            })
                        }
                    }

                    Device (DSB2)
                    {
                        Name (_ADR, 0x00020000)  // _ADR: Address
                        Name (_SUN, 0x03)  // _SUN: Slot User Number
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }

                            Return (Package (0x06)
                            {
                                "AAPL,slot-name", 
                                "PCI Slot 3", 
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 

                                "name", 
                                "pci-bridge"
                            })
                        }
                    }

                    Device (DSB4)
                    {
                        Name (_ADR, 0x00040000)  // _ADR: Address
                        Name (_SUN, 0x04)  // _SUN: Slot User Number
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }

                            Return (Package (0x06)
                            {
                                "AAPL,slot-name", 
                                "PCI Slot 4", 
                                "built-in", 
                                Buffer (One)
                                {
                                     0x00                                           
                                }, 

                                "name", 
                                "pci-bridge"
                            })
                        }
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        If (OSDW ())
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }

                            Return (Package (0x02)
                            {
                                "PCI-Thunderbolt", 
                                One
                            })
                        }
                    }

                    Return (Zero)
                }
... 

 

Thanks!

 

I will try this out tonight.

Link to comment
Share on other sites

i understand, but is it possible to add this as an single SSDT file? Not that into DSDT/SSDT edits, so can anyone help me out? :)

 

Attached my ioreg dump.

Post your clover folder.

Link to comment
Share on other sites

Here ;)

Let's try this and see if this works... (I doubt it'll work, but worth a shot). Post an IOReg when you've loaded it up.

 

Also, I redid your GPU injection because the old way is just... yeah... no.

 

Also... I highly recommend you run my ssdtGen tool (if you do, then remove dsdt.aml + ssdt-gfx1.aml -- the other ssdts can stay in there)

I think I messed up on the Thunderbolt SSDT. Try the SSDT inside SSDT-BR1B.aml.zip if the one I've provided in the "patched.zip" doesn't work...

Link to comment
Share on other sites

ssdtGen updated to 0.0.4beta

ssdtGen changelog 0.0.4b:
✓ Unfound device properties no longer kill entire script
✓ Added and trimmed down user choice commands (see below)
✓ Updated help instructions to reflect new commands

0.0.4 Script Commands:

-ba (will attempt to build all SSDTs)
-b NAME (will attempt to build a single SSDT)
-d (will attempt to build all SSDTS while generating a debug_output.txt file)
-h (will display help instructions)
-e (will exit the script)

Should be good for awhile... unless someone finds something script breaking.

Link to comment
Share on other sites

Let's try this and see if this works... (I doubt it'll work, but worth a shot). Post an IOReg when you've loaded it up.

 

Also, I redid your GPU injection because the old way is just... yeah... no.

 

Also... I highly recommend you run my ssdtGen tool (if you do, then remove dsdt.aml + ssdt-gfx1.aml -- the other ssdts can stay in there)

I think I messed up on the Thunderbolt SSDT. Try the SSDT inside SSDT-BR1B.aml.zip if the one I've provided in the "patched.zip" doesn't work...

 

Hello.

 

Your GFX injection not work. Black screen. So i use my old one, works fine for me. The Thunderbolt SSDT is not working. Uploading a ioreg later :)

Link to comment
Share on other sites

Hello.

 

Your GFX injection not work. Black screen. So i use my old one, works fine for me. The Thunderbolt SSDT is not working. Uploading a ioreg later :)

Hmmm, strange. The GPU injection should have worked. I'll have to see your IOReg.

 

In the meantime, I've done some edits. Try the attached GFX1.aml below first, and if that doesn't work, then try attached BR3A.aml below (test each with the DSDT.aml from "patched.zip").

SSDT-BR3A.aml.zip

SSDT-GFX1.aml.zip

  • Like 2
Link to comment
Share on other sites

@mfc88

LPC isn't a part of CPU power management (L158), for more details, check here.

BTW. As for the y/n selection starts at L171, if you really want to divide into 3 status (y || n || unsupported), then an endless loop should be introduced I guess, that is

    while true; do
      read -p "Would you like to reload the script now? (y/n)? " choice
      case "$choice" in
        y|Y )
          main
          break  # supported key, break;
        ;;

        n|N )
          echo ''
          _clean_up  
          break  # supported key, break;
        ;;

        * )
          printf "${bold}*—-ERROR—-*${normal} That was not a valid option, please try again!\n"
        ;;
      esac
  done
  • Like 2
Link to comment
Share on other sites

Low Pin Count is necessary for AICPUPM, X86plat no

if u use a old hardware without LPC the temp is high

Core2duo, core2quad LPC is a mandatory

But until today nobody could explain  :w00t::lol:

Link to comment
Share on other sites

 

@mfc88

LPC isn't a part of CPU power management (L158), for more details, check here.

BTW. As for the y/n selection starts at L171, if you really want to divide into 3 status (y || n || unsupported), then an endless loop should be introduced I guess, that is

    while true; do
      read -p "Would you like to reload the script now? (y/n)? " choice
      case "$choice" in
        y|Y )
          main
          break  # supported key, break;
        ;;

        n|N )
          echo ''
          _clean_up  
          break  # supported key, break;
        ;;

        * )
          printf "${bold}*—-ERROR—-*${normal} That was not a valid option, please try again!\n"
        ;;
      esac
  done

Thanks for the heads up.

 

✓ Fixed LPC0 description

✓ Fixed ALZA's ssdt build mistake

✓ Added loop to help instructions

✓ Added DTGP structure (not implemented yet)

 

Depending on Jacoweb's results, I may add support for injection w/ DTGP.

Link to comment
Share on other sites

Thanks for the heads up.

 

✓ Fixed LPC0 description

✓ Fixed ALZA's ssdt build mistake

✓ Added loop to help instructions

✓ Added DTGP structure (not implemented yet)

 

Depending on Jacoweb's results, I may add support for injection w/ DTGP.

IMHO DTGP is now obsolete. Returning to your device properties directly will just simply get rid of it. Also. I think tiny SSDTs are also designed to deprecate DTGP Method.

Link to comment
Share on other sites

Here's my EFI folder for any random lurkers/registered (intermediate/advanced) users who share the same setup as me and who want a starting point for their Asus PRO 3.1 USB board running 10.12.4!
  
************************************************
*            Important Updates:                                         *
************************************************


Update 4/19 @ 8:00PM: I've now moved away from a fakeCPUID and now I'm using Clover XCPM patches to set Mac OS with the correct CPU ID. Therefore, I've uploaded a new folder to reflect these changes.

 

************************************************
 
 ***If you run anything higher than 10.12.4, the patches inside the "Kernel and Kext Patches" config.plist may not work. 
 
What this EFI folder currently has:
-  Should automatically boot into your default volume (if it's named "Mac OS") after a 3-second countdown when at the Clover screen; if not, edit the config.plist with Clover Configurator-> under Boot tab -> under Default Boot Volume, type the name of your harddrive with OS installed, save and restart
-  Generated CPU PM SSDT (speed step/power management) for a Mac Pro 6,1 SMBIOS with injected 17,1 frequency vectors for an i7 6950x***
-  Generated SSDTs for ALZA, EVSS, GFX1, GLAN, HECI, LPC0, NVME (NVMe-Pcc), SAT1, SMBS, UIAC, XHC, and XOSI (Click here for SSDT notes)***

-  IntelMausiEthernet for internet
-  OsxAptioFixDrv.efi (not from Clover, but from a modified 20000MB free OsxAptioFixDrv-64.efi)
-  Supports:

  • Bluetooth devices (100% functional!)
  • Video and Audio over HDMI/DisplayPort
  • USB 2.0, 3.0 and 3.1 ports all functional
  • Wifi 2.4ghz/5ghz
  • Sleep (partially broken -- works for power nap, but not for manually putting to sleep (no video signal on wake) -- recommended not use it)

Other Setup:
3505 Patched BIOS  -- use at your own risk -- if you decide to use these BIOS via Asus Flashback, rename the file to the following before placing it on a USB stick: X99PU31.CAP
 
My BIOS Setup:
- Under Advanced:
/USB Configuration:

  • Intel XHCI Mode - Enable
  • EHCI Legacy Support - Disabled
  • XHCI Hand-off - Disabled
  • EHCI Hand-off - Disabled

/On-board Devices:

  • Serial Ports - Off

- In Ai Tweaker:

  • AI Overclock Tuner - Auto (just make sure your CPU is set to: Sync All Cores, otherwise, you may different turbo boosts for each core)
  • Internal CPU Power Management (EIST) - Enabled (depends on your system and config.plist CPU patches whether or not you want to enable/disable)

-In Boot 
/ Secure Boot:

  • Os Type - Other OS

/ CSM:

  • Enabled
  • UEFI and legacy only (rest of options)

************************************************
*                           Special Notes:                                   *
************************************************

This EFI has SSDTs to work with my board AND my case. If you want to create your own to match your own specs, then you can use my:  ssdtGen(beta)

 

- :excl:  All the kexts you find in EFI->Clover->kexts->Other are placed in my "/System/Library/Extensions" folder. You don't have to have all of them in S/L/E, however, some of the kexts need to be placed there to work correctly: AppleHDA_ALC1150.kext, BrcmFirmwareData.kext, and BrcmPatchRAM2.kext.  :excl: 

 

You can use Kext Utility to install kexts to S/L/E.


- SSDTs very specific to my setup:
* SSDT-NVME.aml // NVME SSD (SM 950 Pro)

* SSDT-GFX1.aml // Graphics and HDMI Audio (GTX Titan X)
* SSDT-UIAC.aml // USB Port Injection 
* SSDT.aml // 6950x CPU PM

 

-Kexts very specific to my setup:

* VoodooTSCSync.kext (if you don't have a 6950x, then you'll need to edit the kext, by right clicking on the kext->"Show Package Contents"->"Contents"->Info.plist => Open the plist with an editor (I use Atom Editor) and look for:

<key>IOCPUNumber</key>
<integer>19</integer>

 Change the integer to your CPU cores minus 1 then save plist. So, 6950x === 10 physical cores plus 10 virtual cores minus 1 core => 19 

 

- If you're using a Corsair H100i GTX AIO cooler (or similar Corsair AIO cooler) that connects to an internal USB device, it will prevent your system from sleeping unless you have proper USB injection and USB power options! I recommend you either unplug the USB cable portion or create your own SSDT-UIAC.aml+SSDT-XHC.aml!
 
- If you plan on using a NVMe to install 10.12.4 on, then follow my guide on how to generate a spoofed HackrNVMeFamily.kext  (the SSDT provided in the EFI below contains support for a Samsung 950 Pro located at _SB.PCI0.BR1B.H000 -- if you don't want it, remove SSDT-BR1B.aml from CLOVER->ACPI->patched and HackrNVMeFamily-10_12_4.kext from CLOVER->kexts->Other ).
 
In order to get Wifi to work, you'll need to use the AirPortBrcm4360 patches inside this EFI config.plist and the patched FakeSMC.kext.
 
- If you're not using a 6950x, you'll have to generate your own SSDT:
1. Configure system with appropriate MAC 6,1 SMBIOS(should already be set up if you use either of my EFI folders).

2. Open Terminal and download Piker Alpha's ssdtPRGen.sh

curl -o ~/ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/Beta/ssdtPRGen.sh

3. That will download ssdtPRGen.sh to your user directory. The next step is to change the file mode (+x) with:

chmod +x ~/ssdtPRGen.sh

4. For default SSDT generation with xcpm enabled, type:

sudo ~/ssdtPRGen.sh -x 1

Find the file in: ~/Library/ssdtPRGen/ (you want the SSDT.aml) and then copy/paste it in EFI->CLOVER->ACPI->patched.
 
- When 10.12.4 is installed, you may not have any frequency vectors loaded for proper CPU steppings, you can run this command to check:

sysctl -n machdep.xcpm.vectors_loaded_count

 If it comes back as 0, then you'll need to use Pike's FrequencyVectors.sh. You can use this list to determine which SMBIOS version will be the best suited for your particular CPU.

 

- In my config.plist, there are several XCPM patches. You may need none, some, or all. You have to determine which ones you'll need through trial and error -- run my AppleIntelInfo.kext Loader and follow my Checking for XCPM properties and FrequencyVectors guide as well as running Geekbench tests.

************************************************

X99-PRO-USB31-ASUS-3505.CAP.patched.zip

20000_OsxAptioFixDrv-64.efi.zip

EFI-ASUS-PRO-USB31-10.12.4_FIXDRV-20000MB.zip

  • Like 4
Link to comment
Share on other sites

Good job mfc! Better than this is impossible. In the morning I will adjust to my processor and test. Then I say something

No need to adjust if your CPU is fine. I just needed MSR patches for my CPU to not KP.

 

Howweevvveerrr... if you could do me a huge favor... and temporarily remove your DSDT.aml (leave everything else alone), boot into OS, run my ssdtGen tool with the -d flag and then provide me in a zipped folder: ssdtGen's generated SSDTs, the debug_output.txt, and an IOReg, then that'd be hugely appreciated.

 

I need some test results to see if the script works for other users.

Link to comment
Share on other sites

No need to adjust if your CPU is fine. I just needed MSR patches for my CPU to not KP.

 

Howweevvveerrr... if you could do me a huge favor... and temporarily remove your DSDT.aml (leave everything else alone), boot into OS, run my ssdtGen tool with the -d flag and then provide me in a zipped folder: ssdtGen's generated SSDTs, the debug_output.txt, and an IOReg, then that'd be hugely appreciated.

 

I need some test results to see if the script works for other users.

Trying but do not pass this and I do not know why :blush:

Now I did not have time, but soon, I'll try with your EFI with your respective settings on the bios and see how it behaves.

post-1313347-0-41889100-1490974836_thumb.png

Link to comment
Share on other sites

Trying but do not pass this and I do not know why :blush:

Now I did not have time, but soon, I'll try with your EFI with your respective settings on the bios and see how it behaves.

Wasn't your fault. Looks like there's something funky going on with "curl -o" and saving it to the desktop.

 

Here's a fix...

 

You can download the latest version of ssdtGen to your Desktop by entering the following command in a terminal window:

cd ~/Desktop && curl -O -L https://raw.githubusercontent.com/mattcarlotta/ssdtGen/master/ssdtGen.sh

You can then verify the downloaded size (should be about 34kb):

wc -c ssdtGen.sh

You must change the file permissions to make it executable:

chmod +x ssdtGen.sh

Lastly, use this command to run the script:

~/Desktop/ssdtGen.sh
  • Like 1
Link to comment
Share on other sites

Hello.

 

Your GFX injection not work. Black screen. So i use my old one, works fine for me. The Thunderbolt SSDT is not working. Uploading a ioreg later :)

Try this Thunderbolt SSDT...

Link to comment
Share on other sites

Hi mfc,

I already tested my system with your EFI with Bios configurations according to yours, my SSDT PM, plist edited acording my CPU and the result was that there was no sound onboard, no XCPM, no USB 2.0 and only with some PCI Divices in About This Mac.
At this point I have already upgraded to 12.5 beta and with my fat DSDT everything still works perfectly.
By the way, the latest NV web driver works with full acceleration in Sierra 12.5 Beta, as long as we change the NV startup web plist.

post-1313347-0-24112900-1491069583_thumb.png

post-1313347-0-28995900-1491069591_thumb.png

post-1313347-0-86665000-1491069595_thumb.png

post-1313347-0-09889600-1491069601_thumb.png

Link to comment
Share on other sites

 Share

×
×
  • Create New...