• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.
  • The forums have been upgraded with support for dark mode. By default it will follow the setting on your system/browser. You may override it by scrolling to the end of the page and clicking the gears icon.

Radeon HD77xx/78xx/79xx BIOS Editor

Joined
Dec 4, 2010
Messages
15 (0.00/day)
Location
Belarus, Grodno
Processor AMD Phenom II x4 965 BE / CPU: 4162 MHz / CPU-NB: 2639 MHz
Motherboard Gigabyte GA-MA770T-UD3 / HT: 2030 MHz
Cooling Thermalright HR-02 Macho
Memory 8096MB (4x2048) / DDR3 / 1353 MHz / 9-9-9-24 1T
Video Card(s) AMD Radeon HD 7950 3GB / GPU: 1100 MHz / MEM: 6400 MHz
Storage Many :)
Display(s) Benq XL2411T
Case None
Audio Device(s) Creative X-Fi Titanium
Power Supply Thermaltake TR2 RX-650W
Radeon HD77xx/78xx/79xx BIOS Editor v0.4 [12.May.2013]

Hi!

I'm currently working on a small programm to edit such things as: maximum power limit, maximum voltage, frequencies.

I already have info on what to edit in BIOS for:
- maximum/minimum Power Limit value adjusting
- voltage adjustment on reference and non reference cards
Dunno how to change clocks.

Currently only PowerLimit change is supported (cuz the work was started just today :) ). You can switch it between 20 and 50%. I've tested setting 100% but after flashing I still had 50% limit, so everythyng higher then 50 is useless.

The next step will be editing voltages on reference boards, but without support for Boost mode voltages.
Then it's voltage editing on not reference boards, but it won't be too automated, since you have to know your power controller model, it's VID codes and you'll have to find the algorithm of how they are represented in your BIOS voltages table. I can only display the voltage table with VIDs in decimal format for users to edit and save it by their own.
Then I hope to add support for Boost mode voltages, but it's not too clear how to find it in BIOS atm. The main table is always followed by the same bytes, so finding these bytes in bios helps to get the address of this table's ending to move backwards reading it. But there's no such constant bytes after the boost table, they are differ from bios to bios, so I'll have to create some algorithm for recognizing this table without them.



< - How to Use - >​
You can always find actual instructions in "Help" -> "How to Use" window. Just don't remember - you have to save BIOS from your card in some utility like GPU-Z to edit it in this utility and you have to flash it with ATIFlash after editing.

< - What can it do right now? - >​
You can raise your cards maximum and minimum Power Limit from default (for most cards) 20% up to 50%. Don't forget that you only increase it's maximum value, you still have to set it to 50% in CCC or any other software. Why do you need this? There's a chanse that you won't be able to maximise GPU's and memory's overclock at the same time because you'll reach card's maximum TDP. Increasing it solves this problem. It won't help in any other situations.
Why the maximum is only 50%? I've tested another values and flashing 100% gave me the same 50% limit so it looks like a hardware limit. Anyway, you won't need such high values, imho.

< - What are the plans? - >​
1) Detecting if BIOS reference ot not. Done. Also added reading voltages table support for reference boards.
2) Ability to modify voltages for reference boards without Boost feature.
3) Providing a comfort way to modify voltages table on non-reference boards.
4) Ability to modify Boost mode voltages on reference cards.
5) Ability to manage clocks? (Needs testing)

< - Links - >​
Original topic - click.
Used or currently implementing methods of editing - click.
Source of two main classes - click.
 

Attachments

  • Radeon HD 7000 BIOS Editor v0.2.zip
    Radeon HD 7000 BIOS Editor v0.2.zip
    274.2 KB · Views: 6,102
  • Example of 50% limit on PowerColor 7850 1GB after patching.png
    Example of 50% limit on PowerColor 7850 1GB after patching.png
    171 KB · Views: 9,567
  • Radeon HD 7000 BIOS Editor v0.3.zip
    Radeon HD 7000 BIOS Editor v0.3.zip
    275.5 KB · Views: 2,293
  • Radeon HD 7000 BIOS Editor v0.4.zip
    Radeon HD 7000 BIOS Editor v0.4.zip
    1.3 MB · Views: 2,666
  • HowToUse.png
    HowToUse.png
    22.8 KB · Views: 9,202
  • MainWindow.png
    MainWindow.png
    171.5 KB · Views: 9,849
  • Radeon HD 7000 BIOS Editor v0.41.zip
    Radeon HD 7000 BIOS Editor v0.41.zip
    1.4 MB · Views: 3,508
  • Radeon HD 7000 BIOS Editor v0.42.zip
    Radeon HD 7000 BIOS Editor v0.42.zip
    1.4 MB · Views: 21,907
Last edited:
Need to ask, does this support the HD 7870 XT? (Tahiti LE)
 
Sweet hope this gets to the point when i can set a stock voltage/clock.
 
it's a start :toast: will be waiting for up dates! With my current card have full control already but will be glad to help with testing

DEAD LINK "This file does not exist, the access to the following file is limited or it has been removed due to infringement of copyright"
It's a small file just attach it to the 1st post
 
will you be able to sort these locked voltages out?!
 
Looking forward to using this and it expanding! I have a few questions.

Do you just run the program once?

Does it write to the bios or the driver?

Should drivers be installed when doing this?
 
ummm...

AFAIK, any tampering with clocks will cause bsod on boot due to hash locks on 6xxx and 7xxx. Check out the RBE thread for details.

power level increase should be useful. Only way to do it right now is to create a "soft Powerplay" table in the reg and tweak it. on 5xxx and 6xxx you could do it with RBE (Radeon Bios Editor)
 
Need to ask, does this support the HD 7870 XT? (Tahiti LE)
It must. I just don't sure if 7870 XT needs 7800's bytes sequence or 7900's to find PowerLimit value. Anyway, you can try it by your own. Just open your bios and try choosing 7800 as your VGA model, then 7900 if utility will give you an error. If the right model will be choosen it's current power limit will be displayed as on the screen.

DEAD LINK "This file does not exist, the access to the following file is limited or it has been removed due to infringement of copyright"
It's a small file just attach it to the 1st post
The link works fine for me, but thanks for the idea, haven't thought about attach. Fixed.

will you be able to sort these locked voltages out?!
Yes, there's a way of modifying voltage table so that you'll get any voltage that you want (must be supported by the PWM though). I'm currently implementing it to the next version.

Looking forward to using this and it expanding! I have a few questions.

Do you just run the program once?

Does it write to the bios or the driver?

Should drivers be installed when doing this?
It's a BIOS editor, so you have to save BIOS with GPU-Z for example, edit it and flash to your card. I couldn't flash it with WinFlash, probably it detects a modified file and gives an error. So you need to use atiflash with -f parameter to force updating BIOS. Maybe there's a way to force it in ATIWinFlash, I don't know.

ummm...

AFAIK, any tampering with clocks will cause bsod on boot due to hash locks on 6xxx and 7xxx. Check out the RBE thread for details.

power level increase should be useful. Only way to do it right now is to create a "soft Powerplay" table in the reg and tweak it. on 5xxx and 6xxx you could do it with RBE (Radeon Bios Editor)
Yeah, I remember this "clocks problem" cuz I had HD6850 before (i'm on 7850 now). Anyway, it's worth to try.
 
this can't be done(at least not with clock speeds) if it could be done RBE would have done it
there is checks in the driver that prevent this so even if you take the bios limitation(if it even exists) out you still have the driver level limitation to deal with along with BSOD's and crashes
in either case you can still by-pass the restriction by using the "unofficial overclocking path" in either afterburner or ATI traytools
this Utility needs a big-fat THIS WILL BRICK YOUR CARD WARNING ON IT
because that what it will do
 
2.0 says current powerlimit: n/a, and didnt detect my card...

not promising...

edit: nm, it isnt live, you have to load a bios file...

doh....
 
this can't be done(at least not with clock speeds) if it could be done RBE would have done it
there is checks in the driver that prevent this so even if you take the bios limitation(if it even exists) out you still have the driver level limitation to deal with along with BSOD's and crashes
in either case you can still by-pass the restriction by using the "unofficial overclocking path" in either afterburner or ATI traytools
this Utility needs a big-fat THIS WILL BRICK YOUR CARD WARNING ON IT
because that what it will do

relax, he hasnt implemented clocks yet, just power limit.

looking forward to the voltage adjustments.

no more oc utilities, Yay!
 
this Utility needs a big-fat THIS WILL BRICK YOUR CARD WARNING ON IT
because that what it will do
Lol. Do you really think i'll release something that won't really work just for fun? :)


