*** For info, this mod is NOT compatible with the OpenCore boot screen mod ***
This thread is about how to mod the Sapphire PULSE RX580 8GB card's ROM image. If you worry about bricking the card, or void the warranty etc. STOP HERE!
For those who has MVC flashed RX580. Do NOT perform this mod. Any modification of the ROM will disable the Mac EFI UGA. And do NOT even try to flash the dumped (MVC) ROM back onto the card. Even this action may cause problem. As general rule, NEVER touch the MVC flashed ROM.
I had no plan to write this at the beginning, therefore, not everything has good records. Some info are just from my memory, may not be 100% correct. If you have different info (better with prove), please correct me ASAP.
Background
So far, all AMD GPU that I own are shipped with unnecessary high voltage (in fact, same on my 1080Ti, but just not that bad). e.g. My Sapphire HD7950 Mac Edition card come with default 1.094V, but actually the GPU can run stably at 0.888V. That's 23% above the required voltage. Most of the extra voltage (power) will be converted to heat, which just a waste of power, make the card run hotter, and most likely shorten the life span as well.
Therefore, when I got my Sapphire PULSE RX580 8GB. One of the very 1st thing I did was to test how much voltage I can reduce. As expected, the RX580 also come with unnecessary high voltage. My card can run stably at 1.00V, but it default to run at ~1.15V. Not as ridiculous as the 7950, but still 15% too much.
If the card has a decent cooler, that's not a problem. However, the PULSE cooler seems not quite good enough in hot Asia. The card can run into thermal throttling when stressed.
This was captured when my RX580 doing the Furmark benchmark (It's just the benchmark, not the stress test).
The card can draw slightly above 75W from the slot, and tiny bit above 150W from the 8pin (combined Booster A and B, the two orange lines on the left side). And it is throttled to 1263MHz during the benchmark, fan already running at the "max" 2280RPM, temperature go above the target 75C (the highest I've seen so far is 84C).
Yes, Furmark is a bit too extreme, then how about "normal" high stress?
The card can stay within the designed power envelope. Clock speed can stay at 1366MHz. Not bad. However, still run above the target temperature 75C (vary between 75-80C). Fan still stay at the max 2280RPM. The card isn't that noisy, but I still want to further reduce it.
So how to?
The Sapphire PULSE RX580 ROM
This is how the default ROM image looks like in PolarisBiosEditor 1.6.7 (a Windows software)
As you can see in the FAN section (lower left part), the Target temperature is 75C. From my observation, the card will allow the GPU keep warming up and only slowly spin up the fan. Once reach 75C, the fan will spin up more and more to keep the GPU at 75C, until the fan reach the max RPM 2280 (which is just 60% PWM).
And in the POWERTUNE section, we can see that the TDP of the card is actually 145W. And Max Power Limit is 155W HOWEVER, the POWERPLAY part also stated that Power Control Limit is 30%. Therefore, 145W x 130% = 188.5W, and 155W x 130% = 201.5W. So, in any case, it fit the official info "below 225W" on the Sapphire web site. And from the Furmark test, we know that the card's power draw is really maxed at ~225W. So, it's actually a very accurate description.
If we further study the POWERTUNE section, then we will know the card's Max temperature is 84C (this can be reached with the native setting), and shutdown temperature is 94C.
Procedure
To mod the card's VBIOS, we need Windows and two other softwares
1) Latest ATIWinFlash
2) PolarisBiosEditor 1.6.7
I did all the followings on my cMP 5,1, Windows 10, and RX580 is the ONLY GPU installed.
First of all, nun ATIWinFlash as Admin, then press "Save" to dump the ROM
Then keep this master ROM image at a safe place. Copy it to somewhere else (e.g. the Desktop), then you can open the copy of the ROM image by PolarisBiosEditor. And all you need to do is just click the item that you want to mod, change the number at the bottom windows, then click APPLY CHG. End up you should have something like this
I did three things in this ROM.
1) I modded the GPU clock speed
2) I modded the GPU voltage pointer
3) I modded the memory voltage
After finished, double check the numbers, then "SAVE AS" a new ROM image. e.g. RX580_mod.ROM (ALWAYS ONLY save as new ROM, NEVER cover your original ROM image)
Then we can use ATIWinFlash to flash the modded ROM back onto the card. If you follow the above procedures, ATIWinFlash should be still opened, but if not, remember to open it as Admin.
Click "Load image" to select "RX580_mod.ROM".
Then click "Program" to flash the card. DO NOT DO ANYTHING until flash complete. It may shows "not responsive" for a few seconds, that's somehow normal, DO NOT DISTURB IT!
Once finish, you can reboot back to macOS. The procedure is done.
What we actually did
What I found is that the Sapphire PULSE RX580 ROM has 2 loops. If we directly insert a voltage for the GPU core, that can only change the 1st loop parameter, the 2nd loop will treat this as an invalid data and ignore it, then go back to the original voltage. Therefore, even I know my card can run at 1000mV very well, I can't force the card to do that via this VBIOS editor.
TBH, up to this moment, I am still not 100% sure if I change the voltage pointer to 65283 has any effect or not. I have no time to test it yet. But what I am sure is that the Sapphire PULSE RX580 ROM is not that fragile, a wrong parameter in the GPU core voltage 1st loop won't brick the card. So, we can just make the 65284 or higher pointers all to 65283. This is a known safe mod for this ROM, at worst, just no effect. Also, it seems the card can automatically select a correct voltage to fit your GPU's silicon with this pointer. This is why we don't need to go through all the stress test before we mod the ROM. This setting is actually very very safe in my own test.
Memory voltage is the same, I tested my card's memory can run at 975mV stably in Wattman. I am quite sure mod the memory voltage to 975 in this BIOS editor has no effect at all. However, doesn't really matter, safe to mod.
Then, we come to the most important part, the GPU clock speed. Why is it important? Because this control the voltage more than anything else. What I found is with the pointer 65283. The GPU will run at
A) ~1.13V when clock speed at 1366MHz (This is why I said this pointer is safe. The card still running at around the original voltage)
B) ~1.07V when clock speed at 1300MHz
C) ~1.02V when clock speed at 1243MHz (stock clock speed for the WX7100)
So, it seems the 65283 pointer still has little effect, the card running tiny bit below 1.15V. But doesn't really matter, we found the key...... the clock speed.
Simply down clock the GPU to 1300MHz, then GPU voltage will automatically reduce to ~ 1.07V, this is actually good enough to keep the card never run above 75C already (except Furmark). Fan speed never reach 2280RPM in my own test with ambient temperature 34C, air-conditioning OFF. And the funny thing is that I found there is virtually no performance difference between this setting and the stock setting.
May be because the stock setting will run into thermal / power throttling. Therefore, the card can't really always stay at 1366MHz. But since I monitored the clock speed with 2 seconds interval, I simply missed the clock speed fluctuation. Anyway, the main point is, basically no performance penalty (in Luxmark), also the card run cooler and quieter.
I was't plan to write this post at the very beginning, therefore, didn't keep that screen capture. BTW, 1300MHz with voltage pointer 65283, from memory, the GPU alway stay at 75C or below, and the fan only go up to ~1850RPM in the Unigine Valley test loop.
Use the WX7100 setting
WX7100 use the same chip as RX580, but it's a 130W TDP single slot work station card. So, what will happen if we use the WX7100's setting?
(Max GPU clock 1243MHz, voltage pointer 65283, max memory clock 1750MHz, memory voltage 975mV)
The result is really good!
The card's power draw during Unigine Valley loop drop from 183W to 138W (peak 193W vs 143W). This roughly match the WX7100's TDP. However, since we have a double slot wide dual fan cooler on the PULSE RX580. The GPU never goes above 75C, and the fan RPM is just 1350RPM. Really very quiet.
But, we down clocked quite a lot now. Is the penalty significant? Yes, it's noticeable.
My tests shows up to ~7% penalty in benchmarks. So, if you want squeeze all possible performance from the card, this is definitely not the best setting for you. However, if you don't mind to take few % penalty, or you won't continuously stress the card to 100% for a prolong period of time (e.g. main usage is FCPX), I found this setting is actually very good. Now, no matter how I stress the GPU, I can still hardly hear the fan. And if we run Furmark again. The max draw from slot now become ~70W, and the 8pin pull up to ~140W. Really ALWAYS stay within the cMP limit now (if you care about this).
If you really want to use this setting but minimise the performance penalty at the same time. You can apply the "ONE CLICK TIMING PATCH". In my test, with the memory timing patched, the performance hit will further reduce to about 3%. Very negligible in most real world situation.
High performance mod
If you read this thread is because you want more performance from the RX580, this part is for you.
After multiple tests. I found that my Sapphire PULSE RX580 8GB with voltage pointer set to 65283 can run at 1340MHz @~1.1V (Note 1). Also, my card's memory can run at the Max Memory Freq 2250MHz flawlessly with that "ONE CLICK TIMING PATCH" (voltage still set 0.975V).
This is just good enough to let the card stay at or below 75C with fan speed stabilised at tiny bit below 2280RPM (system ambient 34C, PCIe fan ~1900RPM)
With this setting, my RX580 that can performan almost 20% faster in Luxmark (the stock setting usually score at ~15000), without any thermal / power throttling, and never go above 75C.
HOWEVER, if you want to go this way. I highly suggest you MUST first test this setting (especially the memory clock 2250MHz) in Wattman (it's included in the Windows AMD driver package). Make sure it's stable. Otherwise, if your card cannot boot stably after VBIOS mod, it may be very hard to recover. Remember, the PULSE (V1) is a single ROM card. If you brick it, you really brick it (for those have the dual ROM V2 PULSE RX580, you are safe to test any setting you want).
Also, there is no way to tell if the one click timing patch is stable for your card. All I can tell is it works on mine. Use it with caution!
(Note 1: About 10 days after I do this high performance mod. I found that the "silent mode" of the Nitro+ RX580 is also default at 1340MHz. So, obviously it's not a co-incident, but both Sapphire and me found the same sweet spot for this GPU )
-----------------------------------------------------
For Advance users only. If you want the GPU to run at an even lower voltage (that the voltage pointer can't do), you may follow this guide to limit the Max Vcore.
https://forums.macrumors.com/thread...-8gb-vbios-study.2133607/page-4#post-26993165
This thread is about how to mod the Sapphire PULSE RX580 8GB card's ROM image. If you worry about bricking the card, or void the warranty etc. STOP HERE!
For those who has MVC flashed RX580. Do NOT perform this mod. Any modification of the ROM will disable the Mac EFI UGA. And do NOT even try to flash the dumped (MVC) ROM back onto the card. Even this action may cause problem. As general rule, NEVER touch the MVC flashed ROM.
I had no plan to write this at the beginning, therefore, not everything has good records. Some info are just from my memory, may not be 100% correct. If you have different info (better with prove), please correct me ASAP.
Background
So far, all AMD GPU that I own are shipped with unnecessary high voltage (in fact, same on my 1080Ti, but just not that bad). e.g. My Sapphire HD7950 Mac Edition card come with default 1.094V, but actually the GPU can run stably at 0.888V. That's 23% above the required voltage. Most of the extra voltage (power) will be converted to heat, which just a waste of power, make the card run hotter, and most likely shorten the life span as well.
Therefore, when I got my Sapphire PULSE RX580 8GB. One of the very 1st thing I did was to test how much voltage I can reduce. As expected, the RX580 also come with unnecessary high voltage. My card can run stably at 1.00V, but it default to run at ~1.15V. Not as ridiculous as the 7950, but still 15% too much.
If the card has a decent cooler, that's not a problem. However, the PULSE cooler seems not quite good enough in hot Asia. The card can run into thermal throttling when stressed.
This was captured when my RX580 doing the Furmark benchmark (It's just the benchmark, not the stress test).
The card can draw slightly above 75W from the slot, and tiny bit above 150W from the 8pin (combined Booster A and B, the two orange lines on the left side). And it is throttled to 1263MHz during the benchmark, fan already running at the "max" 2280RPM, temperature go above the target 75C (the highest I've seen so far is 84C).
Yes, Furmark is a bit too extreme, then how about "normal" high stress?
The card can stay within the designed power envelope. Clock speed can stay at 1366MHz. Not bad. However, still run above the target temperature 75C (vary between 75-80C). Fan still stay at the max 2280RPM. The card isn't that noisy, but I still want to further reduce it.
So how to?
The Sapphire PULSE RX580 ROM
This is how the default ROM image looks like in PolarisBiosEditor 1.6.7 (a Windows software)
As you can see in the FAN section (lower left part), the Target temperature is 75C. From my observation, the card will allow the GPU keep warming up and only slowly spin up the fan. Once reach 75C, the fan will spin up more and more to keep the GPU at 75C, until the fan reach the max RPM 2280 (which is just 60% PWM).
And in the POWERTUNE section, we can see that the TDP of the card is actually 145W. And Max Power Limit is 155W HOWEVER, the POWERPLAY part also stated that Power Control Limit is 30%. Therefore, 145W x 130% = 188.5W, and 155W x 130% = 201.5W. So, in any case, it fit the official info "below 225W" on the Sapphire web site. And from the Furmark test, we know that the card's power draw is really maxed at ~225W. So, it's actually a very accurate description.
If we further study the POWERTUNE section, then we will know the card's Max temperature is 84C (this can be reached with the native setting), and shutdown temperature is 94C.
Procedure
To mod the card's VBIOS, we need Windows and two other softwares
1) Latest ATIWinFlash
2) PolarisBiosEditor 1.6.7
I did all the followings on my cMP 5,1, Windows 10, and RX580 is the ONLY GPU installed.
First of all, nun ATIWinFlash as Admin, then press "Save" to dump the ROM
Then keep this master ROM image at a safe place. Copy it to somewhere else (e.g. the Desktop), then you can open the copy of the ROM image by PolarisBiosEditor. And all you need to do is just click the item that you want to mod, change the number at the bottom windows, then click APPLY CHG. End up you should have something like this
I did three things in this ROM.
1) I modded the GPU clock speed
2) I modded the GPU voltage pointer
3) I modded the memory voltage
After finished, double check the numbers, then "SAVE AS" a new ROM image. e.g. RX580_mod.ROM (ALWAYS ONLY save as new ROM, NEVER cover your original ROM image)
Then we can use ATIWinFlash to flash the modded ROM back onto the card. If you follow the above procedures, ATIWinFlash should be still opened, but if not, remember to open it as Admin.
Click "Load image" to select "RX580_mod.ROM".
Then click "Program" to flash the card. DO NOT DO ANYTHING until flash complete. It may shows "not responsive" for a few seconds, that's somehow normal, DO NOT DISTURB IT!
Once finish, you can reboot back to macOS. The procedure is done.
What we actually did
What I found is that the Sapphire PULSE RX580 ROM has 2 loops. If we directly insert a voltage for the GPU core, that can only change the 1st loop parameter, the 2nd loop will treat this as an invalid data and ignore it, then go back to the original voltage. Therefore, even I know my card can run at 1000mV very well, I can't force the card to do that via this VBIOS editor.
TBH, up to this moment, I am still not 100% sure if I change the voltage pointer to 65283 has any effect or not. I have no time to test it yet. But what I am sure is that the Sapphire PULSE RX580 ROM is not that fragile, a wrong parameter in the GPU core voltage 1st loop won't brick the card. So, we can just make the 65284 or higher pointers all to 65283. This is a known safe mod for this ROM, at worst, just no effect. Also, it seems the card can automatically select a correct voltage to fit your GPU's silicon with this pointer. This is why we don't need to go through all the stress test before we mod the ROM. This setting is actually very very safe in my own test.
Memory voltage is the same, I tested my card's memory can run at 975mV stably in Wattman. I am quite sure mod the memory voltage to 975 in this BIOS editor has no effect at all. However, doesn't really matter, safe to mod.
Then, we come to the most important part, the GPU clock speed. Why is it important? Because this control the voltage more than anything else. What I found is with the pointer 65283. The GPU will run at
A) ~1.13V when clock speed at 1366MHz (This is why I said this pointer is safe. The card still running at around the original voltage)
B) ~1.07V when clock speed at 1300MHz
C) ~1.02V when clock speed at 1243MHz (stock clock speed for the WX7100)
So, it seems the 65283 pointer still has little effect, the card running tiny bit below 1.15V. But doesn't really matter, we found the key...... the clock speed.
Simply down clock the GPU to 1300MHz, then GPU voltage will automatically reduce to ~ 1.07V, this is actually good enough to keep the card never run above 75C already (except Furmark). Fan speed never reach 2280RPM in my own test with ambient temperature 34C, air-conditioning OFF. And the funny thing is that I found there is virtually no performance difference between this setting and the stock setting.
May be because the stock setting will run into thermal / power throttling. Therefore, the card can't really always stay at 1366MHz. But since I monitored the clock speed with 2 seconds interval, I simply missed the clock speed fluctuation. Anyway, the main point is, basically no performance penalty (in Luxmark), also the card run cooler and quieter.
I was't plan to write this post at the very beginning, therefore, didn't keep that screen capture. BTW, 1300MHz with voltage pointer 65283, from memory, the GPU alway stay at 75C or below, and the fan only go up to ~1850RPM in the Unigine Valley test loop.
Use the WX7100 setting
WX7100 use the same chip as RX580, but it's a 130W TDP single slot work station card. So, what will happen if we use the WX7100's setting?
(Max GPU clock 1243MHz, voltage pointer 65283, max memory clock 1750MHz, memory voltage 975mV)
The result is really good!
The card's power draw during Unigine Valley loop drop from 183W to 138W (peak 193W vs 143W). This roughly match the WX7100's TDP. However, since we have a double slot wide dual fan cooler on the PULSE RX580. The GPU never goes above 75C, and the fan RPM is just 1350RPM. Really very quiet.
But, we down clocked quite a lot now. Is the penalty significant? Yes, it's noticeable.
My tests shows up to ~7% penalty in benchmarks. So, if you want squeeze all possible performance from the card, this is definitely not the best setting for you. However, if you don't mind to take few % penalty, or you won't continuously stress the card to 100% for a prolong period of time (e.g. main usage is FCPX), I found this setting is actually very good. Now, no matter how I stress the GPU, I can still hardly hear the fan. And if we run Furmark again. The max draw from slot now become ~70W, and the 8pin pull up to ~140W. Really ALWAYS stay within the cMP limit now (if you care about this).
If you really want to use this setting but minimise the performance penalty at the same time. You can apply the "ONE CLICK TIMING PATCH". In my test, with the memory timing patched, the performance hit will further reduce to about 3%. Very negligible in most real world situation.
High performance mod
If you read this thread is because you want more performance from the RX580, this part is for you.
After multiple tests. I found that my Sapphire PULSE RX580 8GB with voltage pointer set to 65283 can run at 1340MHz @~1.1V (Note 1). Also, my card's memory can run at the Max Memory Freq 2250MHz flawlessly with that "ONE CLICK TIMING PATCH" (voltage still set 0.975V).
This is just good enough to let the card stay at or below 75C with fan speed stabilised at tiny bit below 2280RPM (system ambient 34C, PCIe fan ~1900RPM)
With this setting, my RX580 that can performan almost 20% faster in Luxmark (the stock setting usually score at ~15000), without any thermal / power throttling, and never go above 75C.
HOWEVER, if you want to go this way. I highly suggest you MUST first test this setting (especially the memory clock 2250MHz) in Wattman (it's included in the Windows AMD driver package). Make sure it's stable. Otherwise, if your card cannot boot stably after VBIOS mod, it may be very hard to recover. Remember, the PULSE (V1) is a single ROM card. If you brick it, you really brick it (for those have the dual ROM V2 PULSE RX580, you are safe to test any setting you want).
Also, there is no way to tell if the one click timing patch is stable for your card. All I can tell is it works on mine. Use it with caution!
(Note 1: About 10 days after I do this high performance mod. I found that the "silent mode" of the Nitro+ RX580 is also default at 1340MHz. So, obviously it's not a co-incident, but both Sapphire and me found the same sweet spot for this GPU )
-----------------------------------------------------
For Advance users only. If you want the GPU to run at an even lower voltage (that the voltage pointer can't do), you may follow this guide to limit the Max Vcore.
https://forums.macrumors.com/thread...-8gb-vbios-study.2133607/page-4#post-26993165
Last edited: