Contribute
Register

<< Solved >> Can't get my spoofing for Radeon RX 6950XT working after install, please help

Joined
Dec 15, 2023
Messages
17
Motherboard
Asus ROG Strix X570-E Gaming
CPU
AMD Ryzen 9 5950X
Graphics
XFX RX 6950 XT
Mac
  1. MacBook Air
Hi all! I am in the adventure to build my first build on a Ryzen system. I got MacOS 14 installed already and a lot of things seem to work fine. :clap:

Sadly now I stuck with the graphics, I just bought a Radeon 6950XT for this adventure ...
The system boots up fine, but I got no graphic adapter shown in the system info and just 10MB graphics. So basically the drivers are not loaded.

Please see my EFI, I tried to create the SSDT-GPU-SPOOF.aml like described here: https://dortania.github.io/Getting-Started-With-ACPI/Universal/spoof.html .

This is what I get from Windows device manager:

Code:
AMD Radeon RX 6950 XT

BIOS-Name
\_SB.PCI0.GPP8.SWUS.SWDS.VGA

Locationpaths
PCIROOT(0)#PCI(0301)#PCI(0000)#PCI(0000)#PCI(0000)
ACPI(_SB_)#ACPI(PCI0)#ACPI(GPP8)#ACPI(X161)#ACPI(SWDS)#ACPI(VGA_)
ACPI(_SB_)#ACPI(PCI0)#ACPI(GPP8)#ACPI(SWUS)#ACPI(SWDS)#ACPI(VGA_)

Device instance path
PCI\VEN_1002&DEV_73A5&SUBSYS_69501EAE&REV_C0\6&321A4CFC&0&00000019

Matching device id
PCI\VEN_1002&DEV_73A5&REV_C0

This is what I get from Linux:
Code:
Slot:   0000:0c:00.0
Class:  VGA compatible controller [0300]
Vendor: Advanced Micro Devices, Inc. [AMD/ATI] [1002]
Device: Navi 21 [Radeon RX 6950 XT] [73a5]
SVendor:        XFX Limited [1eae]
SDevice:        Navi 21 [Radeon RX 6950 XT] [6950]
Rev:    c0
ProgIf: 00
IOMMUGroup:     27

This is what I tried to put together, but it does not work:

Code:
// Based off of WhateverGreen's sample.dsl
// https://github.com/acidanthera/WhateverGreen/blob/master/Manual/Sample.dsl
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AMDGPU", 0x00001000)
{
    External (_SB_.PCI0, DeviceObj)
    //External (_SB_.PCI0.GPP8.X161.SWDS.VGA_, DeviceObj)
    External (_SB_.PCI0.GPP8.SWUS.SWDS.VGA_, DeviceObj)


    Scope (\_SB.PCI0.GPP8.SWUS.SWDS.VGA)
    {
        if (_OSI ("Darwin"))
        {
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Local0 = Package (0x04)
                {
                    // Where we shove our FakeID
                    "device-id",
                    Buffer (0x04)
                    {
                        0xBF, 0x73, 0x00, 0x00
                    },

                    // Changing the name of the GPU reported, mainly cosmetic
                    "model",
                    Buffer ()
                    {
                        "AMD Radeon RX 6900 XT"
                    }
                }
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }
    }
    Scope (\_SB.PCI0)
    {                   
        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)
        }
      
    }

}

P.S. I noticed in Linux the BIOS-Name got an "underscore" at the end, so there it is "\_SB.PCI0.GPP8.SWUS.SWDS.VGA_". When I compile the dsl the underscore gets removed, so I am not sure if this could be a problem.

Thank you!!
 

Attachments

  • EFI_clean.zip
    11.2 MB · Views: 25
The underscore at the end of VGA_ is an ACPI rule, where names must be 4 characters long.

An underscore is used to pad a 3 character name, but is not always shown in the DSDT or SSDT, e.g. XHC needs to be written as XHC_ when converting the name to HEX.

Have you tried using an SSDT-GPU-SPOOF with the second IORegName, i.e. (\_SB_.PCI0.GPP8.X161.SWDS.VGA) in place of (\_SB.PCI0.GPP8.SWUS.SWDS.VGA)?

Or is the second IORegName the identifier for the Audio component on the dGPU?

What does Hackintool > PCIe tab show in respect of the RX 6950 XT card? The screenshot below, shows the Hackintool > PCIe tab from my Asus ROG STRIX X570-F Gaming /Ryzen 9 3900X system, this uses an RX 6700 XT dGPU.

Screenshot 2023-12-15 at 19.54.05.png Hackintool > PCIe tab - dGPU highlighted.

Have you tried using NootRX.kext in place of WhateverGreen.kext? That is the kext I use with my RX 6700 XT, and it work just fine in macOS Monterey, Ventura and Sonoma.

This is a Finder view of the EFI I am using for my X570-F system.

Screenshot 2023-12-15 at 20.05.27.png Similar EFI, but NootRX.kext is used not WhateverGreen.kext

  • One issue with using NootRX is that you can't have any DeviceProperties present in your config.plist, I am sure this will be fixed but that is a requirement at present.
  • Any DeviceProperties that are present and required for your system can usually be added via boot arguments or SSDT's.
  • Also when using NootRX.kext you don't need to include the agdpmod=pikera boot argument in your config.plist.
 
I'm not sure and I'm not expert but try this.

Make your own SSDT-BRG0.aml from SSDT-BRG0.dsl (OpenCore package contains it in Docs folder download Opencore from github) with using MaciASL just save as and select acpi language at file format.

Just change
Code:
_SB_.PCI0.PEG0.PEGP
\_SB.PCI0.PEG1.PEGP
to
Code:
_SB_.PCI0.GPP8.SWUS.SWDS.VGA
\_SB.PCI0.GPP8.SWUS.SWDS.VGA

And find your "device path" from hackintool or gfxutil and add your device in your opencore config DeviceProperties
like that
Code:
<key>DeviceProperties</key>
    <dict>
        <key>Add</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)</key>
            <dict>
                <key>device-id</key>
                <data>v3MAAA==</data>

v3MAAA== is base64 data which is BF 73 00 00 hex. So if you are using text editor then paste base64 but if you are using plist editor select type to data and write BF 73 00 00

And extra you might need to add agdpmod=ignore to your boot-args just add "ignore" if you are using imacpro1,1 or macpro7,1 smbios if you get black screen then use agdpmod=pikera
 
Last edited:
Shouldn't need the DeviceProperties if the SSDT is configured correctly, as it will contain the spoofed ID.
 
Shouldn't need the DeviceProperties if the SSDT is configured correctly, as it will contain the spoofed ID.
Yes that is correct.

Worth a try to add some values on DeviceProperties GPU

Code:
@0,name ATY,Carswell
@1,name ATY,Carswell
@2,name ATY,Carswell
@3,name ATY,Carswell
device_type ATY,CarswellParent
PP_PhmSoftPowerPlayTable --- Power play tables hex data extracted from GPU bios

I got more stable and less laggy desktop experience with those.

For PP_PhmSoftPowerPlayTable values
This video helped me out. Just don't replace blanks to commas.
 
I was able to get at least some acceleration with this kext and removing all other spoofing attempts. Since this kext does not support DRM. I still want to get the SSDT spoof to work. So just a short message for everyone stucking at the same problem and needs a quick fix. I now check your suggestions and try them. Thanks
 

Attachments

  • AMDRadeonNavi2xExt.kext.zip
    12.9 KB · Views: 24
What does Hackintool > PCIe tab show in respect of the RX 6950 XT card?
Screenshot 2023-12-16 at 00.35.38.png


Still on trying the other hints from you guys ... :D Rebooting this Hackintosh seems to be my new hobby :)

Update about NootRX:

I removed the aml for spoofing and also all DeviceProperties. Also I removed agdpmod=pikera from boot-args and deleted WhateverGreen.kext. With this combination I get up to the apple loading screen and then it reboots automatically. Maybe NootRX is not compatible with RX 6950 XT cards or I missed something.
 
Last edited:
Have you tried using an SSDT-GPU-SPOOF with the second IORegName, i.e. (\_SB_.PCI0.GPP8.X161.SWDS.VGA) in place of (\_SB.PCI0.GPP8.SWUS.SWDS.VGA)?

Yes I did. I used the SSDT-GPU-SPOOF from the Opencore template and also tried to modify it like this, but it gets ignored. Even device name / model gets ignored.

