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

Try to copy ubermix3.1 to 1750 and 2000 profile. Start with 2000mhz clock and go up to see how far it can go

@karmic_koala that would explain why Iā€™ve seen Samsung cards using 40w or so more than other cards I suppose but even so the ICs should scale a lot better and I donā€™t think itā€™s anything to do with the components powering them if it were that simple the AIBs would have just used higher rated parts on the more premium models at least. Something else is rotten and I care not to waste more time on cards with Samsung; they are pretty much a dead end.

@wzyjsk55555, I do, but I tend not to just hand those timings out thousands of hours, my hours, ended up going into them to ensure 24/7 EDC free operation in a vast majority of cases at least. Optimal timings are far more than just getting them as tight as possible. Think of them like a gearbox, change gear too soon and you can stall, change gear too late and you hurt acceleration. Donā€™t bother trying to adjust VDDCI, it does nothing. I messed with it extensively to see if it did anything at all to anything and it doesnā€™t.

I canā€™t see it being anything else. Vendors knowing samsung takes more power couldā€™ve simply put mid-power components or worse, built PWM firmwares with power limit on memory phase, to avoid overheating, damages and too many RMAs.

If i worked with desktop card, iā€™d try to find a real single 80A mosfet, remove the two in parallel and use only one. Already got a pair of 39A mosfets for my system (should be enough since there are 4 VRAM chips) but still need to find inductor. Not in a hurry as i wonā€™t have time for this untill october.

PWM firmwares are rarely discussed, probably because most of users canā€™t flash these. Russian servicemen know which hw/sw tools can program these if needed.

While the general impression was that raising core clocks on polaris doesnā€™t do much, i found this isnā€™t really true.
Recently been testing 1400core/1900mem profile, and indeed furmark results indicate there is maybe 1FPS more gained when OCed core from 1200 to 1400 mhz, either windowed or fullscreen mode.

In UT4 i tested this in FR-Fort, every time i was getting about 3FPS more with 1400mhz clock, it wasnā€™t a coincidence.

So i ran valley benchmark (opengl rendering, vsync off, highest graphic settings) at 1200/1900 mhz profile and got 34.2 FPS, OCed to 1400/1900mhz and repeated benchmark, higher frame rates noticed immediately during a couple of first few scenes, the end result was 38.2 FPS which is full 4 FPS better after just raising core by 200mhz.

Temperatures do get in 70-80C range, but Iā€™m quite sure i can lower them by 10C with new cooling compound for memory/VRM and small cooling modifications

Added screenshot to know which test the preset/max values belong to

Youā€™re dealing with a mobile part, goalposts for optimal performance to power/heat output will be different to that of a desktop 400/500 series part. In the case of desktop parts itā€™s entirely possible to get a lower clocked RX580 to perform the same as an RX590 the 580 just requires more power to do it so on average itā€™s not worth doing. Only Polaris desktop card worth seeking out these days is an RX590 but if you REALLY canā€™t find one, or not at a sensible price at least, then an 8GB RX580 isnā€™t a completely horrible choice. The bottom line remains the same though the vast majority of RX580s optimal performance to power/heat output will be in the region of 1.35-1.4GHz while the RX590 will be 1.5-1.55GHz. In terms of memory on average unless you get Samsung both cards will do 8.8-9GHz with very good timings.

Hi buddy, Iā€™m talking to you and to anybody who could give a hand hereā€¦ I really need to boot uefi, since my lack of gop drivers on my rx 580 8gb is preventing me from using an additional screen like a tv, and the display port does not send signal at all. It also gives me a lot of trouble when installing different oses other than windows. Which I am using at the moment.
Honestly you all speak like you can use the magic gop updater no problem, but there is no guide on how to actually make it work, and I feel a lot stupid but that is the reality of things.
So I dumped my vbios with Gpu-z. When I drop the .rom file on the gopupd.bat, being both on the same folder, thatā€™s what i get:

Then I donā€™t know what to do with the GOPupd.zip file:

So, after extracting the files in his subfolder: ~\GOPupd x.xx.x\GOPupd\

I get the same result.

After extracting all the files in the same folder: ~\GOPupd x.xx.x
Same result again.
Apparently I miss some knowledge here, but youā€™d be very kind if you could explain a few more steps to get the rom updated with the gop drivers. Then flashing it on the gpu shouldnā€™t be a (big) problem.
This issue is really starting to giving me headaches!!
Thanks in advance to anybody willing to help.
Have a good night everybody.

@SauceCatto I never bothered with magic GOP but I do know there are two versions, one for nvidia, one for AMD, make sure you have the one for AMD. TBH I never saw the point or need to do the GOP so never bothered with it when I was using/messing with Polaris cards. One day I might pick up an RX590 for the sake of posterity though - last card you could truly mod and customise.

