Contribute
Register

How to build your own iMac Pro [Successful Build/Extended Guide]

Status
Not open for further replies.
Good to knpw.
Mine actually works quite well, WiFi as well as BT, the only issue is:
when I use BT audio somewhen AFTER sleep, the computer freezes.
I hoped that this effect maybe vanishes once I implemented the card successfully under PCI.

So you think it is rather hardware related? The card itself or faulty USB connection?

I also wonder if the fail of the SSDT code might have a connection with the USB management in general.
I witness sub-optimal USB performance on several ports.

You have a opinion on that?

And lastly, I would like to call
SSDT special agent @apfelnico !
Nico, can you see any point why my SSDT fails programming-/ IOReg-wise?

The IOReg for the WiFi card is PCIO.RP19.PXSX
which I renamed to PCIO.RP19.ARPT in clover configurator (renaming device section).
renaming works, but SSDT below fails (in full SSDT is DTGP included of course)

Code:
    External (_SB_.PCIO.RP19.ARPT, DeviceObj)    // (from opcode)
...
...
    Scope (_SB.PCIO.RP19.ARPT)
    {
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            Store (Package (0x0E)
                {
                    "built-in",
                    Buffer (One)
                    {
                         0x00                                      
                    },

                    "device-id",
                    Buffer (0x04)
                    {
                         0xBA, 0x43, 0x00, 0x00                    
                    },

                    "AAPL,slot-name",
                    Buffer (0x07)
                    {
                        "Slot-5"
                    },

                    "device_type",
                    Buffer (0x13)
                    {
                        "AirPort Controller"
                    },

                    "model",
                    Buffer (0x4A)
                    {
                        "OSK WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 Controller"
                    },

                    "compatible",
                    Buffer (0x0D)
                    {
                        "pci14e4,43ba"
                    },

                    "name",
                    Buffer (0x10)
                    {
                        "AirPort Extreme"
                    }
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }
    }

All ideas welcome!

(IOReg screenshots after clover renaming.)

Hi @fingers-crossed

what looks weird to me is that your define with
External (_SB_.PCIO.RP19.ARPT, DeviceObj) // (from opcode)
ARPT as a device object and then later
Scope (_SB.PCIO.RP19.ARPT)
you try to match this with a scope object

I am a beginner with all the SSDT things as well, but this does not feel right.

I am not using the renaming with clover and do all of it in SSDT.

Here the what I used on my old mobo

Code:
DefinitionBlock ("", "SSDT", 1, "FSDO", "X299", 0x00000000)
{

    External (_SB_.PCI0.RP21.ARPT, DeviceObj)    // (from opcode)
    External (_SB_.PCI0.RP21.PXSX, DeviceObj)    // (from opcode)

    External (GPRW, MethodObj)    // 2 Arguments (from opcode)

    Device (\_SB.PCI0.RP21.ARPT)
    {
        Name (_ADR, Zero)  // _ADR: Address
        OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
        Field (PCIS, AnyAcc, NoLock, Preserve)
        {
            PVID,   16, 
            PDID,   16
        }

        Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
        {
            Return (GPRW (0x69, 0x04))
        }

        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            Store (Package (0x0E)
                {
                    "built-in", 
                    Buffer (One)
                    {
                         0x00                                          
                    }, 

                    "device-id", 
                    Buffer (0x04)
                    {
                         0xBA, 0x43, 0x00, 0x00                        
                    }, 

                    "AAPL,slot-name", 
                    Buffer (0x07)
                    {
                        "Slot-2"
                    }, 

                    "device_type", 
                    Buffer (0x13)
                    {
                        "AirPort Controller"
                    }, 

                    "model", 
                    Buffer (0x4A)
                    {
                        "OSX WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 Controller"
                    }, 

                    "compatible", 
                    Buffer (0x0D)
                    {
                        "pci14e4,43ba"
                    }, 

                    "name", 
                    Buffer (0x10)
                    {
                        "AirPort Extreme"
                    }
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }
    }

    Name (_SB.PCI0.RP21.PXSX._STA, Zero)  // _STA: Status

    Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                             0x03                                          
                        }, Arg4)
                    Return (One)
                }

                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }

        Store (Buffer (One)
            {
                 0x00                                          
            }, Arg4)
        Return (Zero)
    }
}

and here is what I use on the new one
On my new mobo the Wifi shows up on RP05 instead of RP21

