Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

nikey22

macrumors regular
Original poster
Dec 3, 2019
200
1,043
ON, Canada
W7170M_header_macrumors1.png


This thread will chronicle my efforts to get the AMD card working on these class machines.

in the PC world, the AMD FirePro W7170M is a high-end graphics card for mobile workstations. It is based on the same Tonga-chip as the AMD Radeon R9 M390X and has comperable clock speeds. Therefore, the card is based on the third generation of the GCN architecture (GCN 1.2) and supports DirectX 12 (FL 12_0).

I will concentrate on the older iMacs as the 2011 iMacs have an issue with the NVRAM reboot causing a "black screen". I will continue to post in the 2011 thread as new data and discoveries emerge to make it more compatible there.

Tested Machines:
iMac (27-inch, Mid 2010)
iMac (27-inch, Late 2009)
iMac (27-inch, Late 2011) fails reboot

MacOS Integration:
This GPU-type is actually used internally in a iMac (Retina 5K, 27-inch, Late 2015), model Identifier: iMac17,1, and therefore has native MacOS support! It uses the AMD9000Controller.kext and the AMDTongaGraphicsAcccelerator - RadeonX4000.kext which also natively runs in MacOS. The AMDMTLBronzeDriver is used to initialize its Metal capability. The default framebuffer is in use: RadeonFrameBuffer:

AMD9000Controller_log.png


The device ID for my particular card is 0x6921-1002, as you can see it is already natively supported.


SSH Access:
The first thing we do before any reverse engineering, is to see if the card is electrically detected by the machine and initializes at bootup:

Code:
Adapter  0    SEG=0000, BN=01, DN=00, PCIID=69211002, SSID=69211002)
    Asic Family        :  Tonga (Slave)
    Flash Type         :  MX25L1005   (128 KB)
    Product Name       :  DELL Miramar Amethyst XTGL A1 G5 4GB 128Mx32 300e/150m MXM (OPM)
    Bios Config File   :  BR46629.001 
    Bios P/N           :  P/N Not Available
    Bios Version       :  015.048.000.069.046629
    Bios Date          :  11/13/15,01:56:3
    ROM Image Type     :  Hybrid Images
    ROM Image Details  :
        Image[0]: Size(65536 Bytes), Type(Legacy Image)        <-- legacy vbios recognized!
        Image[1]: Size(61440 Bytes), Type(EFI Image)        <-- PCI option ROM/UEFI recognized!
We can see here the base Vbios is a DELL BR46629.001 revision


vBios Mods:
The vbios is the typical ATOMBIOS used by AMD which is limited by its BAR to 128kb. This is just enough space for the header information, vga_bootloader info, data & command tables, and finally a modest sized GOP. Unfortunately a Mac_GOP will not fit within the 128Kb size limitation. So this vBios mod depends on OCLP for full use:
- I modified the object table to work with our current iMac models: eDP:14, GraphicObjectsID:2021, I2CID:92, SenseID:03.
- I increased the firmwareinfo bootupVDDCIVoltage to 950mV (I wonder if this will help integration into the 2011 models?)
- I turned on the bit that is responsible for firmware posting, 0x403e changed to 0x403f
- I did NOT use an IM17,1 header to trick AppleGraphicsPolicy into accepting it as native, because OCLP takes care of this for us.
- If in the future we integrate this with a EFI Mac_GOP, I will add the correct header information. For now, the DELL original works perfect.
- I used a PC UEFI GOP (AMD GOP 1.69.0.15.50-signature removed) as our GOP-of-choice to communicate with OC and/or OCLP, so you will not get a native MacOS boot picker screen, but instead the OpenCore one.

OpenCore (OCLP) Mods:
Thank you to @khronokernel for his incredible work on this.
Tested on OCLP 0.3.3, but should work with latest release:
In your hidden EFI/OC folder, you will need to modify the config.plist
locate <key>DeviceProperties</key>, modify <key>PciRoot (0x0)/Pci(0x3,0x0)/Pci (0x0, 0x0)</key>
as previously stated in other posts, thank you @Ausdauersportler for his exploration of these:
Code:
<dict>
<key>rebuild-device-tree</key>
<integer>1</integer>
<key>agdpmod</key>
<string>pikera</string>
<key>CAIL,CAIL_DisableDrmdmaPowerGating</key>
<data>AQAAAA==</data>
<key>CAIL,CAIL_DisableGfxCGPowerGating</key>
<data>AQAAAA==</data>
<key>CAIL,CAIL_DisableUVDPowerGating</key>
<data>AQAAAA==</data>
<key>CAIL,CAIL_DisableVCEPowerGating</key>
<data>AQAAAA==</data>
</dict>