It canā€™t detect multiple monitors, and it canā€™t boot oses in uefi mode, just csm.
So Basically every linux distro that doesnā€™t have legacy support. That is what is missing. Gop drivers for the mobo. I donā€™t know if the prior user of this card modded it and then sold it as it was fully fuctional or not, but many have this particular issue with this card. That is why I need to mod the vbios. I donā€™t even care about bricking it, because itā€™s messy on windows 10 as well. A lot of glitches!
Thanks for your contribute, though.
To anyone willing to help,
Thatā€™s my request thread:

@SauceCatto to the extent I did bother to check even with a modded vBIOS the cards I messed with worked with dual monitors (HDMI & DP) with and without UEFI mode enabled in the mainboards firmware but that was on Windows and TBH I think MSI have a severely broken UEFI mode on their boards, when in the system firmware setup the resolution doesnā€™t change when enabling\disabling UEFI mode even with my 6800XT and when I raised the issue with MSI they basically brushed it aside with a feeble excuse. The issue could probably be resolved by simply having an option that forces the resolution you want alongside the UEFI mode toggle but as far as Iā€™ve seen even on boards that have that option it is bizarrely hidden from the user. Dumbassery at its finest right there.

I confirm all about the dumbassery. I also contacted MSI supportā€¦ It got me nowhere. So, just about now a guy answered my request with the vbios I needā€¦ At least I can try and see if it changes anything, since bricking it or not, the card is unusable anyway for meā€¦

Hello, i have a Sapphire RX 590 Nitro and i only changed a couple fan settings and applied one click timings patch just to see how the card reacts to a modded bios before going deeper. It flashed without a problem, but now AMD adrenaline does not work anymore, saying that the current AMD software is not compatible with the driver installed and im also getting code 43 in device manager. Any ideas how to fix it? I also tried the Pixel Clock Patcher, but it made no difference

RX590 has a driver level lock, you need to change the vBIOS so the card thinks itā€™s a RX580. The driver will install and run without issue then.

How do i change it to RX 580?

btw ket is right, iā€™m using rx 580 with modded vbios and everything works.

@karalux I show people in the guide how to change the GPUs identity, or you can use Radeon BIOS Editor to do it if youā€™re more of a novice.

Hello @ket , and everybody !
Iā€™m a user of an Sapphire RX 580 8GB Nitro + card with Hynix memory. I used to use this card tuned in the Adrenalin software as like this : Core at default 1411 Mhz, and Memory was at 2050 and Memory timing level 1, which was resulting in a 210-212GB in POCLMemBench. But recently in Windows 11 and 23.11.1 Drivers Iā€™m faced with couple of issues. First if I want to adjust my core voltage for state 4 - 1215Mhz to less than the default 1193mv, which sits strange, I receive a black, blue screen, and I have to cold reboot the system. Other issue is whenever I normally reboot or startup the system in the morning I receive a message which states that the system has crashed therefore my settings in the Adrenalin driver are back to default. Nevertheless that my system has never crashed.

So I decided to try and modify my BIOS and tune the memory with better timings at 2000Mhz, and just run it like that and stop messing with the Adrenalin software, because all of this Windows 11 and Driver issue is very annoying.

My card has a ASIC Quality of 73.3%. I took the default strap for 2000Mhz and followed this guide, and the part where @ket is explaining the memory timings and I just copy the values that he is suggesting. So my question is, are these settings good, am I safe to flash this rom back to the card. Iā€™m afraid that I might crash the card and not be able to boot in to Windows and undo the changes.

These are the settings that I did :
777000000000000022889D0073EE7D4BA0551514418DC60B0047A4000E0A14204A8900A0030071241A143840BC324418
####SEQ_WR_CTL_D1####
DAT_DLY = 7
DQS_DLY = 7
DQS_XTR = 0
DAT_2Y_DLY = 0
ADR_2Y_DLY = 0
CMD_2Y_DLY = 0
OEN_DLY = 7
OEN_EXT = 0
OEN_SEL = 0
ODT_DLY = 0
ODT_EXT = 0
ADR_DLY = 0
CMD_DLY = 0
####SEQ_WR_CTL_2####
DAT_DLY_H_D0 = 0
DQS_DLY_H_D0 = 0
OEN_DLY_H_D0 = 0
DAT_DLY_H_D1 = 0
DQS_DLY_H_D1 = 0
OEN_DLY_H_D1 = 0
WCDR_EN = 0
####SEQ_PMG_TIMING####
TCKSRE = 2
TCKSRX = 2
TCKE_PULSE = 8
TCKE = 24
SEQ_IDLE = 7
TCKE_PULSE_MSB = 1
SEQ_IDLE_SS = 0
####SEQ_RAS_TIMING####
TRCDW = 19
TRCDWA = 19
TRCDR = 27
TRCDRA = 27
TRRD = 7
TRC = 75
####SEQ_CAS_TIMING####
TNOPW = 0
TNOPR = 0
TR2W = 26
TCCDL = 2
TCCDS = 5
TW2R = 21
TCL = 20
####SEQ_MISC_TIMING####
TRP_WRA = 65
TRP_RDA = 26
TRP = 26
TRFC = 188
####SEQ_MISC_TIMING2####
PA2RDATA = 0
PA2WDATA = 0
TFAW = 7
TCRCRL = 2
TCRCWL = 4
T32AW = 5
TWDATATR = 0
####ARB_DRAM_TIMING####
ACTRD = 26
ACTWR = 20
RASMACTRD = 56
RASMACTWR = 64
####ARB_DRAM_TIMING2####
RAS2RAS = 188
RP = 50
WRPLUSRP = 68
BUS_TURN = 24
####MC_SEQ_MISC####
MC_SEQ_MISC1 = 0x20140A0E
MC_SEQ_MISC3 = 0xA000894A
MC_SEQ_MISC8 = 0x24710003

