[BIOS-Mod] RX480 -> RX580 Conversions & Custom Mod How-to RX470/RX480/RX570/RX580

Hallo in die Runde,

ich habe ein kleines Problem mit meiner HIS Radeon RX 480 IceQ X². Und zwar laeuft sie, wenn zwei unterschiedliche Monitore angeschlossen sind, grundsaetzlich mit 600/2000 und verbraucht auf dem Desktop rund 30 Watt mehr. Bis jetzt habe ich das umgangen, indem der zweite Bildschirm an der IGP hing. Das wird aber bei dem bald anstehenden Wechsel auf Ryzen nicht mehr moeglich sein. Also meine Frage:

Ist es moeglich, ein Bios zu basteln, dass die Karte auf dem Desktop auf 300/300 haelt?

Ich hatte bereits vor einiger Zeit ein 580er Bios drauf (ich weiß nicht mehr welches), aber das lief nicht wirklich rund, bis auf die Powerstates der Karte, die waren klar zuverlaessiger. Leider war es zu instabil, sodass ich zurueck zum Original bin. Da ein Biosswitch vorhanden ist, ist das auch kein Problem.

Am liebsten waere mir ein 480er Original-Bios, dass so modifiziert ist, dass die Karte auf dem Desktop idled.

Grundsaetzlich kann ich die Arbeit auch selber machen, wenn ich ein wenig Hilfe bzw. Anleitung erhalte.

Vielen Dank schon mal im Voraus


MFG

Einhard

Ich weiß nicht genau, es könnte eine Möglichkeit bestehen. Ich habe mal beim Rest von meinem Team angefragt ob die noch Infos haben oder damit schonmal rumgespielt haben. Wenn du bereit für Trial and Error bist, ich geb dir heute/morgen noch ein paar Infos wo du möglicherweise ansetzen könntest.

Also wenn du eine Version gestestet hast, bevor ich IMC Voltage gefixt hatte, dann konnte es schon passieren das v.a. der 1000MHz State ein paar Fehler geworfen hat. Sollte aber inzwischen alles sehr, sehr stabil laufen, Memory Errors gibts inzwischen eher weniger denn mehr.

Den 480er mod aus Post#2 kannst du bedenkenlos nehmen, verfügt auch über den 1000MHz Memory State, und zwar genau wie bei den 580er implementiert. Leider wird im Multi (wie auch bei den 580ern) immer noch 2000MHz angewählt, und ich glaube es gab schon erfolglose Versuche das zu ändern. Aber schaun mer mal..

Update:
also die PowerPlay hab ich mir nochmal angesehn, hier sind die Sub-Tables aus dem Header:
4D 00 uint16_t StateArrayOffset; // Offset: 0x22
A1 02 uint16_t FanTableOffset; // Offset: 0x24
98 02 uint16_t ThermalControlOffset; // Offset: 0x26
00 00 uint16_t Reserved0; // Offset: 0x28
B5 01 uint16_t MemClkDepTableOffset; // Offset: 0x2A
3B 01 uint16_t CoreClkDepTableOffset;
77 00 uint16_t VDDCLookupTableOffset;
F9 00 uint16_t VDDCGFXLookupTableOffset;
DE 01 uint16_t MMDependencyTableOffset;
06 03 uint16_t VCEStateTableOffset;
00 00 uint16_t PPMTableOffset;
D1 02 uint16_t PowerTuneTableOffset;
00 00 uint16_t HardLimitTableOffset;
20 03 uint16_t PCIETableOffset;
3A 03 uint16_t GPIOTableOffset;
das einzig interessante wäre dann StateArray

typedef struct _PolarisStateArrayTable
{
uint8_t RevisionID;
uint8_t NumEntries;
PolarisState Entries[1];
} PolarisStateArrayTable;

Update2:
So, diesmal richtig, in der PowerPlay Table offset 0x4D
01 02 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 07 00 02 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00
Der erste Teil ist noch überschaubar:
typedef struct _PolarisStateArrayTable
{
01 uint8_t RevisionID;
02 uint8_t NumEntries;
PolarisState Entries[1];
} PolarisStateArrayTable;

d.h. es gibt nur 2 entries, und keinen speziellen für MultiMonitor. Für den zusätzlichen Memory Step von 1000MHz muss ein 01 in 02 geändert werden, vermutlich weils dann von 00-02 geht..

Jedenfalls finde ich nichts im BIOS. Auch sonst niemand, das ist wohl eine Treibergeschichte. Sorry.
 
Zuletzt bearbeitet:
Sorry, dass ich mich erst jetzt melde, aber es war eine stressige Woche.




Ich weiß nicht genau, es könnte eine Möglichkeit bestehen. Ich habe mal beim Rest von meinem Team angefragt ob die noch Infos haben oder damit schonmal rumgespielt haben. Wenn du bereit für Trial and Error bist, ich geb dir heute/morgen noch ein paar Infos wo du möglicherweise ansetzen könntest.

Mit Trial and Error habe ich ueberhaupt keine Probleme, da das Dualbios ja quasi die beste Versicherung ist. Vielen Dank schon einmal an dieser Stelle

Also wenn du eine Version gestestet hast, bevor ich IMC Voltage gefixt hatte, dann konnte es schon passieren das v.a. der 1000MHz State ein paar Fehler geworfen hat. Sollte aber inzwischen alles sehr, sehr stabil laufen, Memory Errors gibts inzwischen eher weniger denn mehr.

Ich hatte letztes Jahr im Maerz ein Bios einer 580 drauf, dass aber nicht von hier war.

Den 480er mod aus Post#2 kannst du bedenkenlos nehmen, verfügt auch über den 1000MHz Memory State, und zwar genau wie bei den 580er implementiert. Leider wird im Multi (wie auch bei den 580ern) immer noch 2000MHz angewählt, und ich glaube es gab schon erfolglose Versuche das zu ändern. Aber schaun mer mal..

Update:
also die PowerPlay hab ich mir nochmal angesehn, hier sind die Sub-Tables aus dem Header:
4D 00 uint16_t StateArrayOffset; // Offset: 0x22
A1 02 uint16_t FanTableOffset; // Offset: 0x24
98 02 uint16_t ThermalControlOffset; // Offset: 0x26
00 00 uint16_t Reserved0; // Offset: 0x28
B5 01 uint16_t MemClkDepTableOffset; // Offset: 0x2A
3B 01 uint16_t CoreClkDepTableOffset;
77 00 uint16_t VDDCLookupTableOffset;
F9 00 uint16_t VDDCGFXLookupTableOffset;
DE 01 uint16_t MMDependencyTableOffset;
06 03 uint16_t VCEStateTableOffset;
00 00 uint16_t PPMTableOffset;
D1 02 uint16_t PowerTuneTableOffset;
00 00 uint16_t HardLimitTableOffset;
20 03 uint16_t PCIETableOffset;
3A 03 uint16_t GPIOTableOffset;
das einzig interessante wäre dann StateArray

typedef struct _PolarisStateArrayTable
{
uint8_t RevisionID;
uint8_t NumEntries;
PolarisState Entries[1];
} PolarisStateArrayTable;

Update2:
So, diesmal richtig, in der PowerPlay Table offset 0x4D
01 02 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 07 00 02 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00
Der erste Teil ist noch überschaubar:
typedef struct _PolarisStateArrayTable
{
01 uint8_t RevisionID;
02 uint8_t NumEntries;
PolarisState Entries[1];
} PolarisStateArrayTable;

d.h. es gibt nur 2 entries, und keinen speziellen für MultiMonitor. Für den zusätzlichen Memory Step von 1000MHz muss ein 01 in 02 geändert werden, vermutlich weils dann von 00-02 geht..

Jedenfalls finde ich nichts im BIOS. Auch sonst niemand, das ist wohl eine Treibergeschichte. Sorry.

Wenn ich das richtig verstanden habe, bedeutet das, dass es keinen Weg an dem 600/2000er State vorbei gibt? Dann werde ich wohl in den sauren Apfel beißen muessen.

Trotzdem Danke fuer deine Muehen!

Einhard
 
hmm.. sieht schlecht aus. Du bist auch nicht der einzige der diesen Wunsch geäußert hat, aber momentan kann da aber niemand was machen.

