[GUIDE] Getting R9 290/390 (non-X) to work on Sierra (10.12) AND High Sierra (10.13)

I’ve spent the last few days looking up some information regarding the status of using an R9 390 GPU on macOS Sierra 10.12. Now I have been successful, I am going to tell you all how I did it, as the web seems to lack any proper documentation or support for the R9 390 GPU on Sierra. (or the R9 290, for that matter).

Please note: This guide is for all NON-X cards, meaning it does not apply to any R9 290X or 390X GPUs. Furthermore, I cannot verify this works for any other GPU vendor (like MSI) but feel free to let me know.

There are various methods out there for the 390X/290X cards, but for users with the NON-X cards, things have been hard. Please note, this has not been tested to work on the 290 cards, but judging from the drivers from Yosemite and El Capitan, I assume this guide works for 290 users too. (not yet confirmed, though.)

Special thanks to ‘Loco Massa’ for his helpful guide! http://www.insanelymac.com/forum/topic/315027-amd-r9-390-framebuffer-issue-on-1012-sierra/
Some of my guide consists of the method he wrote, so please check his guide out too!

**READ CAREFULLY- This guide is as simple as it can possibly be, but don’t miss anything out!**

Before explaining my method, you might want to know these things:

  • As of now, this fix only allows you to use ONE MONITOR via HDMI or DVI.
  • DisplayPort support is broken, from what I’ve tested.
  • Other GPU’s from other manufacturers may have different results.
  • This was tested on the PowerColor PCS+ R9 390 (8GB)

In order for this to work, your BIOS MUST BE SET to use the iGPU (Intel Integrated Graphics) upon boot with 128m shared memory, so macOS can initialise the main 390 GPU while loading. For some users, this might result in having a totally *blank* boot sequence, and the display will only begin to work when at the Login Screen. To be able to see the boot sequence from the BIOS up until Clover UEFI, I would recommend taking advantage of your monitors 2nd input (if available) and connecting your monitor to BOTH your 390 and your onboard iGPU (2 cables, one monitor) which will enable you to switch to the 390 GPU when macOS has finally booted, when the iGPU has auto-disabled itself. Or, simply unplug your monitor from the iGPU and into the 390 GPU when you think macOS has loaded. Either way, your 390 MUST NOT be initialised at all by the BIOS, or else this fix does not work.

Now, here’s the method:

  1. Open the Clover ‘config.plist’ with TextEdit or Clover Configurator.
  2. ENABLE ‘InjectATI’.
  3. Set the FBName to Baladi.
  4. Save the config, then exit.
  5. Perform this command to gain access to AMD8000Controller.kext. (remember to replace <username> with your actual username, without brackets):
    sudo chown <Username> /System/Library/Extensions/AMD8000Controller.kext/Contents/MacOs/AMD8000Controller
  6. Open AMD8000Controller.kext/Contents/MacOs/AMD8000Controller with a Hex Editor like Hex Fiend.
    sudo open -a "Hex Fiend" /System/Library/Extensions/AMD8000Controller.kext/Contents/MacOs/AMD8000Controller
  7. Find these hex values using the Find tool, aka, Command+F:
    00040000 04030000 00010300 00000000 12040303 00000000 00040000 04030000 00010100 00000000 11020101 00000000 00040000 04030000 00010200 00000000 21030202 00000000 00040000 04030000 00010400 00000000 22050404 00000000 00040000 04030000 00010500 00000000 10000505 00000000 00040000 04030000 00010600 00000000 20010606 00000000
  8. Replace that hex chunk with these values:
    00080000 04020000 00010101 00000000 22050403 00000000 00040000 04030000 00010200 00000000 12040101 00000000 00040000 04030000 00010300 00000000 10000205 00000000 00040000 04030000 00010400 00000000 20010306 00000000 04000000 14020000 00010500 00000000 11020504 00000000 00040000 04030000 00010600 00000000 20010606 00000000
  9. Save the file.
  10. Fix the file’s permissions so Root can access it:
    sudo chown 0:0 /System/Library/Extensions/AMD8000Controller.kext/Contents/MacOs/AMD8000Controller
  11. Open AMDRadeonX4000.kext
    sudo nano /System/Library/Extensions/AMDRadeonX4000.kext/Contents/Info.plist
  12. Find the following text:
    <key>IOPCIMatch</key> <string>0x67B01002</string>
  13. Add in the ID: 0x67B11002 so it looks like this:
    <key>IOPCIMatch</key> <string>0x67B01002 0x67B11002</string>
  14. Save the file by pressing Control+O and then press Enter.
  15. Exit by pressing Control+X
  16. Perform a similar process for AMD8000Controller.kext- open it.
    sudo nano /System/Library/Extensions/AMD8000Controller.kext/Contents/Info.plist
  17. Find this text:
    <string>AMD8000Controller</string> <key>IOPCIMatch</key> <string>0x45001002 0x46001002 0x66401002 0x66411002 0x66461002 0x66471002 0x66501002 0x66511002 0x665C1002 0x665D1002 0x67B01002</string>
  18. Add 0x67B11002 so it looks like this:
    <string>AMD8000Controller</string> <key>IOPCIMatch</key> <string>0x45001002 0x46001002 0x66401002 0x66411002 0x66461002 0x66471002 0x66501002 0x66511002 0x665C1002 0x665D1002 0x67B01002 0x67B11002</string>
  19. Save the file by pressing Control+O and then press Enter.
  20. Exit by pressing Control+X
  21. Delete the prelinked-kernel cache:
    sudo rm /System/Library/PrelinkedKernels/prelinkedkernel
  22. Delete the Kernel Cache:Code:
    sudo rm /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache
  23. Rebuild the prelinked-kernel cache:
    sudo kextcache -system-prelinked-kernel
  24. Rebuild the kernel cache:
    sudo kextcache -system-caches
  25. Reboot, and hope that it’s all working!

Just to remind you, in order for this to work, your BIOS MUST BE SET to use the iGPU (Intel Integrated Graphics) upon boot with 128m shared memory, so macOS can initialise the main 390 GPU while loading. For some users, this might result in having a totally *blank* boot sequence, and the display will only begin to work when at the Login Screen.

Enjoy!

Originally, this guide was created in my TonyMacx86 post:
https://www.tonymacx86.com/threads/guide-getting-r9-290-390-non-x-to-work-on-sierra-10-12-and-high-sierra-10-13.210574/

One more thing to note (which was not mentioned in the TonyMacx86 guide): In terms of getting this to work on High Sierra (10.13), I do not know if it’s possible, BUT it worked on 10.13.1 (still High Sierra).

On High Sierra, the hex modification is not needed (at least on 10.13.1) and AMD8000Controller.kext may not be needed, but you should still go into your Clover Config and InjectATI, set FBname to Baladi, and make sure the FakeID is set to 0x67B11002. (Essentially, follow the above guide up to Step 5, and then you should be OK, as long as the FakeID is set.)

GOOD NEWS TO NOTE: On High Sierra (10.13.1), all 3 screens seem to work on my system, and the system can be booted straight from the R9 390 rather than using the iGPU (Intel Graphics). (The above screen-swap fix is aimed purely at Sierra.)

(The same settings seem to work when booting El Capitan (10.11), if that is useful information for anyone.)

I do not know if this works on versions between 10.13.2 and 10.13.5, but please let me know if you have tried this. So far, no fix has been possible for Mojave users, and Mojave (10.14.3) doesn’t even want to install on my machine when the R9 390 is present.

Let’s hope Catalina (10.15) will support our GPUs once more. Please comment your questions/queries.