Contribute
Register

[Success] AMD RX6000 Series working in macOS

I'm one of the unlucky guys who got a RX 6700 XT, which is not supported by macOS. I dual boot Windows (for gaming) and macOS (for work). Thus, I also bought a secondary GPU just for macOS a RX 560. Back then (in March 2021), it was the only option. Now with the introduction of the 7900 XT in Germany, the GPU prices are significantly dropping:

RX 6600 XT: 265€
RX 6800 XT: 600€
RX 6900 XT: 690€
Bought a RX 6900 XT for 630€, added agdpmod=pikera, works like charm.
 
After months reading opinions, I finally took the plunge and bought an Asrock RX6600 (the cheapest card I could find these days). It arrived this morning, and I spent the day playing with it under both Win7 and OSX.

For the record, the transition from my previous card was not as flawless as depicted. :sick:
To make it work under Monterrey 12.6 I had to make all these changes to my boot.plist:
  • - add "agdpmod=pikera"

  • - remove "-v"

  • - change
AppleDebug = False​
ApplePanic = False​
DisableWatchDog = True​
Target = 0​
The removal of the "verbose" boot mode is particularly inconvenient to my liking, but I had no choice. It was booting to a black screen without it. :banghead:
Like many others, I was initiially shocked because the fans simply don't even spin during office desktop usage in Win7. So it's a semi-fanless card ! :D
Tomorrow I will try the recommended "RadeonSensor" app.

My mobo: Asus Z97M-plus (Haswell).
 
Last edited:
After months reading opinions, I finally took the plunge and bought an Asrock RX6600 (the cheapest card I could find these days). It arrived this morning, and I spent the day playing with it under both Win7 and OSX.

For the record, the transition from my previous card was not as flawless as depicted. :sick:
To make it work under Monterrey 12.6 I had to make all these changes to my boot.plist:
  • - add "agdpmod=pikera"

  • - remove "-v"

  • - change
AppleDebug = False​
ApplePanic = False​
DisableWatchDog = True​
Target = 0​
The removal of the "verbose" boot mode is particularly inconvenient to my liking, but I had no choice. It was booting to a black screen without it. :banghead:
Like many others, I was initiially shocked because the fans simply don't even spin during office desktop usage in Win7. So it's a semi-fanless card ! :D
Tomorrow I will try the recommended "RadeonSensor" app.

My mobo: Asus Z97M-plus (Haswell).

I agree with you 100% when I just remove "-v" from boot-arg I never get black screen again. (Nobody believe that)
My specs:
Msi z390 edge, i7-8700k, Rx6600, Fenvi T919, Macpro7.1 without WEG kext.
 
Last edited:
Hi.
I need help.
I have recently replaced my RX580 with an RX6800 Sapphire Pulse. With my RX580 everything worked fine (Ventura 13.3.1), but I have noticed that with the RX6800, I have a strange behavior. The can boot normally and all is working. Only if I turn the monitor off and on the system crashes and the WindowsServer process crashes. In the same way, if I change the input of the monitor from DP to HDMI, the same thing happens. However, if I put the computer to sleep and start it, it works fine.
You know that it may be due?
 
Your RX 6900XT is at the following PCI path:

_SB.PC02.BR2A.SL05.PCI-Bridge@0.GFX0

But only first first 4 parts of the path are defined in the DSDT. The two parts in bold must be created by the SSDT in order to reach the correct final endpoint (the GPU). Only then can we change the Device ID.

The process is described in this post:
I've made the necessary changes and attached both the AML and DSL files. The DSL file should have all the comments intact.
Hi @CaseySJ I am trying to spoof 73AF 6900XT on a cMP5,1. If spoofing is to BF the Mac reboots. If the spoofing is to AE the SSDT loads, but the driver does not load. I tried spoofing 6950 to BF on cMP5,1 and MP7,1 before and the Macs just go to an endless loop. Here is the IOregistry after spoofing to AE.
 

Attachments

  • MPNE293OX_v3.zip
    7.3 MB · Views: 54
Hi @CaseySJ I am trying to spoof 73AF 6900XT on a cMP5,1. If spoofing is to BF the Mac reboots. If the spoofing is to AE the SSDT loads, but the driver does not load. I tried spoofing 6950 to BF on cMP5,1 and MP7,1 before and the Macs just go to an endless loop. Here is the IOregistry after spoofing to AE.
Hello @zirkaiva,