This ROM should be compatible with the following VRAMs:
Hynix, H5GC4H24AJR (my test card)
Samsung, K4G41325FC
Micron, EDW4032BABG

Volt Mods:
I used the following reference to make adjustments to the power play table:
usVddgfxoffset value in all Tonga/Amethyst roms is B4FF (FFB4 = 65460), this offset value looks like a dynamic value and therefore it appears that Tonga has "Dynamic VDDCI".

From my experience, GDDR5 due to it's spec of 1.5V MVDDC wouldn't work past 1375MHz at 11xx mV. So make sure not to push it.
I had to modify the PolarisBiosEditor to work with these GNC Amethyst based cards; I will be linking the project and my progress for this soon. You can see that I've had to add a "Low", "Medium" and "High" values for the GPU voltages. This is different that previous versions of these GNC cards:
AmethystBiosEditor_screenshot.png


MacOS Testing:
-High Sierra (used for testing)
-It will likely show up as "AMD R9 xxx" with certain versions of OCLP (Lilu+Whatevergreen). This however does not affect functioning, it is only cosmetic
-I have not tested this on higher versions of MacOS; But I see no reason to believe it won't work
-I was able to get it recognized in Windows 7 BootCamp partition; I have not tried Windows 10
-There is full control of brightness natively
-sleep works okay
-reboot works okay
- I was able to get the secondary display working as well:
- temp monitoring is not available (I use macFans)

W7170M_corei3.png


Displays_W7170M.png


Windows 7 Bootcamp:
- uninstall the driver that windows 7 bootcamp loads up automatically by going into Device Manager/Display Adapters
- It will go to 640x800 bit mode once uninstalled
- run the following application from the AMD.com website: radeon-software-adrenalin-2020-22.2.3-minimalsetup-220224_web; It will want to install R9 M390X, this is correct.
- it will install drivers and full software in the C:\AMD folder.
- it will asked to restart the machine
- you will ofcourse need to add the EnableBrightnessControl =1 and RMBrightnessControlFlags 0x400 to the:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video\{6B6D9927-652B-4CEB-9650-5A45EE49FDF0} ; It has the most entries: 0000, 0001, 0002, 0003, 0004, 0005
- now if you go to Display Adapters, you will see: "AMD Radeon (TM) R9 M390X", this is the correct driver set for this video card:

R9_M390X_850Mhz_AMD_drivers_gpuz.gif


Performance:
The scores are not very impressive, because I have a stock core i3 that I tested it on. The FPS became 60s average when I was initially testing it on the 2011 iMac - corei7 before discovering the nvram issue:

W7170M_Valley_Scores.png


I am able to play ASTRONEER® on Steam comfortably, even on a corei3 computer!
I would still consider this card experimental, but I have been using it now for a few months without problems.
I'm unsure of the price, but usually they increase once word gets out of a vbios that is MacOS compatible.
I will continue to update this post as new ideas emerge.

I'll thank the usual suspects: @Ausdauersportler, @internetzel , @m0bil, @dfranetic, @khronokernel and others for their ideas and testing.
Enjoy;)

"This is Insanely Great!"
-Steve Jobs
 

Attachments

  • W7170M_imac.zip
    99.9 KB · Views: 275
Last edited:
@miticoandre
please send me the original vbios if you still have it. I will make the modifications for you. Send me a picture of your card front/back with all stickers.
Samsung K4G80325FB, very interesting! you might the 8Gb version. I will inspect the vbios.
I was about to make this vram upgrade modification to the card myself with these:

K4G80325FB-DDR5-8G-memory.png



Thanks!
 
Last edited:
  • Like
Reactions: Nguyen Duc Hieu
Sorry i’m confused from the s7100x is equal w7170m and s7100x but the memory is different rx580 mount vram equal s7100x K4G80325FB
 

Attachments

  • F1C8A1A3-BF7E-424F-B024-5F9A8E95FD26.jpeg
    F1C8A1A3-BF7E-424F-B024-5F9A8E95FD26.jpeg
    189.9 KB · Views: 282
  • 15608789-679B-46D4-B447-69492C6C3589.jpeg
    15608789-679B-46D4-B447-69492C6C3589.jpeg
    246.8 KB · Views: 257
  • 565537A2-3247-4D8A-8215-F0BE49BC5074.jpeg
    565537A2-3247-4D8A-8215-F0BE49BC5074.jpeg
    476.2 KB · Views: 263
  • Tonga 2.zip
    99.4 KB · Views: 167
Yes, these are sister cards, the S7100X is the 8Gb version, the W7170M is the 4Gb version of the R9 390X/395X

I'm working on the modification now.
You have a non-workstation vbios which is excellent. This is what we need to get this to work.
The workstation vbios is 512KB in size and has some kind of ECC vram in its GPU controller code with redundancy and is very tricky to work with.
The problem with this card is also that it has 6929 as the ID, this is not part of the MacOS AMD9000Controller.kext and therefore you will not get acceleration:

