[Guide] How to Modify a Polaris (Radeon RX Series) GPU

Sounds about right for Samsung memory. Its not something I really checked but it does seem like vanilla strap timings for Samsung are just all around bad I got memory errors with a completely stock nitro RX470 8GB brand new out of the box which is just bonkers.

1 Like

@ket how do you change in the firmware the core voltage.
My card has pointers that even if i change them with polaris editor the gpu driver uses the default voltage.

And i found this:
“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.”

-https://forums.macrumors.com/threads/sapphire-pulse-rx580-8gb-vbios-study.2133607/page-4#post-26993165

The only solution is to limit the max voltage as described there with hex edit.
It works but there exist a solution to edit all the core voltage states?

@boombastik, the easy way is to use PBE, or you could use RBE. RBE is probably better than PBE for most things now.

EDIT: Also remember auto voltages with Polaris are completely borked, so the card isn’t constantly (and needlessly) blasted with maximum volts under load situations limit the auto voltage to something around the 1.075v - 1.1v range.

for my card pbe don’t work and i doubt that rbe will work because the sapphire pulse card is locked with voltage pointers you cant put manual voltages.
Whatever voltage i change there the windows default to 1150 mv.
So i hex edit the max voltage allowed for my card .

After we open up a RX580 ROM in Hex editor, search 0C 01 03 06
The C0 D4 01 right after is the Max Vcore. To convert it back to the voltage

C0 D4 01 → 0x1D4C0 (Hex) → 120000 (Dec) → 1200mV.

In my case, I want to limit the Vcore to 1050mV. So

1050mV → 105000 (Dec) → 0x19A28 (Hex) → 28 9A 01

At this point, we finished the 1st half, and need to fix the 2nd half. Otherwise, the ROM will not work.

So, now we search 8A 00 EB FF FF FF (which should be just 16 row below)

The C0 12 right after that are the bytes that we need to fix. So, what’s that mean?

C0 12 → 0x12C0 (Hex) → 4800 (Dec) → 1200 mV (4800 / 4)

And since I want to limit the Vcore to 1050mV. Therefore, I need

1050mV → 4200 (Dec, 1000 x 4) → 1068 (Hex) → 68 10

After that the max voltage for pointer 3-7 is 1050 mv.
It works on all os even in mac.

Yes, all we need to do is just mod these 5 bytes. Then this VBIOS now will limit my GPU’s Vcore to no more than 1050mV. However, this manual hex edit will “void” the ROM. This time, we don’t need to do any manual calculation (like what we did in the part number patch). We can simply open this modded ROM in PolarisBiosEditor , the software will warn that the ROM is broken, then we just need to save the ROM again, PolarisBiosEditor will fix the CRC automatically.
Originally by h9826790

@ket you are right for red polaris editor i created a modified bios and the driver read it correctly.
Also i revert the tccdl and i use the strap 2000 from samsung K4G80325FC (2000 MHz: 17-17**-31-31**-87-24-219) to K4G80325FB (2000 MHz: 17-17-29-29-87-24-219) the other timings seems the same so they fix it, so no memory errors.

Below is my bios mhz and voltages.:

Do you have any clue why PBE and RBE modded bios didnt work, as it always cause blackscreen? modded the bios from Asrock RX 570 4GB bios dump, and Sapphire 570 4gb nitro dump. Both stock asrock and sapphire worked flawlessly on stock, but just mod a little bit or just changing 1 value = boom code 43.

Also when about to flash the original bios because bios modded using PBE didnt work at all even the slightest change in anything, why the gpu name is Polaris 10 instead of Polaris 20?

I know that 20 is a refresh but is this PBE works? honestly i just want to get a better timings for this Asrock RX 570 4gb, and tune the fans etc., My friend said that PBE wont work on anything else but Ellesmere base card (which is polaris 10), anyways, the modded bios is attached below.

Bioses.rar (431.5 KB)

Modded bios if you boot in uefi mod dont work.
Only if you mod also uefi gop and then of course no secure boot.

I updated the gop tool to update your polaris card with modded 1.69.15.50 that makes the card to work in uefi mode. Of course disable secure boot.
GOP Updater v1.9.6.5.d - magic amd gop.rar (5.5 MB)

1 Like

Thanks @boombastik, saves me having to reply to that one :smiley:

1 Like

so its actually because it booted in pure uefi wont work? must be legacy? could you tell where do you get the information and the reason why?

also is the 1.69 magic gop is needed for uefi?

is there any 1.70 magic gop?

i need the modded bios working on full uefi, if you could make the 1.70 uefi gop working with the modded bios then its cool.

Goal: Modded bios use modded 1.70 if you could make it, need to boot to uefi.

Because the uefi gop has a check if the vbios is modded. so if you want pure uefi mode you need hacked uefi gop.
If you have the original bios put it the tool and will update it to hacked gop 1.69 that bypass the check but it destroys the signature so secure boot don’t work.
You propably have your original bios flashed with gop 1.70 and this tool cant downgrade. 1.70 hacked GOP don’t exist because none modded it so use the 1.69.

1 Like

idrc about secure boot. do i need to just use gopupdater to replace with the modded gop for modded 570 bios? do i need to fix using PBE?

will this also work on RX560? i want to tighten my 560 timings. using asus dual 460 2gb with sapphire 560 2gb bios for 1024 shaders. i want to edit the 560 bios using pbe and srbpolaris, so the magic gop uefi will just work right?

sorry for the too much questions, first time doing amd mod bios :")

EDIT: just booted to legacy, got code 43 after flash the vbios on uefi, what to do? using amernime drivers.

1 Like

First of all, thank you for the guide. I prepared a bios by following the guide. In my current settings, I also saw 207 gb/sec pobclmem at 1450 mhz and 2000 mhz.

Whenever I increase the memory speed I get memory errors in hwinfo. When I try to fix the bios file, I get a black screen, probably something is conflicting. I will be glad if you help me.
My memories are hynix and my asic quality is 70.8%

@Asymetry is that a unmodified version of your vBIOS? It doesn’t look like it, I need a clean unmodified vBIOS to work with. Which specific Sapphire RX580 do you have? I need to know this to correctly set things like power limits.

you have to use magic GOP otherwise you get a black screen till windows boots with modified VBIOS

No that bios is tweaked here is the original one with silent bios mode. unfortunately i lost the other switch bios. RX 580 Nitro + 4 gb.

@Kuri0 Yes i know magic gop but i already switched my bios to csm so it’s not the problem. thank you for your suggestion

@Asymetry here is a modded vBIOS, donations can be sent to the email in my profile :slight_smile: . Some important stuff to note about your card is that as far as I can tell it’s not a Nitro card, it’s a Pulse. Real giveaway is when you look at the memory frequency, Nitro 4GB cards are 2000, 4GB Pulse are 1750, yours is 1750. This also seems to be backed up by your TDP limit of 145w meaning your card seems to only have a single 6 pin PCI-E connection. If your card differs in short PCI-E slot provides 75w, 6 pin PCI-E connector an additional 75w, 8 pin PCI-E connection an additional 150w meaning PCI-E + 2x8 pin = 375w MAX, 6+8 = 300W MAX, 6+6 = 225W MAX, etc.

I never worked directly with 4GB cards as I considered them obsolete even back in 2016/17 so the memory timings I’ve used are highly optimised ones based on my work with 8GB cards using Hynix/Samsung/Micron. There will be some fine tuning to do with the voltages to get the card as power efficient as possible so for now I’ve set ballpark values. It’s also important to note that you really don’t need to push GPU frequency to the absolute limit on Polaris you will only get a negligible gain at best in exchange for a dramatic increase in heat output, noise, voltage, and consumed power. Polaris is bandwidth starved, not frequency starved.

Changes:

Limited automatic voltage to 1.15v so the card isn’t constantly slammed with max volts needlessly increasing heat, noise, and power consumption. With an ASIC of almost 71% by the time voltages and GPU frequency are fully tuned to the optimal level 1 critical point this can likely be lowered to 1.1v or below.

Increased manual voltage limit to 1.25v just for those times we all get of wanting to attempt some bleeding edge benchmark runs.

Set TDP to 200w with a max of 225w as I’m not entirely certain what PCI-E connection(s) your card has without a picture.

Adjusted fan values so the curve isn’t quite so aggressive at higher temps and limited maximum fan RPM to 2600 (you really don’t need more than this on a properly power tuned Polaris card)

Disabled Zero RPM by default (this is quite possibly the worst feature AMD has ever implemented). In exchange for a low fan speed you won’t even hear this can reduce idle temps by as much as 12c and thus helping quite a bit to prolong the life of your GPU.