Code:
DefinitionBlock ("", "SSDT", 1, "FSDO", "X299", 0x00000000)
{

    External (_SB_.PCI0.RP05, DeviceObj)    // (from opcode)
    External (_SB_.PCI0.RP05.PXSX, DeviceObj)    // (from opcode)
    External (_SB_.PCI0.RP05.SLT5, DeviceObj)    // (from opcode)

    External (SLT5, DeviceObj)    // (from opcode)

    Scope (_SB.PCI0.RP05)
    {
        Scope (SLT5) // here we remove the SLT5 device name which allows us to define ARPT device
        {
            Name (_STA, Zero)  // _STA: Status
        }

        Scope (PXSX)      // here we remove the PXSX device name which causes SLT5 to show up as a name
        {
            Name (_STA, Zero)  // _STA: Status
        }

        Device (ARPT)   // here we define ARPT and insert _DSM method with all the data
        {
            Name (_ADR, Zero)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Store (Package (0x0E)
                    {
                        "built-in", 
                        Buffer (One)
                        {
                             0x00                                          
                        }, 

                        "device-id", 
                        Buffer (0x04)
                        {
                             0xBA, 0x43, 0x00, 0x00                        
                        }, 

                        "AAPL,slot-name", 
                        Buffer (0x07)
                        {
                            "Slot-3"
                        }, 

                        "device_type", 
                        Buffer (0x13)
                        {
                            "AirPort Controller"
                        }, 

                        "model", 
                        Buffer (0x4A)
                        {
                            "OSX WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + Bluetooth 4.0 Controller"
                        }, 

                        "compatible", 
                        Buffer (0x0D)
                        {
                            "pci14e4,43a0"
                        }, 

                        "name", 
                        Buffer (0x10)
                        {
                            "AirPort Extreme"
                        }
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }
    }



    Method (DTGP, 5, NotSerialized)
    {
        If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
        {
            If (LEqual (Arg1, One))
            {
                If (LEqual (Arg2, Zero))
                {
                    Store (Buffer (One)
                        {
                             0x03                                          
                        }, Arg4)
                    Return (One)
                }

                If (LEqual (Arg2, One))
                {
                    Return (One)
                }
            }
        }

        Store (Buffer (One)
            {
                 0x00                                          
            }, Arg4)
        Return (Zero)
    }
}

I just now realised that in my new implementation I did not inject _PRW Method like in the old one.
That one missing might cause sleep issues (my machine right now never sleeps because it is running several VMs)

I don't recall what the field variables PVID and PDID were used for on the old mobo.

All the Best
Frank
 
I'm following the steps.
I have the same 100% components
But I have problems with the installer ...
tells me:
This version of MAC OS x is not supported in this plataform :rolleyes:
 

Attachments

  • 0 bytes · Views: 52
I'm following the steps.
I have the same 100% components
But I have problems with the installer ...
tells me:
This version of MAC OS x is not supported in this plataform :rolleyes:
where did you get your config.plist from?

on what hardware did you use to create your usb installer?
 
If anyone with an ASUS Prime X299-A has a working wifi SSDT implementation, I would greatly appreciate some insight. My wifi card is in slot 5. Here's my IOReg listing.

Have you ever tried Slot-3?
Is the PCI layout of your mobo identical to the Prime Deluxe?[/QUOTE]

I have not tried Slot-3. The PCI layout of the Prime A is the same as the Prime Deluxe. I am not super concerned, as the wifi card works fine, I'd just like to finish my SSDT implementation and I don't understand why this particular one doesn't work, given all the others do.
 
I have not tried Slot-3. The PCI layout of the Prime A is the same as the Prime Deluxe. I am not super concerned, as the wifi card works fine, I'd just like to finish my SSDT implementation and I don't understand why this particular one doesn't work, given all the others do.
I am getting closer! :) More later after more testing...

But question first:
Does your mac freeze after you
1. turn BT audio on, connecting with audio device such as wireless headhones or speaker
2. sleep until power off
3. wake
4. play back audio (youtube e.g.) via the BT audio device
?
 
Hi @franksanderdo, @nnorris7

[SUCCESS]

thanks for all your input, after extensive testing I have a working SSDT
with Flughafen WiFi card in Slot 5 on my ASUS X299 Prime Deluxe. :clap: Puh...

Frank, your upper code of your last posting worked for me!
(By this you advanced from SSDT beginner level to intermediate. ;-) Congrats!)

This is how it looks like now in my SSDT:

Code:
    External (_SB_.PCI0.RP19.ARPT, DeviceObj)    // (from opcode)
    External (_SB_.PCI0.RP19.PXSX, DeviceObj)    // (from opcode)
    External (GPRW, MethodObj)    // 2 Arguments (from opcode)
...
...
    Device (\_SB.PCI0.RP19.ARPT)
    {
        Name (_ADR, Zero)  // _ADR: Address
        OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
        Field (PCIS, AnyAcc, NoLock, Preserve)
        {
            PVID,   16,
            PDID,   16
        }

        Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
        {
            Return (GPRW (0x69, 0x04))
        }

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

            Store (Package (0x0E)
                {
                    "built-in",
                    Buffer (One)
                    {
                         0x00                                    
                    },

                    "device-id",
                    Buffer (0x04)
                    {
                         0xBA, 0x43, 0x00, 0x00                  
                    },

                    "AAPL,slot-name",
                    Buffer (0x07)
                    {
                        "Slot-5"
                    },

                    "device_type",
                    Buffer (0x13)
                    {
                        "AirPort Controller"
                    },

                    "model",
                    Buffer (0x4A)
                    {
                        "Flughafen WIFI Broadcom BCM94360CD 802.11 a/b/g/n/ac + BT 4.0 Controller"
                    },

                    "compatible",
                    Buffer (0x0D)
                    {
                        "pci14e4,43ba"
                    },

                    "name",
                    Buffer (0x10)
                    {
                        "AirPort Extreme"
                    }
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }
    }
    Name (_SB.PCI0.RP19.PXSX._STA, Zero)  // _STA: Status
(The upper part with OperationsRegion/ Field/ _PRW method is probably not nessesary anymore and is not included in kgp's distribution.)
Probably this works with the OSXWIFI card, too. Could you please check and confirm, @nnorris7 ?

*** So... I think the moment when the whole PCI list in your system profiler is complete and every line saying "driver installed: YES" is very special, you guys know, for a n00b even more :thumbup:
This is the perfect moment to throw a huge THANK YOU to @kgp, for writing up and managing this guide and thread! :wave: :headbang:
***

But the journey is not over yet:

I just now realised that in my new implementation I did not inject _PRW Method like in the old one.
That one missing might cause sleep issues (my machine right now never sleeps because it is running several VMs)

WiFi and BT are working with DATA after wake from sleep flawlessly, e.g. airdrop,
but even with the working PCI impl. my system still crashes when using BT AUDIO after wake.
I am using the Voodoo audio approach.
I am curious if this is something which happens on other people's system, too?

The including of the _PRW method in the SSDT didn't fix that, unfortunately.

Because that was the thing I hoped to fix,
I have to state that I can't see any benefits at the moment of a WiFi card correctly showing up in system profiler.
Until I come across new issues I see it therefore as "cosmetic".

Maybe the above crash/ freeze is related to the USB issue I encounter when waking up from sleep, as all USB devices are shown as "not ejected properly" and then - mostly - re-connected.
Bluetooth card is connected to internal USB78 header, and showing up in IOReg under address HS08. So it is maybe related?

Will continue investigating USB/ sleep issues in august.

Thanks again to all people contributing with ideas and comments!
What a great forum & thread! Learning from each other :)
cheers
 
Last edited:
And there is no Install macOS High Sierra.app in the Application folder after executing the sudo /usr/sbin/installer -pkg installer.pkg -target / command?

Since 10.13.4 I also observe some error when executing the above command. Although the Install macOS High Sierra.app is subsequently in the Application folder and works after completing the App with the last additional commands.

The Create_Installer.sh should do everything automatically and just leave the final Install macOS High Sierra.app in the Application folder.

Sorry I really have to close my X299 tourist office for today ...

Also solved. The problem was the system definition, which had still "Mac Pro 2008" Once upgraded to Imac 14.2 Already without problems.
 
I am getting closer! :) More later after more testing...

But question first:
Does your mac freeze after you
1. turn BT audio on, connecting with audio device such as wireless headhones or speaker
2. sleep until power off
3. wake
4. play back audio (youtube e.g.) via the BT audio device
?

Hi @fingers-crossed,

My hack does not freeze in any of the situations you list above. Connecting BT audio works fine when playing iTunes, YouTube, etc. Sleep/wake works really well, no issues/freezes.

Thanks.
 
Status
Not open for further replies.
Back
Top