Anyway, new release is up. Pretty useless for users, it only adds detection if board is reference and reads the voltages table if it is. But it was pretty long to code, since it contains most of the things i'll need farther to allow modifying voltages (full table is readed with info about it's size and position of every stuff in bios).
New version is attached in the first post, new source is here if needed.
3D voltage modification for reference boards next.
 
Sub'd. Look forward to seeing what you can accomplish:toast:
 
what do these voltages mean?, what do the signal and ASIC value mean?, and why are there 5 values?

as per ADL, i only have 2 states: Idle 0.85v, and 3d:1.17v

Overdrive parameters:

Number of Performance Levels = 2
Activity Reporting Supported = Yes
Discrete Performance Levels = Yes
Engine Clock = 150.00 - 1500.00 step 5.00 MHz
Memory Clock = 75.00 - 1950.00 step 5.00 MHz
Vddc = 0.800 - 1.170 step 0.005 V

Performance level 0:

Engine Clock = 300.00 MHz
Memory Clock = 150.00 MHz
Vddc = 0.850 V

Performance level 1:

Engine Clock = 1000.00 MHz
Memory Clock = 1450.00 MHz
Vddc = 1.170 V

if you want to see your own: http://www.overclock.net/t/1336895/ati-overdrive5
 
Last edited:
Boys I have used the progamma and executed all the instructions. I make to leave the progamma as saved loaded administrator the bios with gpu z I select card 7870 patch 50% perhaps but in the moment in which me the bios must save modified they give me this error (I enclose) regarding .net framework I have gigabyte a 7870 oc "GV-R787OC-2GD" (PITCAIM) you help excused orthodox English me
:confused::mad:
http://i42.tinypic.com/16o1vn.png
 
Last edited:
New version is up. Now with the voltage editing on reference boards. All info is in Help -> HowToUse window.

As always - use at your own risk.
Tested with different asus bioses for 7770/7950/7970, but I can't test it on my own card, cuz it's not reference.

Used this method but with ability to increase VRM signal with 1 step precision.

mingolito, please, try putting application and bios in different directories. if it will help - i'll fix the bug in next release.
 
Don't you run into trouble with the digital signature? ie. driver not loading, or bluescreen or no 3D available?
 
what do these voltages mean?, what do the signal and ASIC value mean?, and why are there 5 values?
Each BIOS has a voltages table for 3D mode I can recognize with a constant bytes sequence.
This table consists of some strings (in some cases 5 strings, in some cases 6, this number can differ). Each string consists of:
VID - voltage identifier which is used for different software to set a voltage and for monitoring current voltage. It's not a real voltage though.
Signal - it's a coded signal for VRM which is used to force VRM to set a voltage u want.
ASIC - it's the ASIC of your GPU (u can check it with GPU-Z).

Each card of the same model can have equal BIOS with the same voltage table, but the real 3D voltage will differ. Why? Bacause of ASIC. Depending on the GPU's ASIC your card picks the right string from voltage table.

That's why u have to enter card's ASIC in v0.4, because I need to tell the utility which string from the voltage table we will be working with. I dunno about how to get ASIC and I dunno how to get the card's model currently, so U have to enter it manually. Maybe it's easy to implement, but while I have another things to do, i won't implement stuff which can be made by hands/other software (GPU-Z).

