Contribute
Register

[Success] AMD RX6000 Series working in macOS

Joined
May 29, 2012
Messages
840
Motherboard
Gigabyte Z390 Gaming X
CPU
i9-9900K
Graphics
6900XT
Mac
  1. iMac
Classic Mac
  1. LC
  2. Power Mac
  3. PowerBook
Mobile Phone
  1. iOS
today started to work.. i changed a few dp and hdmi cabels:( but what is importand was that it started to work

i now i need help to confirate that this external gpu is my main (primery) and disabled internal gpu.. so switch from internal to external

Hi @Sebseb82

It looks a bit more complicated than the process to get the internal dGPU working, and I don't have any experience. I don't want to give you the wrong advice and send you down a rabbit hole.

Your setup looks similar to @WrathOfThePast , ie., an eGPU and the ACPI path has multiple pci-bridges that you have to rename. But he is also using Kryptonite, a kext (Google "kryptonite mayankk2308 github"), so that might be necessary.
 
Joined
Dec 15, 2010
Messages
592
Motherboard
Asus ProArt Z690 Creator WiF
CPU
i9-12900K
Graphics
RX 6900 XT
Mac
  1. MacBook Pro
  2. Mac mini
  3. Mac Pro
Good evening / day / basement?

I've got a MSI RX 6900 XT Gaming Z Trio which is the XTXH model and I'm attempting to get this to work. The device-id doesn't appear to be taking but the model rename does so I'm not sure where to go next. Any guidance would be helpful.
Hi there. I have this card and it appears to be working properly in Big Sur without modifications. Can I ask you why your trying to change the device id?
 
Joined
Jan 14, 2016
Messages
65
Motherboard
Intel NUC10i5FNH
CPU
i5-10210U
Graphics
UHD 630 / RX 6900 XT
Mac
  1. Mac mini
Mobile Phone
  1. iOS
Hi @Sebseb82

It looks a bit more complicated than the process to get the internal dGPU working, and I don't have any experience. I don't want to give you the wrong advice and send you down a rabbit hole.

Your setup looks similar to @WrathOfThePast , ie., an eGPU and the ACPI path has multiple pci-bridges that you have to rename. But he is also using Kryptonite, a kext (Google "kryptonite mayankk2308 github"), so that might be necessary.
Ok.. can u show me an example how shold be look like, that be ok
 
Joined
Jan 14, 2016
Messages
65
Motherboard
Intel NUC10i5FNH
CPU
i5-10210U
Graphics
UHD 630 / RX 6900 XT
Mac
  1. Mac mini
Mobile Phone
  1. iOS
OK, That explains the path for the device.

This is what open Core would look like for this edit with ProperTree editor.


The Blue is your device PCI path which you can get from Hackintool PCIi tab. You need to add yours.


View attachment 531662


@tedyun if i understud.. that mean if i will do same ( to write under device id his card name) maybe i will solve my problem... device id for asus tuf rx6900xt is.. maybe u know?
btw.. i used dortania opencore
 
Joined
May 29, 2012
Messages
840
Motherboard
Gigabyte Z390 Gaming X
CPU
i9-9900K
Graphics
6900XT
Mac
  1. iMac
Classic Mac
  1. LC
  2. Power Mac
  3. PowerBook
Mobile Phone
  1. iOS
@tedyun if i understud.. that mean if i will do same ( to write under device id his card name) maybe i will solve my problem... device id for asus tuf rx6900xt is.. maybe u know?
btw.. i used dortania opencore

Hi @Sebseb82

Basically, you have to load an SSDT in order to tell Whatevergreen where your 6900XT is located. If you had an internal dGPU plugged into a PCI slot, you could figure out the path using IORegistry. In my screenshot, you can see my path is (under acpi-path on the right panel)

PCI0.PEG0.PEGP.BRG0.GFX0

The "BRG0" and "GFX0" are respectively, the PCI bridge on the card, then the card itself, and these are specified by the SSDT. This is the source for the SSDT-BRG0.dsl, that is included in the OpenCore release, in the Docs > Acpisamples > Source folder.

Because my motherboard uses similar addresses, I did not have to modify this SSDT, but since yours have a different address, you will need to modify it. I don't know how.

Going from your IORegistryExplorer path, I would guess it is

[email protected]@[email protected]@[email protected]

So you would have to modify the SSDT to name the "pci-bridge"'s. For many here, it is fairly simple because we can just substitute our addresses into the SSDT. Then the single pci-bridge in our set up is renamed to "BRG0" and we're done. At that point, WEG does it's thing and allows spoofing of the device-id.

We have to figure out what to do with your three extra pci-bridges. I don't know enough aabout how this works in order to help guide you.

Like I said, @WrathOfThePast seems to have it working on his external. He uses the Kryptonite kext so maybe that is something you may want to try?

Ted
 
Joined
Oct 20, 2021
Messages
38
Motherboard
Apple MacBookPro16,1 - 1715.40.15.0.0 - OpenCore
CPU
i9-9980HK
Graphics
UHD 630 + Radeon Pro 5500M
Mac
  1. MacBook Air
  2. MacBook Pro
Mobile Phone
  1. iOS
Yes, are you using Open Core?

Is this a real Mac, or a Hackintosh?
It's not spoofing the device ID... the bootloader is working though.
Hi @Sebseb82

Basically, you have to load an SSDT in order to tell Whatevergreen where your 6900XT is located. If you had an internal dGPU plugged into a PCI slot, you could figure out the path using IORegistry. In my screenshot, you can see my path is (under acpi-path on the right panel)

PCI0.PEG0.PEGP.BRG0.GFX0

The "BRG0" and "GFX0" are respectively, the PCI bridge on the card, then the card itself, and these are specified by the SSDT. This is the source for the SSDT-BRG0.dsl, that is included in the OpenCore release, in the Docs > Acpisamples > Source folder.

Because my motherboard uses similar addresses, I did not have to modify this SSDT, but since yours have a different address, you will need to modify it. I don't know how.

Going from your IORegistryExplorer path, I would guess it is

[email protected]@[email protected]@[email protected]

So you would have to modify the SSDT to name the "pci-bridge"'s. For many here, it is fairly simple because we can just substitute our addresses into the SSDT. Then the single pci-bridge in our set up is renamed to "BRG0" and we're done. At that point, WEG does it's thing and allows spoofing of the device-id.

We have to figure out what to do with your three extra pci-bridges. I don't know enough aabout how this works in order to help guide you.

Like I said, @WrathOfThePast seems to have it working on his external. He uses the Kryptonite kext so maybe that is something you may want to try?

Ted
I do not... the bootloader is working & there's no kernel panics, but the device ID hasn't been successfully spoofed... I have three theories on what could be wrong:

"DeviceProperties/Add" on config.plist:

1. Is the "device_id" supposed to be "<BF730000>" or the value found for "display" in IORegistryExplorer, "<AF 73 00 00>"? I assumed the former.

2. "PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)" is longer than any other I saw in this thread... should the three "Pci(0x0,0x0)"s be there?

SSDT:
3. In IORegistryExplorer, I noticed my existing dGPU (Radeon Pro 5500M) has GFX0. For my SSDT, Should I change "GFX0" to "GFX1" on line 34?
 
Joined
May 29, 2012
Messages
840
Motherboard
Gigabyte Z390 Gaming X
CPU
i9-9900K
Graphics
6900XT
Mac
  1. iMac
Classic Mac
  1. LC
  2. Power Mac
  3. PowerBook
Mobile Phone
  1. iOS
It's not spoofing the device ID... the bootloader is working though.

I do not... the bootloader is working & there's no kernel panics, but the device ID hasn't been successfully spoofed... I have three theories on what could be wrong:

"DeviceProperties/Add" on config.plist:

1. Is the "device_id" supposed to be "<BF730000>" or the value found for "display" in IORegistryExplorer, "<AF 73 00 00>"? I assumed the former.

2. "PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)" is longer than any other I saw in this thread... should the three "Pci(0x0,0x0)"s be there?

SSDT:
3. In IORegistryExplorer, I noticed my existing dGPU (Radeon Pro 5500M) has GFX0. For my SSDT, Should I change "GFX0" to "GFX1" on line 34?
Hi @WrathOfThePast

Yes, your device-id should be <BF730000>. If it is showing <AF730000> is isn't being correctly spoofed.

I think the problem is with the three extra pci-bridges that we don't have using an internal dGPU. You'll have to get some help with the SSDT on assigning the path. The SSDT should rename the pci-bridges. That's what the stock SSDT-BRG0.aml does. If we didn't have that, the path would be PCI0.PEG0.PEGP.pci-bridge.GFX0, and the device wouldn't be spoofed correctly. What the SSDT does is it assigns BRG0 to the card's "pci-bridge".

I think the issue is that the eGPU has 3 more pci-bridges. What I would try is to build off the SSDT and keep doing nested Devices.

Code:
DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000)
{
    External (_SB_.PCI0.PEG0.PEGP, DeviceObj)

    Scope (\_SB.PCI0.PEG0.PEGP)
    {
        /*
         * This is a PCI bridge device present on PEGP.
         * Normally seen as pci-bridge in I/O Registry.
         */
        Device (BRG0)
        {
            Name (_ADR, Zero)

            /*
             * This is an actual GPU device present on the bridge.
             * Normally seen as display in I/O Registry.
             */
            Device (GFX0)
            {
                Name (_ADR, Zero)  // _ADR: Address
            }
        }
    }
}