Increased idle PWM to 20%, just because 18% is a weird value.

Adjusted acoustic limit to match maximum GPU frequency.

If for some weird reason you like the Zero RPM feature I adjusted it so it’s much more practical to use, fans will stop spinning once the GPU reaches 40c and will start spinning once the GPU hits 55c.

Increased target GPU temperature a tiny bit to 78c, with the other temperature adjustments I’ve made basically if you need a bit more cooling power only this value will need to be lowered a bit now.

Maximum GPU frequency is set to 1400MHz (this is very likely to be your sweet spot for the heat/power/noise/performance ratio).

Corrected max and hotspot temps, they are now both 105c.

Default maximum manual voltage @ 1400MHz when enabling voltage control is 1.15v, the same as the automatic voltage.

Reduced VDDC to 0.9v, the majority of my testing (70% of the time or so) in the past showed this actually helped with memory stability and overclocking.

Set my custom memory timings from 1750MHz to 2000MHz, these straps are the same timings for very good reason - to stop the card from applying crap timings. I did this to both Elpida and Hynix straps just to make sure no funny business goes on, it shouldn’t anyway, but the vBIOSes on Polaris cards are repurposed and hacked together Tonga so I minimise the scope for issues where possible.

Remember if you are flashing with ATIflash to run it as admin. I’d also recommend doing a DDU on the drivers and a clean driver install after the vBIOS update.

1 Like

dear ket , thank you, first of all, all I can do right now is to thank you for what you’ve done.

I also find 4 gb cards unnecessary, but since most 8 gb cards are used in mining, I cannot trust them. I bought this because my previous card was also broken.

card is nitro series, I’m sure it’s not pulse. the card has 2 bios option I sent the ‘silent’ one, unfortunately I lost the original of the other ‘performance’ bios. It has 8+6 power inputs. Your fine-tuning of power consumption and sound is very nice. Although these values ​​are nice, I’m also curious about the point where the card can be overclocked to the maximum. Is there a voltage frequency curve you can recommend?

I’m testing the card right now, no problems with heaven and cyberpunk 2077. Thank you again.

4oo series cards top out around 1.36-1.4GHz, 500 series around 1.45GHz, 500 series you can get up to 1.6GHz but I wouldn’t recommend these speeds you literally gain nothing noticeable outside of benchmarks. Sensible maximum frequencies on average are 1.32GHz for 400 series, 1.4GHz for 570/80, and 1.5GHz for 590. I’ve tested many 580s and 590s, the extra core speed on a 590 made absolutely zero difference over 1.5 and very little between 1.4 - 1.5. In fact I had a 580 that literally performed no worse than any of the 590s despite having a disadvantage of -100MHz on the core and -200MHz on the memory. Both cards used the same memory ICs so used the same optimised timings as well. You buy a 590 if you want really nice power efficiency, you get a 580 if you don’t mind the extra power draw or are fine with losing maybe 5% performance compared to a 590 to maintain efficient operation. Memory frequency on your card also wouldn’t change with a “silent” vBIOS so don’t know whats going on there without having the card in hand.

Some before and after performance numbers would be interesting to know, Cyberpunk with the preset settings @ 1080p for instance. :smiley:

1 Like

Thanks for the info about the frequencies. I don’t change the gpu frequency then. By the way, the bios you made did not give any shutdown or black screen problems. I just got around 17 memory errors in cyberpunk. How can i fix it?
https://easyupload. io/e0epbs
Here are the benchmarks you want :slight_smile:

Just changed amd fsr off in presets

@Asymetry it depends on the type of memory error, visual artifacts or just HWInfo64 logging errors? If it’s the former increase TRRD by 1. If it’s the latter I forget exactly which timing it was now but it was either TCCDL or TCCDS, change these to both be 6 or set TCCDL to 6 and TCCDS to 8. The latter approach might iron out those errors without any noticeable performance loss while the first (easy) approach will almost definitely clean those errors up and probably give you some extra memory OC headroom as well. If none of those things work then increasing VDDC back to 0.95v might work but I’ve never seen an instance in my testing where increasing VDDC has fixed memory errors, some others have though.

Those bench results for CP2077 are pretty sweet too, not bad for a card from 2016 :wink:

1 Like