Returning to VID's, that's why there's a checkbox "Patch VID" in utility - it's not neccesary to change VID in voltage table, u have only to change the VRM signal to set new real voltage. But if u want the monitoring software to display right voltage, u will need to change the VID too. I suppose it won't make any trouble, but I have no statistics about it, so i just left the checkbox here.

----

Next step for the utility (I hope) will be editing Boost table for the cards with boost mode. It's harder then simple 3D mode, cuz I have a constant bytes sequences for 7700/7800 and 7900 that follows after voltages table ends. It's used to detect voltages table position in bios. There's no such constant sequence before or after the Boost table, that's why there's no ability to add this voltage currently.

I know how this table should look like and I already have an algorithm of analyzing the voltage table to detect if the card is reference or not. I can adept it to find the boost table without any constant strings, but in testing purposes I need some reference BIOSes with boost mode and in ideal case - with an example of card's ASIC and it's voltage in boost mode (so that I can find this table easier and test some things with it).

Don't you run into trouble with the digital signature? ie. driver not loading, or bluescreen or no 3D available?
No. I have PowerColor 7850 1GB, it's not reference. I've increased it's PL up to 50% and increased it's maximum voltage from 1.225 up to ~1.284 (thought it was pretty hard cuz of not reference card). No problems at all. Was working ok with 13.1 catalyst and had no problems with updating on 13.5 beta.

Other users reported succesfull PL increasing and voltage tweaking on reference boards (manual editing, not with this utility, but it uses the same programmed method they used).

I remember about the digital signature problem, cuz i've used HD6850 before and tried RBE with it. Seems like the problem appears only after changing clocks. I'll test editing clocks on my 7850 after i'll find info on what to edit and we'll see if this problem is still actual on HD7000 series.

--

P.S. Tired of writing such a long post, since my native language is russian :D
 
Last edited:
Hi, great stuff you are doing!

This is the bios of my non-reference HD 7950 11196-19-20G Sapphire Dual-X (with boost button).
It has 2 bios on the card. This is the standard bios (button not pressed/off).
It has an ASIC score of 70.0%.

Hope this can help you in developing the software :toast:
 

Attachments

I got a Unhandled Exception when trying to run:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Radeon_HD_7000_BIOS_Editor.MainForm.btnConfirmAsic_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18033 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Radeon HD 7000 BIOS Editor
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/DrRocker/Desktop/biosedit/Radeon%20HD%207000%20BIOS%20Editor.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18037 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18022 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18033 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18033 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Sapphire HD 7970 Reference card.
 
I got a Unhandled Exception when trying to run:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Radeon_HD_7000_BIOS_Editor.MainForm.btnConfirmAsic_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18033 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
Radeon HD 7000 BIOS Editor
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/DrRocker/Desktop/biosedit/Radeon%20HD%207000%20BIOS%20Editor.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18037 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18022 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18033 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.18033 built by: FX45RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Sapphire HD 7970 Reference card.



Same issue on a 7950 MSI TFIII (reference). Happens after entering the ASIC and hitting confirm.
 
erocker, kelreth
Could you please send me your BIOSes to dragonheart.by@gmail.com for example? I'll try to debug. Thanks :)
 
Here you go. (in the attachment)

Thank you!
 

Attachments

Each BIOS has a voltages table for 3D mode I can recognize with a constant bytes sequence.
This table consists of some strings (in some cases 5 strings, in some cases 6, this number can differ). Each string consists of:
VID - voltage identifier which is used for different software to set a voltage and for monitoring current voltage. It's not a real voltage though.
Signal - it's a coded signal for VRM which is used to force VRM to set a voltage u want.
ASIC - it's the ASIC of your GPU (u can check it with GPU-Z).

Each card of the same model can have equal BIOS with the same voltage table, but the real 3D voltage will differ. Why? Bacause of ASIC. Depending on the GPU's ASIC your card picks the right string from voltage table.

Cool, thanks for the explaination, makes sense now...
 
something wrong with the input box for the asic, i get an exception as well when you press confirm.

also, can you add the table info back?
 

Attachments

Back
Top