Some questions:
  • Are you using WhateverGreen?
  • If so, have you tried simply creating a Device Property and setting device-id to BF730000?
 
Hello @zirkaiva,

Some questions:
  • Are you using WhateverGreen?
  • If so, have you tried simply creating a Device Property and setting device-id to BF730000?
Yes I tried that before. BF73 just reboots the real Macs. No problem with the Hackintoshes though. Maybe it needs compatible property?
 
I was able to boot with my XTXH variant (ASROCK RX 6900 XT OC Formula) but I have been unsuccessful all day at getting hardware acceleration working. I'm not great with SSDTs but tried a half dozen variants for GPU spoofing I found linked here and elsewhere.

From MacOS, I get these:

gfxutil:
Code:
/PC01@0/BR1A@0/SL01@0/pci-bridge@0/display@0 = PciRoot(0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
IOService:
Code:
/AppleACPIPlatformExpert/PC01@0/AppleACPIPCI/BR1A@0/IOPP/SL01@0/IOPP/pci-bridge@0/IOPP/display@0

gfxutil:
Code:
/PC01@0/BR1A@0/SL01@0/pci-bridge@0/pci1002,ab28@0,1 = PciRoot(0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x1)
IOService:
Code:
/AppleACPIPlatformExpert/PC01@0/AppleACPIPCI/BR1A@0/IOPP/SL01@0/IOPP/pci-bridge@0/IOPP/pci1002,ab28@0,1

From Windows, I get these:
Code:
ACPI(_SB_)#ACPI(PC01)#ACPI(BR1A)#ACPI(SL01)#PCI(0000)#PCI(0000)
ACPI(_SB_)#ACPI(PC01)#ACPI(BR1A)#ACPI(PEGP)#PCI(0000)#PCI(0000)


So that's my first hangup - I get two strings instead of one for my card. I think the 2nd represents HDMI audio? FWIW, the HDMI audio is a static garbled mess at the moment... which is odd because it kind of sounded ok the first hour of troubleshooting this.

I'm not sure what to put in the various lines in my dsl file. Most recently:
Code:
DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000)
{
    External (_SB_.PC01.BR1A.SL01, DeviceObj)

    Scope (_SB.PC01.BR1A.SL01)
    {
        Device (BRG0)
        {
            Name (_ADR, Zero)

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

Device (BRG0) <- I believe this absorbs "pci-bridge@0"?
Device (GFX0) <- likewise this absorbs "display@0"?

I have the compiled aml file enabled in config.plist along with the device-id (see screenshot) and appropriate boot args: -v npci=0x2000 keepsyms=1 alcid=1 debug=0x100 agdpmod=pikera -TSC_sync_margin=0

Closest I've gotten is causing the screen to go black on load or, as is the current case, instant reboot when the login screen would otherwise appear. I feel like I'm missing something.
did you solve your problem ? I got the same problem
 
Congrats on your VBIOS success @byteminer



It is possible to do this via Acidanthera tools. Not OpenCore, but WhateverGreen, plus an SSDT. I've done it myself in the past. You can specify an "ATY,bin_image" block on the GPU device and this defines the VBIOS used by the macOS GPU driver. This is by far the safest method, as it requires no on-card flashing, and is entirely configured in software. Therefore no chance of bricking the card - if it fails, just boot with a different config that doesn't load that SSDT.

Attached is a DSL that demonstrates the general syntax. It's not a complete working SSDT as I just extracted it from an old test DSDT I used a couple of years ago on my X58. But it shows the principle and should be straightforward to convert to an SSDT for the X299. The biggest challenge I found was generating a text version of the 64kb of hexadecimal that represents the VBIOS, and in the right format (each byte separated by commas). I think I did this just by copying the hex representation out of Hexfiend into a Visual Studio Code file, then used a regular expression to convert the text to the format needed by the SSDT.
This deserves more attention. To convert string to HEX ACPI style this can be used:
Code:
printf "113-C944A1XT-014" | xxd -u -c 8 -g 1 -i
Result:
Code:
0X31, 0X31, 0X33, 0X2D, 0X43, 0X39, 0X34, 0X34,
0X41, 0X31, 0X58, 0X54, 0X2D, 0X30, 0X31, 0X34

Unfortunately RX 6900 XT does not use
"ATY,bin_image" block
 
Last edited:
Back
Top