So instead of stopping at 1 BRG0, you would create 3 more addresses, then finally reach your GFX0.

Then again, I know nothing about coding or assembly language, so I have no idea if this would work.

Ted
 
Last edited:
Joined
Oct 20, 2021
Messages
38
Motherboard
Apple MacBookPro16,1 - 1715.40.15.0.0 - OpenCore
CPU
i9-9980HK
Graphics
UHD 630 + Radeon Pro 5500M
Mac
  1. MacBook Air
  2. MacBook Pro
Mobile Phone
  1. iOS
Hi @WrathOfThePast

Yes, your device-id should be <BF730000>. If it is showing <AF730000> is isn't being correctly spoofed.

I think the problem is with the three extra pci-bridges that we don't have using an internal dGPU. You'll have to get some help with the SSDT on assigning the path. The SSDT should rename the pci-bridges. That's what the stock SSDT-BRG0.aml does. If we didn't have that, the path would be PCI0.PEG0.PEGP.pci-bridge.GFX0, and the device wouldn't be spoofed correctly. What the SSDT does is it assigns BRG0 to the card's "pci-bridge".

I think the issue is that the eGPU has 3 more pci-bridges. What I would try is to build off the SSDT and keep doing nested Devices.

Code:
DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000)
{
    External (_SB_.PCI0.PEG0.PEGP, DeviceObj)

    Scope (\_SB.PCI0.PEG0.PEGP)
    {
        /*
         * This is a PCI bridge device present on PEGP.
         * Normally seen as pci-bridge in I/O Registry.
         */
        Device (BRG0)
        {
            Name (_ADR, Zero)

            /*
             * This is an actual GPU device present on the bridge.
             * Normally seen as display in I/O Registry.
             */
            Device (GFX0)
            {
                Name (_ADR, Zero)  // _ADR: Address
            }
        }
    }
}

