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

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.

You still haven't provided me with what I've asked for.

 

Can't help you. 

Link to comment
Share on other sites

@mfc88. Great work on all the ssdt patches. I'm using an X99P-SLI and tried your Thunderbolt ssdt above, but it didn't work. Here's the section from ioreg for BR1B with the ssdt loaded.

 

Additionally, on wake from sleep, there's a slew of USB errors from the 3.1 port and I've seen some discussion of this on Piker's blog, but haven't seen any fixes. 

 

Any ideas?

 

 

 

Thx

post-206515-0-16619000-1491139273_thumb.jpg

post-206515-0-08827200-1491139680_thumb.png

Link to comment
Share on other sites

@mfc88. Great work on all the ssdt patches. I'm using an X99P-SLI and tried your Thunderbolt ssdt above, but it didn't work. Here's the section from ioreg for BR1B with the ssdt loaded.

 

Additionally, on wake from sleep, there's a slew of USB errors from the 3.1 port and I've seen some discussion of this on Piker's blog, but haven't seen any fixes. 

 

Any ideas?

 

 

 

Thx

Bah... I'm a idiot. I see the problem. I put HOOO instead of H000... Let's try this...

 

(post another IOReg with the SSDT loaded)

 

As for USB 3.1 errors, no idea. I don't use sleep. Try using power nap instead (OS goes to sleep after X amount minutes of inactivity).

 

The only thing I can see that may cause issues is the fact that they're missing power options. Otherwise, they're natively supported by the OS.

Link to comment
Share on other sites

Ok, here's the updated ioreg screenshot. Thanks for the quick response.

 

Regarding the lack of power options on the USB 3.1 port/Thunderbolt, I read that Apple calls _PS0 and _PS3, but just haven't got into ACPI development enough to understand how to add these.

post-206515-0-61594400-1491152035_thumb.png

Link to comment
Share on other sites

Ok, here's the updated ioreg screenshot. Thanks for the quick response.

 

Regarding the lack of power options on the USB 3.1 port/Thunderbolt, I read that Apple calls _PS0 and _PS3, but just haven't got into ACPI development enough to understand how to add these.

Well, it actually worked as far as SSDT injection! However, I don't like the structure when compared to my Mac Pro 10,1 Thunderbolt layout...

 

Does it show the Thunderbolt BUS in system info? 

 

Unfortunately, I don't know enough about USB ports to know. I'd need to see an official mac DSDT/SSDTs and see how they handle 3.1 ports. Otherwise, I recommend to either disable 3.1 ports via BIOS or not use sleep.

Link to comment
Share on other sites

I'm guessing then that this SSDT was purely cosmetic, as it doesn't appear to have any effect. Regarding System Info, under the PCI section I get:

This computer doesn't contain any PCI cards or devices. If you installed or connected, a PCI card or device, make sure they’re properly installed.

Link to comment
Share on other sites

I'm guessing then that this SSDT was purely cosmetic, as it doesn't appear to have any effect. Regarding System Info, under the PCI section I get:

This computer doesn't contain any PCI cards or devices. If you installed or connected, a PCI card or device, make sure they’re properly installed.

It won't show up as a PCI device (doesn't show up in Mac Pro 10,1 either). Instead, you should see this under "Thunderbolt"...

 

T2kqDdG.png

  • Like 1
Link to comment
Share on other sites

RP05/PXSX(rename to UPSB/DSB0...

 

Device (DSB0)

                    {
                        Name (_ADR, Zero)  // _ADR: Address
                        Device (NHI0)
                        {
                            Name (_ADR, Zero)  // _ADR: Address
                            ...
                        }
                    }

 

inject into pci-bridge correct adr

Check

MaLd0n 2017-04-02 às 15.29.34.png

e.g

DSB4@60000 --> 0x00060000

 

Create a device with correct adr and check ioreg

 

 

Device (DSB4)

                    {
                        Name (_ADR, 0x00060000)  // _ADR: Address

                    }

 

sincerely, no difference! ;)
i think u can try solved hot plug instead cosmetics, good result, effective
  • Like 1
Link to comment
Share on other sites

It won't show up as a PCI device (doesn't show up in Mac Pro 10,1 either). Instead, you should see this under "Thunderbolt"...

 

T2kqDdG.png

 

 

Aha, unfortunately no..   Thunderbolt: No drivers are loaded.

Link to comment
Share on other sites

Hi friends,