@microwilli
Ich habe herausgefunden wie man den Cold Slow bei unter 0°C umgehen kann, habe ich bei einem Fiji LN2 BIOS abschaun können. Der "Thermal Controller" ist nun deaktiviert, d.h. aber auch das keine Temperaturen mehr ausgelesen werden können. TDP und Power Limit habe ich auf 1000W bei max 800A erhöht.

Ich weiß nicht ob in diesem BIOS mit Absicht noch die Frequenz aufs Maximum gefixt wurde, deswegen habe ich das in v1.0 gelassen und bei v1.1 hinzugefügt. So sollte es dann auf jeden Fall funzen, auch wenn ich glaube das dies keine zwingende Maßnahme ist. Also bei 1.1 dürften jedenfalls die GPU und Mem niemals heruntertakten..

Anhang anzeigen xfx480gtr.ln2.v1.0.rom.zip
Anhang anzeigen xfx480gtr.ln2.v1.1.rom.zip
Anhang anzeigen xfx480gtr.original.ln2.v1.0.rom.zip
Anhang anzeigen xfx480gtr.original.ln2.v1.1.rom.zip

Ich empfehle wie immer die UberMix Timings aus Post#1. ;-)
 
Zuletzt bearbeitet:
Hallo liebe Leute,

ich habe mir gestern eine gebrauchte Sapphire RX 480 8GB Nitro OC (ohne Plus) gekauft. Diese soll in meinen HTPC für MadVR herhalten. Nun würde ich gern die Vorzüge des 580 BIOS nutzen und gleichzeitig direkt im BIOS die P-Stats einstellen. Leider sind auf der Karte Micron Speicher verbaut und daher weiß ich jetzt nicht so recht wie ich da vorgehen soll und desweiteren könnte ich einen kleinen Crashkurs für die P-Stats vertragen. Die Karte soll wegen ihres Einsatzortes nicht OC werden sondern UV.

Ich bin für jeden guten Tip dankbar und freu mich auf das Ergebnis.

Mit freundlichen Grüßen

Uwe
 
Die Nitro ohne + verwendet eine andere Platine mit einem Controller von ON Semiconductor. Funzt nicht mit meinen Nitro+ BIOS .
Aber du kannst dir dein eigenes BIOS basteln, mit den Informationen aus Post#3. Nur Offset 0xD6 bearbeiten, GPU-String zu POLARIS20 ändern und das magische UEFI kopieren. Dann können Spannung / Takt / Limits / Timings geändert werden.

Die P-States werden über die ASIC Profiling Table berechnet, ich kann dir die Spezis geben, aber ich würde nicht empfehlen daran rumzupielen. Dieser Table ist bei allen 480er und 580ern gleich, die Änderungen betreffen auch andere Dinge, man müsste sein Bios aus anderen Tables basteln, das wird Flickwerk bzw. mit der Object Info Table und fehlender, kompletter Dokumentation ein sehr aufwendiges Abenteuer.

Die minimale Vcore und die maximale aus der ASIC Profiling Table können aber ohne weiteres angepasst werden. Danach bekommen dann die anderen P-States ihre Spannungen, um das zu ändern ist es am einfachsten das über WattMan zu erledigen. Die 65xxx Pointer der PowerPlay Table sind mit dem PBE auf explizite Spannungswerte änderbar, gelten aber erst wenn man auf manuelle Spannung im Wattman schaltet.
Es sollte meist aber reichen die maximale und minimale Vcore anzupassen, die maximale habe ich in Post#3 erklärt, die minimale befindet sich gleich rechts daneben.
 
Ich hab nun nochmal das nitro+ 570 1.0.0.4 bios aufgespielt. Läuft so bzw nach Treiber installation und Treiberfix/patcher.RAM Timings gehen auch sogar mit 2050 wie eingestellt. Hab den Takt allerdings von 1300 wieder auf 1260 gesenkt da ich UV. Dadurch dass hier der offset fehlt Stelle ich für p7 halt entsprechend mehr ein als beim original Bios.

Einziges manko.
Der Kühler dreht beim booten auf 2000rpm und erst wenn der Treiber geladen ist ist es normal bzw wird er leise.

Das Treiberfix muss man immer machen oder, hatte eigentlich gedacht wenn man das Magic uefi nimmt muss das nicht.
Und man muss den vorm Adrenalin updaten rückgängig machen oder?
 
Möglicherweise braucht das UEFI des Mainboards ein Update? Evtl mit anderen UEFI/GOP Versionen wieder anders? Und wie gesagt, Fan Table ist derselbe. Ich habe im Moment keine Antwort.

Ja, dann hat AMD den Signature Check für die 570 eingeführt. Wie man aus der 570 dann eine 580 macht, habe ich hier erklärt.

Mir fehlt es an Erfahrung mit dem Patch, da kann ich leider keine Tipps geben.
 
Hallo, ich melde mich nach nem halben Jahr mal wieder zurück
http://extreme.pcgameshardware.de/o...580-31.html?highlight=gandalf2210#post9076665
Mein Lüfter ist immer noch irgendwie verbastelt, aber mit afterburner läuft es ganz gut.
Die eingestellten max Spannungen im BIOS wollen aber noch nicht so recht.
Wie im ersten post beschrieben habe ich den Wert hinterm 0C 01 03 06 Schlüssel auf 28 9A 01 gesetzt um maximal 1050mV Spannung anliegen zu haben, und auch den Wert bei 8A 00 EB FF FF FF auf 68 10 geändert. (So ausgelesen mit dem hex editor aus einem frisch ausgelesenem ROM mit GPU-Z)
Trotzdem schert sich meine Grafikkarte nicht um die eingestellten Werte.
Afterburner habe ich komplett ausgeschaltet, nicht dass er da was mit den Spannungen rumfummelt. Startet auch nicht mit windows.
Mit OverdriveN habe ich es zumindest geschafft, dass er die Spannung nach einem neustart hält. Nach wiederaufwecken aus dem standby liegen aber wieder 1150mV an laut GPU-Z 2.8.0
Es liegt also mehr Spannung an, als eigentlich im BIOS vorgesehen ist. Hat AMD da was an ihren Treibern geändert? ignorieren die Beschränkungen, die im BIOS hinterlegt sind? Oder ist nicht vorgesehen Polaris mit solch niedrigen Spannungen zu betreiben?
 
Möglicherweise braucht das GOP/UEFI des Mainboards ein Update? Evtl mit anderen UEFI/GOP Versionen wieder anders? Und wie gesagt, Fan Table ist derselbe. Ich habe im Moment keine Antwort.

Ja, dann hat AMD den Signature Check für die 570 eingeführt. Wie man aus der 570 dann eine 580 macht, habe ich hier erklärt.

Mir fehlt es an Erfahrung mit dem Patch, da kann ich leider keine Tipps geben.

Mainboard ist aktuell.
Habe alle UEFI-Versionen durch. Ggf. Wenn ich Lust habe teste ich nochmal das 1.0.0.4 auf 580 umzustellen. Aber erstmal bin ich so zufrieden. Versuche jetzt erstmal mit dem neuen Bios die beste Einstellung zu finden (Wattman).
 
Hallo, ich melde mich nach nem halben Jahr mal wieder zurück
http://extreme.pcgameshardware.de/o...580-31.html?highlight=gandalf2210#post9076665
Mein Lüfter ist immer noch irgendwie verbastelt, aber mit afterburner läuft es ganz gut.
Die eingestellten max Spannungen im BIOS wollen aber noch nicht so recht.
Wie im ersten post beschrieben habe ich den Wert hinterm 0C 01 03 06 Schlüssel auf 28 9A 01 gesetzt um maximal 1050mV Spannung anliegen zu haben, und auch den Wert bei 8A 00 EB FF FF FF auf 68 10 geändert. (So ausgelesen mit dem hex editor aus einem frisch ausgelesenem ROM mit GPU-Z)
Trotzdem schert sich meine Grafikkarte nicht um die eingestellten Werte.
Afterburner habe ich komplett ausgeschaltet, nicht dass er da was mit den Spannungen rumfummelt. Startet auch nicht mit windows.
Mit OverdriveN habe ich es zumindest geschafft, dass er die Spannung nach einem neustart hält. Nach wiederaufwecken aus dem standby liegen aber wieder 1150mV an laut GPU-Z 2.8.0
Es liegt also mehr Spannung an, als eigentlich im BIOS vorgesehen ist. Hat AMD da was an ihren Treibern geändert? ignorieren die Beschränkungen, die im BIOS hinterlegt sind? Oder ist nicht vorgesehen Polaris mit solch niedrigen Spannungen zu betreiben?
Zum Lüfter haben sich noch ein, zwei Infos versammelt, siehe Post#3.

Das mit der Vcore ist doch sehr sonderbar. Wenn du den Pointer aus der PowerPlay (65xxx im PBE) nicht verändert hast, ist die einzige Info für die Spannung aus der ASIC_Profiling, und das hast du ja geändert. Zu beachten ist allerdings noch, das dies OverdriveN Tool genau wie WattTool die AMD API nutzt, also dasselbe macht wie Wattman auch. Und wenn man damit Einstellungen trifft, aktiviert man tatsächlich auch die manuelle Spannung.
Mit dem Sleep habe ich keinerlei Erfahrung, aber das sollte doch auch funzen. Möglich das der Treiber reinquatscht, aber bisher ist mir dahingehgend nix bekannt. Also ich hab immer mehr als 1150mV anliegen gehabt, aber gab auch schon genug die undervolted haben. 1050mV ist a weng weng, hat evtl noch niemand versucht, aber sollte genauso funzen. In der ASIC Profiling befinden sich zwar noch 2 Werte die sich auf 1150 beziehen, die haben aber niemals reingequatscht, und sind bei allen Karten, egal welche Vcore dasselbe.
Update:
Natürlich darf auch die IMC Spannung nicht höher als die Vcore sein, also diese Spannung ist eher IMC voltage floor, eine Minimum, dabei handelt es sich auch um die Vcore.

Mainboard ist aktuell.
Habe alle UEFI-Versionen durch. Ggf. Wenn ich Lust habe teste ich nochmal das 1.0.0.4 auf 580 umzustellen. Aber erstmal bin ich so zufrieden. Versuche jetzt erstmal mit dem neuen Bios die beste Einstellung zu finden (Wattman).

Jo, wenn du kein Problem mit dem Patch hast.. Lass was hören wenn du auf 580 getestet hast, auf OCN war damit schon jemand erfolgreich, glaube ich, aber immer gut noch ne Bestätigung zu haben. Evtl mach ich dann 470-580 BIOS Files draus..
 
Zuletzt bearbeitet:
Hallo ich bin es noch mal, ist bestimmt meine Schuld aber ich habe ein Problem das der ATIwinflash nicht starten will. Er soll seine Dienste auf einen Windows 10 mit neusten Update verrichten aber will einfach nicht starten. Hat jemand das selbe Problem.

mit freundlichen Grüßen

Uwe
 
Bei mir lief der bis vor einigen Tagen ohne Probleme (ich gehe mal aus Rechtsklick und als Admin ausführen machst du )
 
Atiflash 2.77 funzt ab Windows 10 Version 1803 nicht mehr. Bis jetzt ist mir noch kein Workaround bekannt. Man könnte wohl aber einen 1709 Installations-Stick basteln und da dann dort den Befehlsinterpreter starten, also falls safe-mode und weiteres nicht funzt.
 
Ok ich hab es jetzt mit einem älteren Windows hinbekommen. Leider scheint er die Max. Volt nicht übernommen zu haben. Es sollte ja eigentlich 1000mv statt 1150mv im WattMan stehen?

Edit: hab jetzt einfach die Werte im PBE eingetragen und werden sauber übernommen.

danke euch ;)
 
Zuletzt bearbeitet:
AW: Update RX 480 zur RX 580 für Referenz und Customs mit IR3567B

Habe aus meiner RX480 Gaming x 8 GB per Flash ein Upgrade zur RX 580 durchgeführt .
Bei mir wird aber der neue Powerstate des Ram von 1000Mhz nirgends angezeigt ganz egal welche der Bios Versionen ich der Karte verpasse.
Habe extra beide Versionen mal geflasht und bei beiden fehlt der 1000Mhz State im Wattman.
msi480-580.1.1.12.rom.zip und msi480-580.original.1.1.04.rom.zip sowie auch mal testweise ein vBios der 580 aus der Techpowerup Sammlung.
Ist der Powerstate nun vorhanden oder nicht und wie erkenne ich das er da ist ?