So instead of stopping at 1 BRG0, you would create 3 more addresses, then finally reach your GFX0.

Then again, I know nothing about coding or assembly language, so I have no idea if this would work.

Ted
1. Wouldn't my existing dGPU be causing an issue since it's assigned "GFX0"? Should I edit the SSDT to say "GFX1"?

2. Would the first nested PCI-bridge be "BRG1" since the first Pci-bridge is "[email protected]"?

On a side note, I figured out that I don't need the Kryptonite.kext as I have a Thunderbolt 3 mac (still useful since it strips down unnecessary OpenCore components for genuine macs & provides the latest lilu kext)... I got ride of the kext & removed its entry and boot-args from config.plist. Furthermore, I got rid of the -lilubeta boot-arg since I'm not on a beta. This all should hopefully make this easier to figure out.
 
Joined
May 29, 2012
Messages
840
Motherboard
Gigabyte Z390 Gaming X
CPU
i9-9900K
Graphics
6900XT
Mac
  1. iMac
Classic Mac
  1. LC
  2. Power Mac
  3. PowerBook
Mobile Phone
  1. iOS
1. Wouldn't my existing dGPU be causing an issue since it's assigned "GFX0"? Should I edit the SSDT to say "GFX1"?

2. Would the first nested PCI-bridge be "BRG1" since the first Pci-bridge is "[email protected]"?

On a side note, I figured out that I don't need the Kryptonite.kext as I have a Thunderbolt 3 mac (still useful since it strips down unnecessary OpenCore components for genuine macs & provides the latest lilu kext)... I got ride of the kext & removed its entry and boot-args from config.plist. Furthermore, I got rid of the -lilubeta boot-arg since I'm not on a beta. This all should hopefully make this easier to figure out.

I have no idea!! :(

I just know the basic concept if you try to plug a 6900XT 73AF into your hackintosh, and how to spoof the device in that context.

The eGPU looks more complicated and I don't want to give you the wrong advice. It sounds like you are on the right path.

Did you post a screenshot of your IORegistryExplorer? Do a search for "GFX" and see what that gives you. Maybe someone with a better understanding of assembly language can jump in and help
 

Gigamaxx

Moderator
Joined
May 15, 2016
Messages
6,557
Motherboard
GIGABYTE X470 Arous Gaming 7 WiFi
CPU
Ryzen R9 3900X
Graphics
RX 480
Mac
  1. iMac
It's not spoofing the device ID... the bootloader is working though.

I do not... the bootloader is working & there's no kernel panics, but the device ID hasn't been successfully spoofed... I have three theories on what could be wrong:

"DeviceProperties/Add" on config.plist:

1. Is the "device_id" supposed to be "<BF730000>" or the value found for "display" in IORegistryExplorer, "<AF 73 00 00>"? I assumed the former.

2. "PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)" is longer than any other I saw in this thread... should the three "Pci(0x0,0x0)"s be there?

SSDT:
3. In IORegistryExplorer, I noticed my existing dGPU (Radeon Pro 5500M) has GFX0. For my SSDT, Should I change "GFX0" to "GFX1" on line 34?
"PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0) try that. If IOReg shows GFX1 for the 6900XTthen yes try that.

Here's a good version of IOReg. Post a screenshot of the card please.
 

Attachments

  • IORegistryExplorer.zip
    266.9 KB · Views: 39
Top