08-14-2013, 01:31 PM
(08-14-2013, 05:09 AM)Moglie Wrote: Thanks for the soon comming guide
Oh you already worked on the undervolting CPU or/and OC options? Would be awesome
I'm working on that, but still no luck with this.
About the guide...
How To Extract and Edit Bios Modules
Warning: I'm not a very expert bios modder. I've just started, and it's a very basic guide. If someone more skilled finds an error on this guide, or want to contribute by providing some more infos, please reply here or send me a pm. Thanks
Programs needed:
- Phoenix Tool
- Hex Workshop (Reccomended, you can also use another Hex Editor)
- NiBiTor (Optional)
- WinRar (Optional)
First Step: Unpack the bios
It's a very simple task. First of all we need the bios image file. We can usually get it from other modded bios (like Akbar's bios) or from the official exe file (right click it and selecr "Extract with winrar"). Now we only need to open the bios file (Insyde bioses usually use .fd or .rom as file extension) with Phoenix Tool. Press OK on every dialog box that would appear, and wait until the program finishes. Now check the path where your bios file is saved, and look for the DUMP folder, generated by Phoenix Tool. Inside it, we can find all the bios' .rom files. We have sucessfully unpacked the bios!
Second Step: Modding bios' files
For this we need an Hex Editor to edit the raw values. I suggest to use Hex Workshop. Now we are ready to edit every bios module. We suppose we want to edit the vBios for undervolting the gpu (like I just did). vBios is known to have a 64 kb size, so we have to check in the DUMP folder for every 64 kb sized file. Ignoring the "PADDING" file, we should find four vBioses (in the P5WE0121 bios).
Now check the version number of our vBios with GPU-Z
We have two ways for enstablishing what is the proper vBios we have to edit for our GPU:
- Open vBios with Hex Editor and find out the version string
- Open vBios with NiBiTor, and check the vBios version
When we have found the right file to mod, copy it in another path, open it with Hex Workshop, and prepare for the hardest thing: find the proper value to change. In my knowledge, there isn't a method to surely find it. We have to proceed with logic and we have to have a lot of luck. For example, there we want to undervolt the GPU in full idle. We know that the voltage used is 0.98V. It can be usefull to find what we are searching. Convert 98 from decimal to hex (we can use both windows calculator or an online converter). We find that's 62 in hexadecimal. Now, we need to find the voltage tables, so we can edit che voltage. Fortunately Fermi's voltage table can be easily found on the web:
- 2D P-States
[P3] 43 65 87 A9 DC FE 03 40 [XX]
[P7] 00 00 0E 81 00 00 07 40 [XX]
- 3D P-State
[P12/P15] 00 00 00 00 00 00 0F 00 [XX]
Where XX is the hex voltage value.
Currently I don't really know how to obtain by myself this tables. I think it requires advanced bios modding skills, but I'm doing a lot of researches and studies to learn how to do. Maybe I'll update this guide in the future.
At this point it's important to go to Tools -> Generate Checksum -> Checksum (16 bit) and write down the result. We'll see later why we have to do that!
Now, let's change the full idle voltage. It's marked with P12/P15 (this may vary according to the GPU). As I said, the hex value for the stock voltage (0.98V) is 62, so we have to search this string in the hex editor:
00 00 00 00 00 00 0F 00 62
And replace 62 with 55 (which is 85 converted to hex. If we want, for example, to overvolt the gpu, we can put 64 (100 decimal, so 1V), up to b4 (1.8V)).
We have sucessfully edited the P12/P15 voltage but... if we try to open the bios file with NiBiTor, we'll notice that the file integrity point is yellow. That means the checksum is incorrect. For correcting it, we have to reopen the file with Hex Workshop and use the "Generate Checksum" function checking "Checksum (16 bit)".
As we can see, the result isn't the same we have write down before. The checksum is calculated by using the last hex digit in the vBios (it should be after a "FF" useless zone).
So, we have to proceed this way: take the first checksum calculated (1280, in decimal). It's higher that the second, so we have to substract the second from the first: 1280 - 1267 = 13 = D in hex. Take the last hex digit in the vBios (18) and add it the value we have just found (D): 18 + D = 25. Replace 18 with 25, and regenerate the checksum; it should be equal to the first we have found (1280). This way the checksum is fixed, and the Integrity point in NiBiTor should be green.
Third Step: Repack the bios
We should have Phoenix Tool still open, if not open it, and reselect the .fd bios file. When it's done, click on "Advanced" (press YES on the dialog box), tick "Allow the user to modify other modules" and "No SLIC" and click "Done". Now press "Go" on the main window of Phoenix Tool. When the info box "You can now make manual alterations to any module in the DUMP directory" appears don't press "OK", but replace the original vBios with our modded vBios in the DUMP folder. Now press "OK" and wait until the program finishes. You should have now a BIOSNAME_SLIC.fd file in the same directory of the original bios we just modded. Rename it in BIOSNAME.fd, and flash it with Insideflash.
Done!
P.S: Sorry for any grammar error. My english is a little rusty.