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

Hm.
Ich habe einfach dein ROM unverändert hochgeladen. Nix geändert/modded. Wollte eigentlich erstmal testen, ob es überhaupt geht.

GPUZ hat es als Ellesmere aber RX570 erkannt und auch auf 1300MHz geändert, statt 1260. Aber Lüfter war halt permanent bei 2000rpm, als deutlich hörbar. Und das von Boot an.

Ich lade es später nochmal runter und teste nochmal.
 
Aso, hatte ich überlese, sry. Schlimmstenfalls ist was mit der Fan table.. und OEM info sollte ich auch noch kontrollieren. Kam damals keine Rückmeldung als ich das für jemanden gebastelt hatte, deswegen dachte ich alles ok. werds nochmal ansehn.
...
Also fan table stimmt:
VGA Bios Collection: Sapphire RX 470 8192 MB | TechPowerUp
zumindest dieselbe wei in diesem^^ BIOS.

OEM Info gibts nix, also betrifft es nur die sub-id. die ist dieseleb wie die der 470er, evtl kommt da was durcheinander. Sollte dann aber genauso sein wenn du dein Original switcht.
 
Hm, also auch mit dem nochmal geladenen geht es nicht besser.
Gehtnicht.png

sensors.png

aber ich habe nochmal den ersten Thread überflogen. Die RX470 Spannungen kann ich doch im PBE editieren. Du schreibst zwar, die werden erst aktiv, wenn ich auf manuell stelle, was ich eh immer mache.
Allerdings gehen die RX470 wohl nicht. d.h. ich müsste sie zu einer RX570 umbenennen und dann könnte ich mit PBE noch meine Wunschspannungen für Manuell einstellen, und signieren/UEFI, oder ?

PS: Welchen Hex-editor nutzt du? Meiner fügt derzeit den String nur ein, ich hätte gerne einen, der Überschreibt.

PPS: Habe nun das erste BIOS gebricked eben wegen dem obigen Grund (Hexeditor fügt nicht richtig ein).

Ich habe doch richtig verstanden, dass ich alles ab der markierten GOP-Zeile mit dem GOP überschreibe und danach nur noch FF einfüge oder ?

Nur als Beispiel, bei mir geht der zu markierende GOP-Bereich an 59392 los. die GOPfile ist 58879 lange.
Somit müsste bis einschl. Pos 118271 alles ersetzt werden. Danach bis Ende file (262143) nur noch FF, oder lasse ich da das was drin stand drin?

Pps3: so mach dem 2. Versuch/Brick geh ich nun doch mal ins Bett.
Eventuell kannst du mir das Originale ( kann ich dir senden) mit GOP und auf RX570 machen ohne Spannungen etc anzupassen? Dann könnte ich von da aus meine Mods machen. (Liebguck)
 
Zuletzt bearbeitet:
Habe den Text zum magic UEFI erweitert, damit da keine Missverständnisse mehr entstehen.

Ich nehme HxD, der warnt dich, wenn die Dateigröße verändert werden würde.
 
Hm beim 2.Versuch hab ich das so gemacht, System hat trotzdem nicht gebootet.

Also E6 ersetzt, Polaris20 rein und dann die GOP drüber, rest FF...Länge der Datei war identisch zum Standard Bios.

Ps. oder muss die Länge dem RX570 original bios entsprechen?
 
Zuletzt bearbeitet:
So, ganz in Ruhe nochmal. Zum Glück hast ja nen Switch. :-)

Also, der GOP/UEFI Teil im BIOS (ist eine Standard-Datei für alle Karten bis Vega, die haben dann 2.xx) ist eine gepackte Datei mit der Länge zwischen 0xE800 und 0xE600 (0x steht für hexadezimal). Die neueren Versionen sind etwas kompakter. Wenn du in deinem BIOS nun eine Version 1.60... hast, dann ist diese ja 0xE800 Bytes lang. D.h. wenn du die neue (gehackte) Version über die alte kopierst, dann bleiben genau 0x200 Bytes über. Diese sollten dann mit FF überschrieben werden, aber ich glaube es dürfte sogar nix ausmachen, wenn du das vergisst. Denn die Längenangabe ist in dem UEFI Teil drin, also da liest niemand versehentlich über den Rand. Könnte aber auch zu Problemen führen.
Übrigens, die Unterschiede zwischen 256kB Versionen und 512kB Versionen (ausgelesen über ATI-Flash) sind, dass bei der 512er noch 256kB mit FF Platzhaltern hinten dran ist.

Aber grundsätzlich solltest du die Länge der rom-Datei niemals verändern. D.h. wenn du mal Bytes hinzufügst, müssen die am Ende wieder irgendwo gekürzt werden. Und dabei müssen aber die ganzen Tables mit Anfang und Länge wieder korrigiert werden, das UEFI muss an der angegebenen Stelle zu finden sein, sowas halt.

Also, mit HxD solltest du das Byte an Adresse 0xD6 überschreiben können, und POLARIS20 eintragen können. Danach markierst du 0xE600 Bytes von Anfang des UEFI/GOP im BIOS, so wie im Bild in post#3 zu erkennen ist. Dort kopierst du dann das aktuellste magic UEFI darüber, anschließend markierst du die nachfolgenden 0x200 Bytes und bei HxD Rechtsklick -> Auswahl füllen, mit FF Hex-Werten überschreiben. Das Ganze speicherst du dann und prüfst nochmal auf CRC mit dem Polaris Bios Editor.
Wenn du das geschafft hast, hast du schonmal deine Grundlage geschaffen. Selbes BIOS wie vorher nur mit ner 5 und editierbar. Da kannst dann Spannungen, Fan Table und alles mögliche ändern. Wie gesagt, Timings machen mit am meisten Spaß.
Wenn du Fragen hast, nur weiter, das bekommen wir schon hin. Leider bin ich nicht so gut im Tutorial schreiben. ;-)
 
Moin. Vom Prinzip hab ich es schon verstanden. Ich sachätze mal, dass mein Hexeditor nicht so toll war. Der konnte z.B. nicht überschreibend einfügen sondern nur einfügend.

Hab dann die gesamte GOP eingefügt und ab Ende GOP FF eingefügt und am Ende geprüft dass die Länge identisch war...
Außerdem hat der die Position nur in Dez angezeigt nicht in Hex...

Ich werds nachher nochmal testen.

EDIT:
Also der Hexeditor ist um längen besser als die, die ich benutzt hatte, damit ist das viel einfacher.

Ich habe jetzt den ganzen Inhalt der GOP-file nicht eingefügt, sondern mit Strg+B (Schreiben) eingefügt, dann überschreibt er die vorhandenen, d.h. die Länge der Datei wird nicht geändert. Sehr praktisch und das fehlte mir bei den anderen Editoren

Drei Fragen noch:
1) woher weiß ich, welches GOP-file ich nehmen muss?
Ich schätze es ist egal ob 1.60 oder 1.65, korrekt ? Wenn ich die 1.65 nehme, dann ist direkt dahinter noch ein Bereich von Länge AB, der nicht mit FF gefüllt ist, der Rest bis Länge 200 ist dann FF.
Bei 1.60 ist kein Bereich außer FF mehr.

2) Am Ende der ROM-Datei - ab 0x38000 ist ein Bereich, der ist nicht FF, sondern mit HEX-Werten gefüllt. Die lasse ich unberührt, oder überschreibe ich die auch mit FF?
Das habe ich nämlich letztes mal gemacht, weil ich das so interpretiert hatte, dass der Rest des ROMS mit FF gefüllt werden muss. Da könnte der Fehler liegen. :wall:

3) Bevor ich Flashe, lade ich ja das Image. Ist es egal, dass die Image Size unterschiedlich angegeben wird ? Ich schätze mal schon, da es bei deinem ROM auch so ist, da ist Image size auch 0x40000
size.png


ROM ist erstellt, ich warte jetzt aber nochmal lieber auf deine Bestätigung - im Fall 2 - bevor ichs draufspiel, weil der PC im Schreibtisch steht und ich den quasi abbauen muss, damit ich an den BIOS-switch komme :ugly:
 
Zuletzt bearbeitet:
verwende lieber die DOS-Version, atiflash -biosfileinfo oder so ähnlich. wenn du nur atiflash eingibst, dann sieht du die ganzen Optionen.

eine Länge von 0xE800 weist darauf hin, dass Image 2, also das UEFI, nicht erkannt wurde. Da stimmt also was nicht.
Ist schon richtig das nicht alles der überstehenden Bytes mit Daten gefüllt ist, aber die Größe variert nur mit +/-0x200 Bytes, also nur so kann man die Länge von Image1 (Standard + Data/Command Tables) und Image2 (UEFI/GOP) festlegen. Deswegen ist das eine 0xE800, und die neuen 0xE600 lang, wurscht. Wichtig ist nur das die restlichen Bytes des alten GOP auch überschrieben werden.
Hinter dem GOP befinden sich auch Daten, diese sollten nicht verändert werden.

Die GOP-Files sind Standard, du kannst also jedes nutzen. Außer die mit 2.x, von denen ich hier auch kein gehacktes hab. Das GOP austauschen geht auch ohne CRC check, und die BIOS-Datei verliert auch nicht ihre Signatur, man kann also auch das Originial aus einem anderen BIOS irgend einer Karte nehmen. Solange man sonst nix ändert und solange die Device ID auch richtig ist, und die ist bei 470/570/480/580 dieselbe, 0x67DF. 0x1002 für ATI/AMD findet sich gleich daneben. In "little endian", also 02 10 DF 67..
Also wäre die Empfehlung 1.65 fürs magic UEFI; die anderen habe nur online gelassen.. ja keine AHnung warum. Evtl damit jeamdn einen Fehler ausschließen kann, oder sowas.. aber ist nur das UEFI, und die sind aktuell wohl am besten, selbst auf alter Hardware.

0x40000 sind exakt 256KB, 0x40000 Byte durch 0x400 (=1024, kibi) = 0x100 = 256 in dezimal. Bei 512KB großen Flashrom wie der Referenz wird dann auch mal 80000 angezeigt, wie gesagt nur 256KB voller 0xFF Platzhalter.
Also bei einem 256KB BIOS sinds dann Offset 0x00 bis 0x3FFFF in HxD, was genau diese 0x40000 Bytes sind. Diese Länge sollte nicht geändert werden, kann man schon, aber wenn man es beim modden ändert hat man meist was falsch gemacht. Bytes hinzufügen oder löschen ist nicht ohne weiteres möglich, da Bedarf es mehr Info, aber das ist auch dann nur von Nutzen wenn man irgend einem Table noch Infos hinzufügen will. Wie der 1000MHz Mem-Step oder man will den PWM-Controller noch speziell programmieren.
 
Zuletzt bearbeitet:
verwende lieber die DOS-Version, atiflash -biosfileinfo oder so ähnlich. wenn du nur atiflash eingibst, dann sieht du die ganzen Optionen.

eine Länge von 0xE800 weist darauf hin, dass Image 2, also das UEFI, nicht erkannt wurde. Da stimmt also was nicht.

Das Bios mit Länge 0xE800 ist aber das unmodifizierte Stockbios ... und das wo steht Neuer VBios ist mein modifiziertes...


Wenn ich ein Abbild vom Stock bios lade steht aber 0x80000 bzw 40000 je nachdem ob das mit GPUZ oder Atiflash gezogen wurde.
Denke die Anzeige des aktuellen ist falsch.

Ich werde berichten ob es geklappt hat.
 
Zuletzt bearbeitet:
Also. Mein einfach geändertes Bios bootet, aber ich bekomme dasselbe Problem, dass Adrenalin mir den Fehler auswirft es sei keine AMD Karte installiert. Und im Gerätemanager steht die RX570 ebenfalls mit Fehler... irgendwie scheint das GOP 1.65 nicht zu gehen. Ich teste mal ältere.
1.63 gleicher Fehler.

Kann es sein, dass der aktuelle Treiber/Adrenalin das blockiert? (18.3.4)

Weißt du ob ich das Original Sapphire RX570 Nitro 8GB Bios verwenden kann? D.h. hat die denselben Controller etc ? Müsste ich da auch noch das GOP anpassen?
 
Zuletzt bearbeitet:
Wenn es der Signature check ist, dann kannst du ja mal testen ob es mit driver patch funzt:
AMD/ATI Pixel Clock Patcher

und zur originalen 570er Nitro.. Nein! Keinesfalls! Es müsste sich schon um das vollständig identische PCB mit selben PWM-Controller und selben Spulen/Mofets handeln, damit das alles funzt. Der Spiecher wäre da noch das geringere Problem. Wirklich absolut nicht empfehlenswert.

Das magic UEFI brauchst du immer sobald du was verändert hast. Jedenfalls bei UEFI only boot..
 
work.png

Danke dir vielmals. Jetzt kann ich mich an die States wagen :)

Ggf spiel ich auch dein Rx570 bios mal drauf.
 