AMD9000Controller_log.png


No problem, we can spoof it to use: 0x69391002 if we have to, which is part of the accelerator package. But first let's see if we can get it working with 0x6929 base ID.

I will try to put together a rom with the following parameters:
- patched OBJ table
- stock vram table for s7100x K4G80325FB
- manual FF to 00 bug fix for Resize app, @ offset 0000255
- GPUControlsBL changed to "1"
- your .ROM chip shows: 25Q41BT, which means we are dealing with a 512Kb flash SPI, but your dump file is only 128Kb. Can you explain?
 
Last edited:
A warning about the S7100X:

Flashing a vBIOS without the data beyond the 128K limit on the S7100X fails in any case. I spent literally days on it.
Additionally amdvbflash does not work reliable. Had to use a CH341A clip in all of my successful attempts to test different a vBIOS.

The iMac simply fails to boot without any possibility to access the system (no keyboard, no remote access, no boot).
 
Good point,
but I think his original .ROM from the card was only 128K. I think he just dumped it from the card.
It is possible that this card has both a "server" rom variant and a "desktop" rom variant

@miticoandre, can you confirm: did you dump the rom directly from your card?

@Ausdauersportler
I think you might have the same card that he has but with a bigger ROM chip.
 
Last edited:
i checked out with ch341a, is only 128kb
Good point,
but I think his original .ROM from the card was only 128K. I think he just dumped it from the card.
It is possible that this card has both a "server" rom variant and a "desktop" rom variant

@miticoandre, can you confirm: did you dump the rom directly from your card?

@Ausdauersportler
I think you might have the same card that he has but with a bigger ROM chip.
 
i checked out with ch341a, is only 128kb
Just try the vBIOS on your card. Last night I was not able to use it successfully, but your card might differ in a few details. Had to use the clip myself all the time, amdvbflash from Linux mostly could not access the chip or failed to write a usable image, really scary…
 
Just try the vBIOS on your card. Last night I was not able to use it successfully, but your card might differ in a few details. Had to use the clip myself all the time, amdvbflash from Linux mostly could not access the chip or failed to write a usable image, really scary…
Ok wait for rom to send
 
i wanted to try s7100x on msi gt72 first as it is easier to extract MXM, but not boot black screen, and then try on imac 27 2011
 
In the picture, your card shows a SPI ROM chip that is 4Mbit (GD25Q41B), which means that usually roms that go on it are 512kb in size.
41: 4Mb density - 512Kb
21: 2Mb denisty - 256Kb

Yet, you have said that using a clip, you were able to extract only 128kb image? This is odd, but it is possible they could hold less and still function.
Can you please double check.
However, I will prepare a 128kb version of the ROM and see if it works:
S7100X_spi_rom.png
 
In the picture, your card shows a SPI ROM chip that is 4Mbit (GD25Q41B), which means that usually roms that go on it are 512kb in size.
41: 4Mb density - 512Kb
21: 2Mb denisty - 256Kb

Yet, you have said that using a clip, you were able to extract only 128kb image? This is odd, but it is possible they could hold less and still function.
Can you please double check.
However, I will prepare a 128kb version of the ROM and see if it works:
View attachment 1979326
Yes is only 128kb, wait my friend send bios on your s7100x
 
Let's put up both versions of the rom to test.
1st one, 128Kb
2nd one, 512Kb - Thank you to @Ausdauersportler for supplying extra code from 20000h onwards from his card. I wonder because this is a workstation card, maybe this code is error correction for the vram.


Good luck!
 

Attachments

  • miticoandre_S7100X_6939_403F_512kb.zip
    184.1 KB · Views: 160
  • miticoandre_S7100X_6939_403F.zip
    99.9 KB · Views: 164
In the picture, your card shows a SPI ROM chip that is 4Mbit (GD25Q41B), which means that usually roms that go on it are 512kb in size.
41: 4Mb density - 512Kb
21: 2Mb denisty - 256Kb

Yet, you have said that using a clip, you were able to extract only 128kb image? This is odd, but it is possible they could hold less and still function.
Can you please double check.
However, I will prepare a 128kb version of the ROM and see if it works:
In the picture, your card shows a SPI ROM chip that is 4Mbit (GD25Q41B), which means that usually roms that go on it are 512kb in size.
41: 4Mb density - 512Kb
21: 2Mb denisty - 256Kb

Yet, you have said that using a clip, you were able to extract only 128kb image? This is odd, but it is possible they could hold less and still function.
Can you please double check.
However, I will prepare a 128kb version of the ROM and see if it works:
View attachment 1979326
my friend sent BIOS is 128kb
 