Andere Frage was hat es den mit den verschiedenen Bios Versionen auf sich IR Conroller muss ich da was beachten ?
Was genau ist den mit dem Customs mit IR3567B ist meine Karte davon betroffen ?
Ich weiß j noch nicht mal welchen Controller die RX480 Gaminng X 8GB überhaupt verbaut hat .

Grüße und Vielen Dank an den Hellm für seine Arbeit und hoffentlich meine Antworten :-)

PS : ATIFLASH läuft nicht mit Windows 10 v.1803 hatte riesig Theater damit :-(
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    27,1 KB · Aufrufe: 39
  • Unbenannt2.JPG
    Unbenannt2.JPG
    23,4 KB · Aufrufe: 28
  • Unbenannt3.JPG
    Unbenannt3.JPG
    59,7 KB · Aufrufe: 45
Zuletzt bearbeitet:
Der 1000MHz State sollte in beiden Fällen vorhanden sein. Insgesamt werden auch 3 in Wattman angezeigt (State0=300MHz, State1=1000, State2=2000) nur die MHz sind voll daneben. Sollte wieder an Wattman liegen, denn die verschiedenen Memory States sind mit den richtigen Werten implementiert. Kann man mit dem Polaris BIOS Editor an der Datei selbst prüfen, der liest die verschiedenen States aus.
Da ich selbst im Moment keine Polaris habe, kann ich dir aber nicht sagen wie man das noch so erkennen kann im Windows. Außer evtl noch mit WattTool, da fehlt dann State2 mit den 2000MHz, weil es leider kein Update mehr seit der 580 gab. Aber die 1000MHz werden angezeigt.

Da war ich vielleicht etwas sparsam mit meinen Erklärungen, wieder mal. IR Controller steht nicht für ein Bauteil das etwa mit Infrarot etwas kontrolliert, gemeint ist der Hersteller "International Rectifier", seit 2014 zu Infineon gehörend.
Die Bezeichnung IR3567B ist für einen solchen PWM-Controller, der kann die einzelnen Phasen zur Spannungsversorgung der GPU steuern.
https://www.infineon.com/dgdl/pb-ir3567b.pdf?fileId=5546d462533600a4015356803a7228ef
Die meisten Custom Karten zur RX480 verwenden diesen Controller, oder eben auch wenige 470 Karten. Die programmierung ist nun denkbar einfach und wenigstens teilweise auch durch die Community dokumentiert. Bei den anderen gibts auch mal Infos, wie z.B. einem häufig verwendetem Modell von ON Semiconductor, einem weiteren Hersteller solcher Controller-Chips. Wird über Bits programmiert, da rechnet man am Ende quasi sein ganzes Programm zusammen. Das alleine wäre schon aufwendig genug, aber die Realisierung im BIOS ist dann nochmal komplizierter, mit dem 2. und 3. Teil der Voltage Object Info Table usw..
Ah, und die Asus Strix hat irgend eine spezial-Version, etwas dicker als der IR3567B, aber ist genauso easy und quasi über dieselben Register programmierbar.

Zum letzten, wenn du ein paar Tipps zur Lösung des riesigen Theaters mit 1803 hättest, ich kann da derzeit auch nix testen. Ich werde das noch die Tage in OP aufnehmen, aber erst wenn jemand einen Workaround gefunden hat, der sicher funzt.

Update:
Laut Sapphire ist 2.77 immer noch die aktuellste Version von Atiflash.

Ein funzender Workaround ist z.B. ein Windows 1709 Bootstick.
How to install Windows to USB from an ISO, WIM/ESD/SWM/VHD/VHDX file?

Die andere Möglichkeit wäre einen Windows 1709 Installations-Stick zu nutzen. Nachdem Sprache, Uhrzeit und Tastatur Layout ausgewählt wurden geht man nicht auf >Installieren< sondern auf Computerreparaturoptionen. Im englischen gehts dann mit Troubleshoot -> Advanced Options -> Command Prompt zum Ziel.
 
Zuletzt bearbeitet:
Zurück