Contribute
Register

[Success] AMD RX6000 Series working in macOS

Hahaha, never underestimate a dedicated mad man! It friggin' works!
success.png
 
This is a VBIOS flash.
Turns out that there is currently no way to flash self-modified VBIOS versions because we need a version of atiflash which ignores the RSA check. Both the official version and the one from IgorsLab still have this check in this particular configuration, which makes it impossible to flash anything but official AMD-sanctioned VBIOS's.

So what I did instead is use the first VBIOS slot on my card to flash down to the VBIOS of a regular Liquid Devil (sans the "Ultimate").

I can now use this VBIOS to boot into and use this card in macOS like a regular Liquid Devil. Meanwhile I can reboot and flip the VBIOS switch to the fully-unlocked one in Windows for gaming.

While having the unlocked VBIOS in macOS would've been nice, this is a compromise I can live with. And who knows, if Apple in the future ever adds native support for the XTXH versions, I can just reflash the original one and be golden.
 
Hahaha, never underestimate a dedicated mad man! It friggin' works!
If we haven't already welcomed you into the Society of Mad Scientists, consider yourself fully inducted!
 
I believe you may have confused what these arguments do here.
According to the help text, invoking atiflash with -pa and -padevid governs which devices the VBIOS is written to.
It does not, however, modify anything about the card itself, as these arguments are simply selectors so you can more easily target which devices you want to flash.
To modify anything inside the VBIOS, you will still need to hex-edit it (or use a GUI editor provided some kind soul has already reverse-engineered the various settings).

Invoking this with an XTXH card in the system will not flash anything, because -padevid=73bf targets cards with a different ID (specifically, the "normal" 6900 XT's). If anything, it should be set to 73af, which will actually target the correct card.

Unfortunately however, ATIFlash 3.15 is the latest version that is currently available. It is also the case that 3.15 does not support the XTXH cards yet, only the regular 6900 XT and its smaller brethren. As such, even though I already have the modified VBIOS, I am currently unable to flash it.

This is also partially due to the fact that none of the public versions of ATIFlash provide the "-f" flag (which forces flashing even if the card is unknown). Unless somebody here has access to a version of ATIFlash with this flag and is willing to share it with me, this is as far as I can go for the time being.

As soon as a new version of ATIFlash becomes available, I'll try the VBIOS mod.

EDIT: It appears that the linux version of this tool *may* allow force flashing but the Windows version doesn't. Alas, it seems the Linux version hasn't been updated since August 2019, so I'm not sure whether this actually supports the new cards at all.
I will set up a Linux Live USB and I'll give that a shot next.
I flashed RX 6800 XT in ubuntu few times.
 
Hahaha, never underestimate a dedicated mad man! It friggin' works!
View attachment 518501
So you needed linux access to this? or what exactly is step by step. My 6900Xt cost 2500 after tax and has been sitting on floor since it arrived. makes me sad. I'm ready to put it to use. It's also red devil, just the ultimate not the liquid ultimate. Also dual bios so I'll likely not screw with the performance/OC bios and instead be happy to erase the "quiet" bios it has on it.

Doesn't OC have some bios replacement tech in it? I wonder if there is still a software approach to this.
 
So you needed linux access to this? or what exactly is step by step. My 6900Xt cost 2500 after tax and has been sitting on floor since it arrived. makes me sad. I'm ready to put it to use. It's also red devil, just the ultimate not the liquid ultimate. Also dual bios so I'll likely not screw with the performance/OC bios and instead be happy to erase the "quiet" bios it has on it.

Doesn't OC have some bios replacement tech in it? I wonder if there is still a software approach to this.
I'm not aware of OpenCore supporting any kind of VBIOS shenanigans. It would be rather concerning if it did, imho.
Flashing/modifying a VBIOS should be a rather deliberate act in all cases.

Anyway, to replicate my results you need:
  • A live USB stick with Ubuntu on it (or any other Linux distro you fancy)
  • A second USB stick formatted as FAT to transfer files with between both OS's (optional)
  • The ATIFlash Linux version from TechPowerUP
  • The VBIOS of a supported card matching as closely as possible to the one you actually have from the VBIOS collection at TechPowerUP
    • I think most would work, but it's best to remain as close as possible
    • Typically you would choose the VBIOS of the regular 6900 XT version of the XTXH card you have. For me I downgraded from the Liquid Devil Ultimate to the regular Liquid Devil so there would be as few differences as possible
Optionally, if you want to create your own backup of the existing VBIOS, you can do this via GPU-Z on Windows (which you can get here) or via ATIFlash directly. I have not tried extracting the VBIOS via ATIFlash, so for that part you'd be on your own.
On the plus side, most VBIOS's are already uploaded to TPU's database, so worst case you can still pull a pristine copy from there.

Flashing the card is then relatively simple:
  • Plug in the Linux live USB stick
  • Select the Linux distro in OpenCore (may be named "ESP (External)" or something along those lines) or alternatively boot directly off the stick using the BIOS startup picker
  • Get all the files (ATIFlash and the VBIOS) copied to the Linux system. This is where I used a second USB stick which I had prepped beforehand. Otherwise you need to obtain these files via the web browser in the live system, which is a bit less convenient
  • Open a terminal in the directory with the gathered files
  • Run "sudo ./amdvbflash -ai" to list the existing GPU's in the system
  • From the list, find the 6900 XT and note the VGA number (starts at 0 and goes up in increments of 1)
  • Run "sudo ./amdvbflash -f -p <your VGA number> <name of the VBIOS>" to flash the new VBIOS
    • In my case this was "sudo ./amdvbflash -f -p 1 liquid-devil.rom"
  • Wait until the flashing process is done. This normally takes just a few seconds
  • Shut down, remove the live USB stick and the optional data USB stick
  • Boot into macOS
  • You're done!
As a final step you may need to double-check that you disabled any previous stuff you may have attempted, such as ID spoofing, FakePCIID.kext being loaded, SSDT's that mess with the GPU's etc.

Naturally I must warn that flashing a VBIOS to a GPU (and flashing stuff in general) can be a risky process if you mess up. Worst case this can brick your VBIOS slot. This can be recovered from but is painful and should be avoided.
I don't take any responsibility for what happens if you attempt this process. Just because it worked for me does not mean it will work for anybody else. That just as a disclaimer of sorts.

I have only tried this process while running off my RX 580. The 6900 XT was not the main display driver, in case it would turn black, which would make recovering much harder. I'd strongly advise using a second GPU during this process for safety. I have not tried this process with the 6900 XT being the only GPU in the system.

The output of the program may look like this:
flashing.jpg
 
Last edited:
Nice. Last time I flashed a Radeon card was the 560, to move from XFX bios to Sapphire, so macOS could boot and not immediately panic. Interesting that linux is needed to complete the flash.
 
Back
Top