Attachments

  • S7100x.zip
    100.9 KB · Views: 160
which ROM did you try @miticoandre? More information please.

as @Ausdauersportler mentioned, you need to have OCLP ready and you will get the OCLP boot screen.
He has tested a similarly modified ROM, the only problem remains is no brightness control.
Because it is a workstation card, you should try the 512kb version.
 
which ROM did you try @miticoandre? More information please.

as @Ausdauersportler mentioned, you need to have OCLP ready and you will get the OCLP boot screen.
He has tested a similarly modified ROM, the only problem remains is no brightness control.
Because it is a workstation card, you should try the 512kb version.
tested version 512kb, does not work, does not light up the screen
 
Hello nikey22,

I need too the Files for a S7100X,
And Thank You for the two files, I
Have downloaded for some minutes. :)

I will soon buy a S7100X and try on my
iMac 27 (mid2011) too, because my HD6970M
Don't work anymore, SHAME! To APPLE! Bad work.

I will try at first the 512Kb File, and will give You
A Feedback, if my iMac will work, Ok.

But I need to buy some more Hardware to flash
Your File, to the GC, so it will take some TIME!
For a Report, sorry.

Just wait, I will give a feedback.


Greetings

Joel Kind
 
Last edited:
@JoelKind
be aware of 2 issues:
#1. The S7100X while it may eventually work, is still an experimental card. It has the problem of no brightness control even with optimized OCLP settings. I haven't figured out why yet. It could be firmware issue or maybe hardware, more research is needed. I will be uploading hi-res images of the W7170M on this thread for analysis and comparison.

#2. You have a 2011 machine, these cards will NOT survive a reboot, a black screen will show. They cause a corruption in the nvram. This does NOT happen in 2009 or 2010 machines. More research is needed to ascertain why.
 
Last edited:
  • Like
Reactions: Ausdauersportler
Hi nikey22,
I just joined the forum hoping to share some information when I came across your post. I picked up a late 2009 27” for my daughter to play Roblox on. I just replaced the gpu with what was advertised as an 8GB WX7100. After installing it shows R9 xxx 4GB. The machine was running on High Sierra. I don’t think there was a boot screen. It was grey with no apple logo, and then went straight into High Sierra. The screen was on, but no backlight so I ran an external monitor. So I’ve done the hot wire mod with a switch and now have the internal screen. I’ve installed OC and upgraded to Big Suhr. Now unfortunately, I have no external monitor out functionality. So my question is do you think it is possible that this card can have native brightness and work without the internal screen hot wire mod? I have attached pics of the card and a snapshot of my computer info. Thank you, Aaron
452CAAC0-F0AE-479C-8C8F-1859B8BFD904.jpeg
88633BA9-E2F6-4ED6-9C63-F160B7817B7C.jpeg
D9302154-CAF1-4856-B98F-1B06D711E090.jpeg
2BBFA3CA-C75F-4837-AAD8-0987C4F41BB7.jpeg
 
Last edited:
Hi nikey22,
I just joined the forum hoping to share some information when I came across your post. I picked up a late 2009 27” for my daughter to play Roblox on. I just replaced the gpu with what was advertised as an 8GB WX7100. After installing it shows R9 xxx 4GB. The machine was running on High Sierra. I don’t think there was a boot screen. It was grey with no apple logo, and then went straight into High Sierra. The screen was on, but no backlight so I ran an external monitor. So I’ve done the hot wire mod with a switch and now have the internal screen. I’ve installed OC and upgraded to Big Suhr. Now unfortunately, I have no external monitor out functionality. So my question is do you think it is possible that this card can have native brightness and work without the internal screen hot wire mod? I have attached pics of the card and a snapshot of my computer info. Thank you, AaronView attachment 2012528
Switch off the wire mod and observe the boot phase. You have OpenCore installed through OCLP I guess. It should give you the OC emulated boot picker (which does not react on option/alt but ESC on boot, but OpenCore is mostly configured to show it automatically without any key pressed.

I have included a simple switch from normal mode to wire-mod direct connect to power supply. This way I can have both. After macOS booting the macOS takes over to control brightness, the wire mod always sets it to 100%. No way to change this.

You should have saved the original 8GB vBIOS from the card and posted it here.
 
I have the back light mod wired on a SPDT switch on-off-on. Once I am in the OS and flick the switch to normal, the screen goes dark, although I can barely see it with a flash light over it. I haven’t flashed bios because I am new to this and do not know how. I just installed the card and booted up the system. The seller I bought it from advertised it as 8GB WX7100. My computer doesn’t read it being that.
 
Last edited:
Yes, your card indeed seems to be a W7170M with 4 GB of memory - so you should be able to flash the VBIOS from the first post here.
 
  • Like
Reactions: dfranetic
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.