Zuletzt bearbeitet:
Du könntest auch folgendes versuchen, falls du gerade mal Laune dafür hast. Und zwar könnte man den Code im BIOS auch derart anpassen, das eine RX 580 erkannt wird. Das würde definitiv keine Shader freischalten, aber möglicherweise problemlos laufen, und das dann ohne Patch.
Dafür sind die Bytes an offset 0xD4-0xD7 relevant, da ist auch das berühmte 0xD6 Byte drin.
Code für 470:
F0 7D C6 0F
570:
F0 7D E6 0F
580:
F0 7D E6 07
..um aus deinem 570 BIOS ein 580er machen zu können, ist also das Byte an offset 0xD7 von dem Wert 0x0F auf 0x07 zu ändern.
Sollte funzen, die GPU ist dieselbe und die Strukturen identisch, Treiber sollte also damit zurecht kommen.
 
Das ist ja dann auch schon egal. Mir ging es hauptsachlich darum meinen Undervolt so hinzubekommen, so dass ich den nicht nach jedem Reboot neu einstellen muss.
Ggf. Tune ich noch ein wenig die Timings aber das wars dann auch.
Danke schonmal für deine Mühe.
 
Ich hab jetzt das Bios aus dem #1 Post genommen und da scheint die Watt Anzeige richtig zu sein mit 6w im Idle.
Vielen Dank hellm! :)

edit: Vielleicht ist 6w auch nicht richtig, ich weiß nicht.
tomshardware sagt ca. 16w - 20w : https://img.purch.com/r/711x457/aHR...3L1ovNjYyNTQzL29yaWdpbmFsL2ltYWdlMDAzLnBuZw==

Du vergleichst das, was die Software Tools "auslesen" können mit den tatsächlichen Messungen mit entsprechendem Equipment. Eine Radeon hat keinerlei Stromkreise zum Messen von Verbrauchswerten:
Eingebundener Inhalt
An dieser Stelle findest du externe Inhalte von Youtube. Zum Schutz deiner persönlichen Daten werden externe Einbindungen erst angezeigt, wenn du dies durch Klick auf "Alle externen Inhalte laden" bestätigst: Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit werden personenbezogene Daten an Drittplattformen übermittelt.
Für mehr Informationen besuche die Datenschutz-Seite.
Desweiteren ist das kein trivialer Wert, sondern wird berechnet. Wie ich erwähnt habe, wenn man ein 4xx switcht auf 5xx hat man etwa 15% höhere Verbrauchswerte, mit demselben BIOS.

Und im Idle verbraucht die Karte mit dem 580 BIOS natürlich weniger, die idle Spannung ist um 50mV geringer. Und weil ohne diese Power Saving Treiberoption nur auf 300MHz getaktet wird, das muss man bei einer 480 erst aktivieren.

Aber für taugliche Messungen taugt nur entsprechende Hardware wie ein DMM oder Ähnliches.
 
Du vergleichst das, was die Software Tools "auslesen" können mit den tatsächlichen Messungen mit entsprechendem Equipment. Eine Radeon hat keinerlei Stromkreise zum Messen von Verbrauchswerten:
Eingebundener Inhalt
An dieser Stelle findest du externe Inhalte von Youtube. Zum Schutz deiner persönlichen Daten werden externe Einbindungen erst angezeigt, wenn du dies durch Klick auf "Alle externen Inhalte laden" bestätigst: Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit werden personenbezogene Daten an Drittplattformen übermittelt.
Für mehr Informationen besuche die Datenschutz-Seite.
Desweiteren ist das kein trivialer Wert, sondern wird berechnet. Wie ich erwähnt habe, wenn man ein 4xx switcht auf 5xx hat man etwa 15% höhere Verbrauchswerte, mit demselben BIOS.

Und im Idle verbraucht die Karte mit dem 580 BIOS natürlich weniger, die idle Spannung ist um 50mV geringer. Und weil ohne diese Power

Das bezieht sich aber nur auf die gemoddeten Bios oder?
D.h. mit meiner kleinen Änderung oben passiert ja nichts weiter, als dass die karte anders heißt. Oder hab ich dadurch jetzt auch quasi anderes Power management bzw Mehrverbrauch?
 
Nein, das veränderte Powermanagement gibts nur beim 580er BIOS.
Gemeint ist dasselbe BIOS, also vorher-nachher, 480->580.

Unter Vollast ist alles wie gehabt, VRM arbeitet wie zuvor.
 
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
 
Zurück