Polaris card can be tweak by using wattman. If you found the sweat spot for the GPU and want it to be permanent in bios then this guide is for you. Polaris bios editor cannot manage to undervolt well. We need to hex editing the rom file to fix it.
Save your own bios using GPU-Z. Backup it.
Editing FAN function
Use any Hex Editor to open your ROM image. (HxD Editor)
Search 01 17 00 00 02
And 3 rolls below the “02”. This 01 means “zero fan mode ON”. If you want the fan can stop at certain temperature. Keep it at 01. And if you want the fan always spin, change that to 00.
The byte next to it is the “fan stop temperature”. For my PULSE, the default setting is 2E, which mean 46C. e.g. if you want it to stop below 50, then change it to 32.
Last one, the most important one for you. Is the follow byte, “fan start temperature”. My PULSE default is 36 (equivalent to 54C). If you want the fan start at 60C, change it to 3C.
And if still doesn’t work. Then you may disable Fuzzy fan mode. Change the byte between “max temp” (2A in this case), and “max PWM” (64 in this case) from 01 to 00 will change the fan mode from Fuzzy mode to Legacy mode.
For the PULSE RX580 8GB card. I am 100% the above mod can work. e.g. I turn OFF Zero Fan Mode. And now my RX580’s fan always spin, even already below the Fan Stop Temperature 46C, the fan still spinning to assist cooling.
Finish Fan Editing…. Edit with Polaris editor to fix CRC and Flash…
Editing Bios to Undervolt Rx580
After we open up a RX580 ROM in Hex editor, search 0C 01 03 06, and you will see something like this
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 1000mV. So
1000mV -> 100000 (Dec) -> 0x186A0 (Hex) -> A0 86 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 1000mV. Therefore, I need
1000mV -> 4000 (Dec, 1000 x 4) -> 0xFA0 (Hex) -> A0 0F
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 1000mV. 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 1.6.7 (in Windows), the software will warn that the ROM is broken, then we just need to save the ROM again, PolarisBiosEditor 1.6.7 will fix the CRC automatically.
Of course, if you want to mod the clock speed, or apply memory timing patch, etc, you can also do it inside PolarisBiosEditor 1.6.7 now. You should already know your target setting during found out the min stable voltage.
N.B. Do NOT touch the voltage pointer. Leave it at default setting. e.g. 65288 for stage 7 clock speed. I never test this mod with any other voltage pointer.
And now, after you save this newly modded VBIOS, you finally have ROM that will let the GPU run at the clock speed and voltage you want.
Please use polaris editor to edit the rom file once to fix crc and continue to flash it.
Just for backup in my site. Confirm to be working to undervolt the RX580 cause Polaris editor fail to do so. When the voltage is fixed you may edit the core mhz in the polaris editor as well. So you no need wattman to tweak the GPU.
(Credit to h9826790) MacForum
Remark: If you don’t understand this guide. Don’t bother it and skip it. You may end up brick the GPU.