From what I've seen, it's happened to more people. The latest Nvidia drivers, since the 12.4 Final and now also in 12.5 Beta has a strange behavior. Whenever I turn on the computer, OSX drivers are always selected by default and not NV. Then I change to the NV driver, restart and it is ok. But if I turn off the computer, the next time I turn it on, it gives black screen and only with nv_disable I can open it. Something has changed because I have not changed anything in my fat DSDT or in my plist...

Link to comment
Share on other sites

You still haven't provided me with what I've asked for.

 

Can't help you.

Hi mfc, i apologize for the delay, here is what you asked me. I removed my DSDT, restarted and ran your command. With SSDTs generated, I get no sound at all, no pci devices and with black screen. Don't know if you need my EFI. If needed please tell me.

Thanks and good work.

Fernando’s Mac Pro.zip

Link to comment
Share on other sites

Hi mfc, i apologize for the delay, here is what you asked me. I removed my DSDT, restarted and ran your command. With SSDTs generated, I get no sound at all, no pci devices and with black screen. Don't know if you need my EFI. If needed please tell me.

Thanks and good work.

Quite a bit of mistakes from my ssdtGen. Give a me a few minutes to rewrite some programming errors.

  • Like 1
Link to comment
Share on other sites

Hi mfc, i apologize for the delay, here is what you asked me. I removed my DSDT, restarted and ran your command. With SSDTs generated, I get no sound at all, no pci devices and with black screen. Don't know if you need my EFI. If needed please tell me.

Thanks and good work.

Okkkayyy... 

 

So:

- In IOReg, some device and compatible ids are incorrect (HECI and LPC0) - so I've hardcoded in correct ids for x99 systems 

 

Unfortunately, my script is grabbing two device ids for the GPU:

device-id <02 A8 00 00>

device-id <C2 17 00 00>

 

Update: Tracked down the issue to having multiple H000 devices, where both device-ids populated the IOReg H000 device-id lookup. Now, I've created a more refined search by parent device (BR3A) with a search string of "attached-gpu-control-path", therefore reducing the IOReg search result to BR3A@H000 instead of returning: XXXX@H000 + BR3A@H000. 

 

Before:

<02 A8 00 00>

<C2 17 00 00>

 

Now should be:

<C2 17 00 00>

 

I've since updated ssdtGen to 0.0.6beta.

ssdtGen changelog 0.0.6b:
✓ Fixed some SSDT build mistakes, where the same device was being injected and then subsequently set to 0
✓ Hardcoded compatible-ids/device-ids for HECI and LPC0
✓ Fixed GPU device-id IOReg search to return 1 result, instead of 2:
1 result:
device-id <C2 17 00 00>

2 results:
device-id <02 A8 00 00>
device-id <C2 17 00 00>

✓ Fixed compatible-id IOReg search to return 1 result, instead of 3:
1 result:
"compatible" - "pci8086,8d3a" 

3 results:
"compatible" - "pci1043,8600,pci8086,8d3a,pciclass,078000,"

@Fergarth - Your GPU may be displaying the wrong device-id in your ACPI tables. Either the motherboard is returning an incorrect value or perhaps the GPU? You can check if the value is correct by doing this (with or without a DSDT/SSDTs in "patched", it shouldn't matter because it should return the correct ID regardless)...

 

At Clover Boot Manager screen, go to "Options":

4CszC4K.png

 

Click, "Graphics Injector":

4T3DT2G.png

 

Then, look at "Card DeviceID" (yours should be 17C8):

FdRMU2H.png

 

If it shows the correct ID, then download and run ssdtGen 0.0.6beta with the -d flag and provide me with the same generated files+ioreg as you've done above.

  • Like 1
Link to comment
Share on other sites

@mfc88, thanks for the help. I actually starting tweaking the ssdt myself and folded in some of PikerAlpha's code that he used on his USB 3.1 PCIE card. The result, while it looks better in ioreg, doesn't have much functional difference, so I'm still on the path of 'fixing' the power management as the gigabyte bios does not use the _PS0 or _PS3 methods.

 

Anyway, I attached my modified ssdt and also the ioreg output.

 

Cheers.

post-206515-0-23228200-1491221314_thumb.png

SSDT-BR1B.aml.zip

Link to comment
Share on other sites

@mfc88, thanks for the help. I actually starting tweaking the ssdt myself and folded in some of PikerAlpha's code that he used on his USB 3.1 PCIE card. The result, while it looks better in ioreg, doesn't have much functional difference, so I'm still on the path of 'fixing' the power management as the gigabyte bios does not use the _PS0 or _PS3 methods.

 

Anyway, I attached my modified ssdt and also the ioreg output.

 

Cheers.

 

I don't know your thunderbolt card but mine doesn't have 2 typeC conectors as Pike's example, so in my case rhub goes like this:

                Device (RHUB)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Device (HS01)
                    {
                        Name (_ADR, One)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0x09, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
                            }
                        })
                    }

                    Device (HS02)
                    {
                        Name (_ADR, 0x02)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0x03, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
                            }
                        })
                    }

                    Device (SSP1)
                    {
                        Name (_ADR, 0x03)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0x09, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
                            }
                        })
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }

                            Return (Package (0x02)
                            {
                                "UsbCPortNumber", 
                                0x02
                            })
                        }
                    }

                    Device (SSP2)
                    {
                        Name (_ADR, 0x04)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0x03, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
                            }
                        })
                    }
                }