Code:
/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20210331 (64-bit version)
 * Copyright (c) 2000 - 2021 Intel Corporation
 *
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of iASLXzJ6We.aml, Sat Dec 16 02:52:23 2023
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x0000015C (348)
 *     Revision         0x02
 *     Checksum         0xDE
 *     OEM ID           "DRTNIA"
 *     OEM Table ID     "AMDGPU"
 *     OEM Revision     0x00001000 (4096)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20210331 (539034417)
 */
DefinitionBlock ("", "SSDT", 2, "DRTNIA", "AMDGPU", 0x00001000)
{
    External (_SB_.PCI0, DeviceObj)
    External (_SB_.PCI0.GPP8, DeviceObj)
    External (_SB_.PCI0.GPP8.X161, DeviceObj)
    External (_SB_.PCI0.GPP8.X161.SWDS, DeviceObj)
    External (_SB_.PCI0.GPP8.X161.SWDS.VGA_, DeviceObj)

    Scope (\_SB.PCI0.GPP8.X161.SWDS.VGA)
    {
        If (_OSI ("Darwin"))
        {
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Local0 = Package (0x04)
                    {
                        "device-id",
                        Buffer (0x04)
                        {
                             0xBF, 0x73, 0x00, 0x00                           // .s..
                        },

                        "model",
                        Buffer (0x16)
                        {
                            "AMD Radeon RX 6950 XT"
                        }
                    }
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }
    }

    Scope (\_SB.PCI0)
    {
        Method (DTGP, 5, NotSerialized)
        {
            If ((Arg0 == ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b") /* Unknown UUID */))
            {
                If ((Arg1 == One))
                {
                    If ((Arg2 == Zero))
                    {
                        Arg4 = Buffer (One)
                            {
                                 0x03                                             // .
                            }
                        Return (One)
                    }

                    If ((Arg2 == One))
                    {
                        Return (One)
                    }
                }
            }

            Arg4 = Buffer (One)
                {
                     0x00                                             // .
                }
            Return (Zero)
        }
    }
}

I also tried it with SSDT-BRG0, but this got ignored, too.

/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20210331 (64-bit version)
* Copyright (c) 2000 - 2021 Intel Corporation
*
* Disassembling to symbolic ASL+ operators
*
* Disassembly of iASLHbIge2.aml, Sat Dec 16 02:57:06 2023
*
* Original Table Header:
* Signature "SSDT"
* Length 0x0000008A (138)
* Revision 0x02
* Checksum 0xAD
* OEM ID "ACDT"
* OEM Table ID "BRG0"
* OEM Revision 0x00000000 (0)
* Compiler ID "INTL"
* Compiler Version 0x20210331 (539034417)
*/
DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000)
{
External (_SB_.PCI0.GPP8.SWUS.SWDS.VGA_, DeviceObj)

Scope (\_SB.PCI0.GPP8.SWUS.SWDS.VGA)
{
Device (BRG0)
{
Name (_ADR, Zero) // _ADR: Address
Device (BRG1)
{
Name (_ADR, Zero) // _ADR: Address
Device (GFX0)
{
Name (_ADR, Zero) // _ADR: Address
}
}
}
}
}
 
View attachment 576051

Still on trying the other hints from you guys ... :D Rebooting this Hackintosh seems to be my new hobby :)

Update about NootRX:

I removed the aml for spoofing and also all DeviceProperties. Also I removed agdpmod=pikera from boot-args and deleted WhateverGreen.kext. With this combination I get up to the apple loading screen and then it reboots automatically. Maybe NootRX is not compatible with RX 6950 XT cards or I missed something.
Is this hackintool screenshot capture with whatevergreen? I was able to spoof my 6650XT with renaming pci-bridge@0 to BRG0@0 using whatevergreen and device-id via DeviceProperties.

For BRG0.dsl
Code:
_SB_.PCI0.PEG0.PEGP
\_SB.PCI0.PEG0.PEGP
to
Code:
_SB_.PCI0.GPP8.X161
\_SB.PCI0.GPP8.X161
 
Is this hackintool screenshot capture with whatevergreen? I was able to spoof my 6650XT with renaming pci-bridge@0 to BRG0@0 using whatevergreen and device-id via DeviceProperties.
Yes it is Hackintool. Can you upload your BRG0 and deviceprops? Thanks
 
Back
Top