This is the default settings :
####SEQ_WR_CTL_D1####
DAT_DLY = 11
DQS_DLY = 11
DQS_XTR = 0
DAT_2Y_DLY = 0
ADR_2Y_DLY = 0
CMD_2Y_DLY = 0
OEN_DLY = 11
OEN_EXT = 0
OEN_SEL = 0
ODT_DLY = 0
ODT_EXT = 0
ADR_DLY = 0
CMD_DLY = 0
####SEQ_WR_CTL_2####
DAT_DLY_H_D0 = 0
DQS_DLY_H_D0 = 0
OEN_DLY_H_D0 = 0
DAT_DLY_H_D1 = 0
DQS_DLY_H_D1 = 0
OEN_DLY_H_D1 = 0
WCDR_EN = 0
####SEQ_PMG_TIMING####
TCKSRE = 2
TCKSRX = 2
TCKE_PULSE = 8
TCKE = 24
SEQ_IDLE = 7
TCKE_PULSE_MSB = 1
SEQ_IDLE_SS = 0
####SEQ_RAS_TIMING####
TRCDW = 19
TRCDWA = 19
TRCDR = 27
TRCDRA = 27
TRRD = 8
TRC = 83
####SEQ_CAS_TIMING####
TNOPW = 0
TNOPR = 0
TR2W = 26
TCCDL = 2
TCCDS = 5
TW2R = 21
TCL = 23
####SEQ_MISC_TIMING####
TRP_WRA = 67
TRP_RDA = 30
TRP = 27
TRFC = 219
####SEQ_MISC_TIMING2####
PA2RDATA = 0
PA2WDATA = 0
TFAW = 14
TCRCRL = 2
TCRCWL = 4
T32AW = 9
TWDATATR = 0
####ARB_DRAM_TIMING####
ACTRD = 28
ACTWR = 20
RASMACTRD = 56
RASMACTWR = 64
####ARB_DRAM_TIMING2####
RAS2RAS = 219
RP = 50
WRPLUSRP = 68
BUS_TURN = 24
####MC_SEQ_MISC####
MC_SEQ_MISC1 = 0x20140A0E
MC_SEQ_MISC3 = 0xA000894A
MC_SEQ_MISC8 = 0x24710003

I really would appreciate any help, suggestion.

P.S In the BIOS editor I want to set a manual voltage for state 4 1215MHz to 1135mv, is it safe to just manually type it like this : 1135 ? I know that this setting is stable in general.

Thank you in advance.

This strap is just wonderful. Iā€™ve managed to hit 2150MHz at this point, will test further, but even like this is very good. POCLMembench hits 220-226GB. Thank you so much ! This is with Sapphire Rx 580 Nitro+ 8GB with Hynix Memory.

Regarding editing the IMC voltages using the Hex editor and finding the ā€œB6 03ā€ value and change it for the ā€œ00 3Cā€, in backwards, ā€œ00 3Cā€ is not correct. This should give you 960mv, but I ended up with completely unreal value : 15 360. I was not sure about ā€œ00 3Cā€ but I tried it, and Adrenalin Driver crashed. So HeX ā€œ3C0ā€ is 960. To write this backwards in the BIOS the correct way is : ā€œC0 03ā€. So I did that and now I have 0.960v reported i AIDA64, and all is well.

@Vlad00n those sequential ras timings are still very relaxed. 16-16-26-26-6 should work absolutely fine up to 2150-2250MHz. sequential cas and misc timings can also be improved quite a bit and the arbitrary dram timings as well. Voltages are numerical only with no decimal points. 0.9v would be 900, 1.1v = 1100, etc.

Hello @ket
With this strap and 2150 Mhz on the memory for 2 hours of gaming FH5 I had 24 memory errors in HWinfo64. Then Iā€™ve decided to change the Memory controller voltage from 0.950 to 0.960 and the memory errors for now are gone. About decimal point, I know, sorry about that. My point with the HeX was that I tried the value suggested by you 00 3C but that crashed my video Driver. Then I put C0 03 and this was equal to 960mv, and all was working correctly. Iā€™ll appreciate any other suggestions regarding the strap, If you could share a new one, better one. At this point Iā€™m happy at 2150, but I might test with 2175 Mhz on the memory.

Thank you for your time.