Only HS01-SSP1 typeC.

Link to comment
Share on other sites

I don't know your thunderbolt card but mine doesn't have 2 typeC conectors as Pike's example, so in my case rhub goes like this:

                Device (RHUB)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Device (HS01)
                    {
                        Name (_ADR, One)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0x09, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
                            }
                        })
                    }

                    Device (HS02)
                    {
                        Name (_ADR, 0x02)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0x03, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
                            }
                        })
                    }

                    Device (SSP1)
                    {
                        Name (_ADR, 0x03)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0x09, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
                            }
                        })
                        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                        {
                            If (LEqual (Arg2, Zero))
                            {
                                Return (Buffer (One)
                                {
                                     0x03                                           
                                })
                            }

                            Return (Package (0x02)
                            {
                                "UsbCPortNumber", 
                                0x02
                            })
                        }
                    }

                    Device (SSP2)
                    {
                        Name (_ADR, 0x04)  // _ADR: Address
                        Name (_UPC, Package (0x04)  // _UPC: USB Port Capabilities
                        {
                            0xFF, 
                            0x03, 
                            Zero, 
                            Zero
                        })
                        Name (_PLD, Package (0x01)  // _PLD: Physical Location of Device
                        {
                            Buffer (0x10)
                            {
                                /* 0000 */  0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                                /* 0008 */  0x31, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 
                            }
                        })
                    }
                }

Only HS01-SSP1 typeC.

 

Nice catch, I'll update mine accordingly. Have you had any luck implementing power management for hot-swap/wake issues?

Link to comment
Share on other sites

Nice catch, I'll update mine accordingly. Have you had any luck implementing power management for hot-swap/wake issues?

 

no luck with power management /sleep usb issues. But hot swap usb is working fine here.

If you meant thunderbolt hotswap, nobody has found a solution since thunderbolt1 era....  you neither will see thunderbolt devices in system profile section, apple thunderbolt implementation is quite different.

Link to comment
Share on other sites

Okkkayyy... 

 

So:


@Fergarth - Your GPU may be displaying the wrong device-id in your ACPI tables. Either the motherboard is returning an incorrect value or perhaps the GPU? You can check if the value is correct by doing this (with or without a DSDT/SSDTs in "patched", it shouldn't matter because it should return the correct ID regardless)...

 

At Clover Boot Manager screen, go to "Options":

 

 

Click, "Graphics Injector":

 

 

Then, look at "Card DeviceID" (yours should be 17C8):

No, my ID is not this!
I did the test with and without DSDT and the ID that appears is always the same and is in the image. I returned to test, this time with "ssdtGen 0.0.6beta" and everything remains the same. Does not detect any sound devices, black screen, and one time or another KP at boot...
At this moment neither with my original EFI wants to boot and I think I will install the OS again. It seems to me that these experiences are not doing well to my system... ;) 

post-1313347-0-72220600-1491234964_thumb.jpg

Link to comment
Share on other sites

 

No, my ID is not this!
I did the test with and without DSDT and the ID that appears is always the same and is in the image. I returned to test, this time with "ssdtGen 0.0.6beta" and everything remains the same. Does not detect any sound devices, black screen, and one time or another KP at boot...
At this moment neither with my original EFI wants to boot and I think I will install the OS again. It seems to me that these experiences are not doing well to my system... ;)

 

Please attached all the ssdtGen generated files, so I can dig deeper into this.

  • Like 1
Link to comment
Share on other sites

Update!!!

 

As far as GPU RECOGNITION goes... this is what is absolutely vital (any other declared variables are fluff):

