Results 1 to 10 of 10

Thread: [Tutorial] How to fix a bios checksum.

Threaded View

  1. #1
    The Blue Dolphin
    Join Date
    Nov 2004
    Location
    The Netherlands
    Posts
    2,816
    When a new graphics card has just been released there are often no tools available to properly modify the bios of the card. It's often fairly easy to find the clock speeds and voltages by comparing the bios to one on an older card, so that's not the problem here. The one big problem you will face when changing anything in the bios is that the checksum changes in the process. Of course force flashing the bios is easy if you can find a flashing tool that already supports you card.

    A bigger problem however is that your graphics driver may not be able to recognize your card if the checksum doesn't match. It's also possible 3Dmark benchmarks will not be able to correctly recognize your card resulting in that you're not able to upload your scores to the ORB.

    What the bios checksum is and how it is calculated

    Some people may think that the checksum value is stored somewhere in the graphics bios, this is not the case. The checksum is actually derived from adding all 2 digit HEX codes together.

    Below you can see a table which shows the connection between hexadecimal, decimal and binary code:


    As you can see the highest single digit "number" in hexadecimal code is F=15. The highest double digit number is 255= 15x15 = FF. I can rattle on for hours and hours on how hexadecimal code actually works, but I'm not going to to that as it isn't necessary to know why everything is as it is. If you are interested in hexadecimal code you should look it up on the internet.

    Calculating with hexadecimal code isn't a very natural thing so I suggest you use an online calculator or a calculator that comes with the tool you use for hexediting. I can highly recommend Hex Workshop: http://www.bpsoft.com/downloads/down...e=hw32v502.msi (trial version). Its build-in base converter is a very handy tool to convert HEX to DEC and the other way around.


    How Hex Workshop should be configured when calculating the checksum

    Before you make any changes to the bios you should write down the original checksum!

    After you have changed some values in the bios you will notice that if you recalculate the checksum changes too. Luckily this is fairly easy to fix because the bios has a number of "useless" bytes at the end just for this purpose. Normally this picece of data looks something like this:

    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
    00 00 etc.
    or
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    00 00 etc.

    When changing data in a bios file the resulting checksum will either be lower or higer than original. If it's lower and the file ends with all the FFs there is no way to correct the checksum using this area (as you know FF is the biggest double digit HEX value). In this case you need to edit another part of the bios.

    You can use this part for example:


    The simple guide

    Okay now you know the theory. I will explain the easiest way to do it.

    1.) Get the checksum with Hex Workshop.
    2.) Edit whatever you want to change in the bios
    3.) Calculate the new checksum with Hex Workshop
    4.) Use the Windows calculator in scientific mode set to "HEX" to calculate the difference between the two checksum by subtracting one from another.
    5.) Lower or up the 2 digit HEX codes (in a "useless" area") according to the difference you have found.

    It may be easier to first convert the checksum to decimal before subtracting one from the other. From the answer (decimal code) you can very easily calculate what to change.

    Let's say that you found the new checksum to be 1000 (decimal) lower than the old one. This means you will have to add 1000 (decimal) to the new one. The easiest way to do this would be to a change a "00 00 00 00" area in the bios to this : 255 + 255 + 255 + 235 or (in hexadecimal) FF + FF + FF + EB

    But what if the new checksum is 472 (decimal) higher than the original? In the last picture of this post you can see the area containing this info:
    "YOU HAVE NOT CONNECTED THE POWER CABLE TO YOUR VIDEO CARD.PLEASE REFER TO THE 'GETTING STARTED GUIDE' FOR PROPER HARDWARE INSTALLATION"

    The word "installation" in HEX code = 49 4E 53 54 41 4C 4C 41 54 49 4F 4E

    No let's convert HEX to DEC first:
    49 = 73
    4E = 78
    53 = 83
    54 = 84
    41 = 65
    4C = 76
    In decimal: 73+78+83+84+65+76 = 459

    Just by changing all the HEX code in the word "INSTALLATION" to 00 you can subtract 459 DEC of the new checksum. This means we are 13 DEC short (472-459). Now let's look at the last letter of the word "HARDWARE". In HEX code this letter is "45" = 69 DEC. We need to get it to 56 DEC to subtract the 13 that was left = 38 HEX.

    Make sure to recalculate the checksum when you are done to make sure that you didn't make any mistakes.

    DONE
    Last edited by alexio; 05-03-2008 at 10:09 PM.

Bookmarks

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •