1. Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

Radeon HD77xx/78xx/79xx BIOS Editor

Discussion in 'AMD / ATI' started by Dragonheart, May 1, 2013.

  1. Dragonheart

    Joined:
    Dec 4, 2010
    Messages:
    15 (0.01/day)
    Thanks Received:
    31
    Location:
    Belarus, Grodno
    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.

    [hr]
    < - 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.

    Attached Files:

    Last edited: May 25, 2013
  2. Cheeseball

    Joined:
    Jan 2, 2009
    Messages:
    652 (0.32/day)
    Thanks Received:
    79
    Need to ask, does this support the HD 7870 XT? (Tahiti LE)
  3. Jack1n

    Joined:
    Oct 8, 2012
    Messages:
    1,011 (1.55/day)
    Thanks Received:
    224
    Location:
    Central Israel
    Sweet hope this gets to the point when i can set a stock voltage/clock.
  4. Frogger

    Frogger

    Joined:
    Feb 12, 2006
    Messages:
    2,174 (0.70/day)
    Thanks Received:
    310
    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
  5. d1nky

    d1nky

    Joined:
    Jan 21, 2013
    Messages:
    3,561 (6.49/day)
    Thanks Received:
    1,212
    will you be able to sort these locked voltages out?!
  6. erocker

    erocker Super Moderator Staff Member

    Joined:
    Jul 19, 2006
    Messages:
    39,515 (13.50/day)
    Thanks Received:
    13,918
    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?
  7. The Mac

    Joined:
    Apr 8, 2012
    Messages:
    377 (0.45/day)
    Thanks Received:
    95
    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)
  8. Dragonheart

    Joined:
    Dec 4, 2010
    Messages:
    15 (0.01/day)
    Thanks Received:
    31
    Location:
    Belarus, Grodno
    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.

    The link works fine for me, but thanks for the idea, haven't thought about attach. Fixed.

    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.

    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.

    Yeah, I remember this "clocks problem" cuz I had HD6850 before (i'm on 7850 now). Anyway, it's worth to try.
    Law-II and erocker say thanks.
  9. OneMoar

    OneMoar

    Joined:
    Apr 9, 2010
    Messages:
    2,879 (1.84/day)
    Thanks Received:
    614
    Location:
    Rochester area
    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
  10. The Mac

    Joined:
    Apr 8, 2012
    Messages:
    377 (0.45/day)
    Thanks Received:
    95
    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....
  11. The Mac

    Joined:
    Apr 8, 2012
    Messages:
    377 (0.45/day)
    Thanks Received:
    95
    relax, he hasnt implemented clocks yet, just power limit.

    looking forward to the voltage adjustments.

    no more oc utilities, Yay!
  12. Dragonheart

    Joined:
    Dec 4, 2010
    Messages:
    15 (0.01/day)
    Thanks Received:
    31
    Location:
    Belarus, Grodno
    Lol. Do you really think i'll release something that won't really work just for fun? :)
    [hr]
    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.
    kahboom says thanks.
  13. HammerON

    HammerON The Watchful Moderator Staff Member

    Joined:
    Mar 2, 2009
    Messages:
    6,438 (3.27/day)
    Thanks Received:
    3,531
    Sub'd. Look forward to seeing what you can accomplish:toast:
    Crunching for Team TPU
  14. The Mac

    Joined:
    Apr 8, 2012
    Messages:
    377 (0.45/day)
    Thanks Received:
    95
    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: May 4, 2013
  15. mingolito New Member

    Joined:
    May 7, 2013
    Messages:
    11 (0.02/day)
    Thanks Received:
    1
    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: May 8, 2013
    Grnfinger says thanks.
  16. Dragonheart

    Joined:
    Dec 4, 2010
    Messages:
    15 (0.01/day)
    Thanks Received:
    31
    Location:
    Belarus, Grodno
    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.
    Frogger says thanks.
  17. W1zzard

    W1zzard Administrator Staff Member

    Joined:
    May 14, 2004
    Messages:
    14,639 (3.93/day)
    Thanks Received:
    11,375
    Don't you run into trouble with the digital signature? ie. driver not loading, or bluescreen or no 3D available?
  18. Dragonheart

    Joined:
    Dec 4, 2010
    Messages:
    15 (0.01/day)
    Thanks Received:
    31
    Location:
    Belarus, Grodno
    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).

    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: May 12, 2013
    SonDa5, Law-II, Frogger and 1 other person say thanks.
  19. bungabunga New Member

    Joined:
    May 12, 2013
    Messages:
    1 (0.00/day)
    Thanks Received:
    0
    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:

    Attached Files:

  20. erocker

    erocker Super Moderator Staff Member

    Joined:
    Jul 19, 2006
    Messages:
    39,515 (13.50/day)
    Thanks Received:
    13,918
    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.
  21. kelreth New Member

    Joined:
    May 12, 2013
    Messages:
    5 (0.01/day)
    Thanks Received:
    0


    Same issue on a 7950 MSI TFIII (reference). Happens after entering the ASIC and hitting confirm.
  22. Dragonheart

    Joined:
    Dec 4, 2010
    Messages:
    15 (0.01/day)
    Thanks Received:
    31
    Location:
    Belarus, Grodno
    erocker, kelreth
    Could you please send me your BIOSes to dragonheart.by@gmail.com for example? I'll try to debug. Thanks :)
  23. erocker

    erocker Super Moderator Staff Member

    Joined:
    Jul 19, 2006
    Messages:
    39,515 (13.50/day)
    Thanks Received:
    13,918
    Here you go. (in the attachment)

    Thank you!

    Attached Files:

  24. The Mac

    Joined:
    Apr 8, 2012
    Messages:
    377 (0.45/day)
    Thanks Received:
    95
    Cool, thanks for the explaination, makes sense now...
  25. The Mac

    Joined:
    Apr 8, 2012
    Messages:
    377 (0.45/day)
    Thanks Received:
    95
    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?

    Attached Files:

Currently Active Users Viewing This Thread: 1 (0 members and 1 guest)

Share This Page