hda-gfx ==> required for GPU devices to be seen by OS (Display Port + HDMI) ----- Same as Apple SSDTs (onboard-2)

@0-5,connector-type ==> required for GPU sound (DP+HMDI), also required for HDMI to show visuals (if not, get flickering screen) -- since we don't know WHICH connector, we must include all 0-5

Note: connector-type values will vary and need to be researched to find out if they vary from x99 board to x99 board!

                "hda-gfx", 
                Buffer (0x0A)
                {
                    "onboard-2"
                },

                "@0,connector-type", 
                Buffer (0x04)
                {
                     0x00, 0x08, 0x00, 0x00                         
                }, 

                "@1,connector-type", 
                Buffer (0x04)
                {
                     0x00, 0x08, 0x00, 0x00                         
                }, 

                "@2,connector-type", 
                Buffer (0x04)
                {
                     0x00, 0x08, 0x00, 0x00                         
                }, 

                "@3,connector-type", 
                Buffer (0x04)
                {
                     0x00, 0x08, 0x00, 0x00                         
                }, 

                "@4,connector-type", 
                Buffer (0x04)
                {
                     0x00, 0x08, 0x00, 0x00                         
                }, 

                "@5,connector-type", 
                Buffer (0x04)
                {
                     0x00, 0x08, 0x00, 0x00                         
                }

As far as GPU SOUND goes... this is what is absolutely vital:

hda-gfx ==> required for connected GPU sound devices to be seen by OS (Display Port + HDMI) ----- Same as Apple SSDTs (onboard-2)

device-id ==> required for HDMI only connected devices to be seen by OS (not required for Display Port)

                "hda-gfx", 
                Buffer (0x0A)
                {
                    "onboard-2"
                },
 
                "device-id", 
                Buffer (0x04)
                {
                     0xB0, 0x0F, 0x00, 0x00                         
                } 

@Fergarth

Try this attached SSDT...

(if the first one doesn't work, try v2)

SSDT-GFX1.aml.zip

SSDT-GFX1(v2).aml.zip

  • Like 1
Link to comment
Share on other sites

no luck with power management /sleep usb issues. But hot swap usb is working fine here.

If you meant thunderbolt hotswap, nobody has found a solution since thunderbolt1 era....  you neither will see thunderbolt devices in system profile section, apple thunderbolt implementation is quite different.

 

Ok, here's a ssdt for BR1B that preserves the USB 3.1 port after sleep/wake. Thanks to mfc88 for getting me interested in this again and PikerAlpha for his invaluable information.

 

I think I now have everything working on my MacPro6,1 X99P-SLI including sleep/wake, WOL with internal ethernet, WOL with ARPT, wake from Bluetooth etc.

SSDT-BR1B.aml.zip

  • Like 2
Link to comment
Share on other sites


@Fergarth

Try this attached SSDT...

(if the first one doesn't work, try v2)

Friend mfc, after grinding my head a bit, I managed to get my system back functional. Your effort and dedication are commendable, but to me it is proven that it only works fully well with my chubby DSDT. Also tried with the last GFX1 and 2 and result was the same, do not work.

Only with my DSDT I can get this:

post-1313347-0-89667000-1491261005_thumb.png

post-1313347-0-78215800-1491261006_thumb.png

post-1313347-0-75738500-1491261007_thumb.png

post-1313347-0-70919700-1491261010_thumb.png

post-1313347-0-98412600-1491261011_thumb.png

Link to comment
Share on other sites

Everything is attached, my current EFI (without DSDT) and the rest you asked for  :)

With the exception of EVSS (not listed in your IOReg devices) and XHC (not needed if you're injecting USBs+power options), everything looks pretty good on my end. 

 

I got one more trick to try, otherwise, I'm out of ideas.

 

Here we go... all or nothing... let's try these last three SSDTs...

 

First SSDT (v3): Just drop it in patched and reboot.

Second SSDT (v4): Drop it in patched, then open your config.plist with Clover Configurator, go to the "ACPI" tab, under "Fixes" table, select "AddDTGP" or "AddDTGP_0001", save, then reboot.

Second SSDT (v5): Drop it in patched, then open your config.plist with Clover Configurator, go to the "ACPI" tab, under "Fixes" table, select "AddDTGP" or "AddDTGP_0001", save, then reboot.

SSDT-GFX1(v3).aml.zip

SSDT-GFX1(v4).aml.zip

SSDT-GFX1(v5).aml.zip

  • Like 2
Link to comment
Share on other sites

 Share

×
×
  • Create New...