[Guide] Enhanced BIOS Modding of Award BIOSes

this is from msi 770-C45

msi770.zip (690 KB)

See my edit above

Thanks Vash, did you follow his link in the Minit lurb, and read those other posts too? If not, check those out as well, it pretty much says what I’ve been saying all along about all these sensitive modules (and also notes, sometimes some may not be like here, but general they all are).

Hmm, Im open my BIOS_build.bin in hex editor and try to search “AGESA”. I have 5 results, two of them are 3.7.1.2 and refer to agesa and meminit module that Im update. But three another has version 3.7.1.0 and I cant understand which modules do they belong to. I am open all extracted modules of bios_build in hex editor and dont find “agesa 3.7.1.0” in any module. Im try to insert new holes and check again.

upd1. Cbrom dont allow simply add hole0 to the bios. Im release hole0 and search agesa in hex editor again, and results contain 3.7.1.0 links, does that means there’s agesa 3.7.1.0 links dont bound to hole0 module?

upd2. Stop, agesa 3710 links is in bios_blank.bin, and I am dont know what to do

upd3. eeeeh, okay. Original BIOS have some code with links to default 3710 agesa, this code is located between some modules and this code does not affected by the operations that we did when modifying BIOS with modfreakz-summoner scripts. As result new BIOS with new agesa and meminit have some code blocks with links to old agesa. Maybe this causing issues with memory. I have only one idea: take two bioses from 770 board with agesa 3710, and 785 board with agesa 3712, release all modules from them, and after that modify clean 770 bios in hex editor by replacing code from 785 bios… Sounds crazy .

@molex , probably some in the holes file, as you found. Holes can be edited (extract, release, or insert) with cbrom, for this BIOS I would use cbrom 195, and then once done, release something else (last module above NCPUCode) with Cbrom 155 and then reinsert, so checksums properly corrected.
Yes, on your upd3, as I mentioned, you usually cannot simply swap Agesa as other modules need edited, updated, and swapped too.

Did you look at all holes? there is 0-3 (So four total) Sorry, I can’t check right now, about to reboot and don’t have VMWare running right now, so no XP

@Lost_N_BIOS , Im release all that I can from BIOS, and in hex editor I still have agesa 3710 links. Ultimately, agesa update require much more operations than only modules update.

I think I will focus on bios update without agesa and meminit. I will update ahci, raid, realtek, q-flash with auto-batch scripts pack. And try to understand how to update microcodes. Only after that Im try to do something with agesa, but I’d rather to have programmer or another board (bcose im nob) before flashes my craft bios


To sum up all information about update agesa of my mobo.
Latest BIOS for my AM2+ GA-MA770-UD3 rev. 2.0 is FKe with AGESA 3.7.1.0 module. I found only one AM2+ gigabyte board with newest agesa 3.7.1.2, its GA-MA785GM-US2H rev. 3.3. Im extract agesa and meminit modules from 785 board and add them to the 770 board. As result 770 motherboard works but have troubles with memory identification and memory stability. Im checked my bios file in hex editor and found links to new agesa 3.7.1.2 and to old agesa 3.7.1.0, obviously that doesn’t have to be. I decided to release all modules from bios and try to find what module have links to old agesa, finally Im release all modules but links to old agesa remain in place. I have no experience to discuss about bios structure but I assume that some code blocks in bios are located between modules, and that code blocks dont update when we update our modules (agesa, meminit etc). As a result links to new and old agesa mixed in new bios.
I decided to do some experiments with hex editor and try to cut code blocks from 785 mb bios and past them into 770 mb bios. But I found another one thing. GA-MA785GM-US2H uses 785 NB (sc880 codename), and bios of 785 board include links to the CIM-SC 880 module that placed in hole0 region. Mb with 770 NB (codename RX780) works with another CIM module RD790. Eventually, we will not get anything good after past code from 785 bios to 770. We will get a mix of links to difference hole0 modules.
Conclusion: if we want to update AGESA we need BIOS from motherboard with similar NB chipset, BIOS that contain CIM-RD790 module.

Then I figured that gigabyte have exactly the same board GA-MA770T-UD3, but with AM3 socket and DDR3 memory support. Latest bios of 770t board have agesa 3.7.1.2 update, bios uses CIM-RD790 module. What if we replace code blocks of 770 BIOS (with links to old agesa) by blocks from bios of 770T board?

@molex
Have you checked if all the references of old agesa are in HT modules?
BTW, you should be crazy to attempt all these experiment without a programmer in hand

@vash_85 I’m not sure about anything, but maybe one agesa link placed in microcodes module, other in holes area. Now I stopping experiments, I updated AHCI, RAID, Realtek and Q-flash roms, all works fine (but I not tested raid yet). Now I try to update microcodes, first guide from microcode update forum dont work for me, I already prepared new bios with hex edited microcodes, but dont flash it yet.
Later I will try do something with agesa, but I prefer to have another backup motherboard, because I never work with programmer. Hope I will buy something new in next year and use old board for experiments.

Today I buy cheap China DDR2 4gb, we’ll see how it works with another 2gb modules on this board XD

Hi, I’m back here. Another question about BIOS mod. When I was setting up the system I realized that BIOS haven’t some parameters. I read an article about my motherboard (exact same motherboard) and saw in this article options like advanced clock calibration, hyper transport link voltage. But I haven’t that options in BIOS. I’m downloaded some of the earliest BIOS for my mobo (version FB), then I’m extracted EN_CODE.BIN from old FB BIOS and from latest BIOS and compared them. Old BIOS have all options, new not!
Question: Can I integrate old EN_CODE.BIN to the new BIOS? Will it help bring back more BIOS options?

Answer: I’m try new BIOS with old EN_CODE.
Result: Board works, but in BIOS all options was broken.

@molex - yes, Holes will contain actual agesa related modules, and probably other modules that aren’t agesa will reference it by name or module etc.
As I’ve mentioned all along, I am not a pro at updating this, and it’s quite complicated on many boards, especially older ones where it’s not a single module

If you released all modules, and “Anything” is in the BIOS, then you haven’t released all modules I mean, if you really release everything, nothing is there, so can’t be anything saying Agesa or anything else other than FF or 00
All the editing and testing you’ve done here, is much more than I know or have ever done about Agesa, so I really can’t help anymore than what I’ve mentioned.

If you need microcode edit, additional, or just updates, that I can do, let me know and I can help/do that if needed

You need flash programmer + SOIC8 test clip w/ cable! This is cheap, less than $6 shipped for both items, let me know if you need linked examples
I too cannot believe you test any of this without programmer, best you order one now as brick is coming shortly the more you keep playing with BIOS like that

To your last post, just use older BIOS Do you see those options in Phoenix BIOS Editor, if yes, you may be able to set them visible, but I would not try that without programmer in hand

@Lost_N_BIOS Old BIOS dont support Phenom II x6 CPU that I have (old AGESA). Very strange that gigabyte engineers remove this functions from motherboard…
What version of Phoenix BIOS Editor can I use? I’m downloaded 2.2.13 and this version cant open bios file. And I’m use award bios editor v1re25, its open bios file with some errors.

Left new BIOS without sb/ht voltage, right old BIOS with sb/ht voltage :frowning:

SBHT.JPG

Hello. Guys, I completely forgot something. I extracted the Award from the BIOS through the HxD editor module, but it is compressed. How to unpack it and how to pack another module in order to place it in the Award BIOS.



The GV3 module is compressed (i.e. -lh5- in the header).
Therefore, it cannot be executed immediately and will be unpacked at the offset specified in the bytes 0Fh - 10h of the header, i.e. it is relocatable.

Аt the same time that the name and version of AGESA are found in MEMinit.dll, which is not compressed and, is executed immediately at absolute addresses (-lh0- in the header).
Then changing to a major version, like 3.6 to 3.7, is most likely not possible.
Minor version 3.7.1.0 changes to 3.7.1.2 without problems.
AGESA ORICHi which is used to initialize Bulldozer+ is in the hole - that’s another question.

@molex - sorry for the late reply. I don’t know how to do what you asked, sorry

@Dagal - That’s not how you work with legacy award BIOS, you use tools, then maybe a hex editor if you know what you’re doing and need to modify some extracted module (extracted by tools, such as cbrom, PBE, ABE etc)

@shevalier - Yes, it’s LZMA - In gigabyte BIOS, almost 99% of the time you cannot move ANY sensitive module, or BIOS is bricked. How the module is executed does not matter, it’s initial location does.
Of course, some Gigabyte BIOS it’s OK to move or change numbered location of such modules, but it’s rare and you can only find out by brick testing a BIOS with such moves made (be ready for recovery in advance!)


RE: BIOS modding success/failure overview (13)
(its me, but i forgot password)

PCI rom modules are lower then untouchable (i.e. HTinit, MEMinit & HT32Gate), Logo - higher.
PCI roms removed, combined into one and replaced by 0-fiiled Dummy.bin (like a Andyp award sl1c tool).
Modules are reordered, but bios fully functional.

From my experience in Giga-bios, it is necessary not to break the sequence somewhere in the area of the Group Rom, but to transfer them in one piece in a hex editor lower or higher.

@Lost_N_BIOS
Thank you friend. I already understood everything that I meant SummoneR.
The only thing I want to ask you. Why for bios award 1024mb. solder chip 8000mb. It’s much more.

@shevalier - Sounds like correct edit method outlined there, to keep in mind and not touch/move sensitive modules.
Some BIOS you can do certain things in that may vary from the norm, but it’s not good practice to get into such, especially while showing or talking about to others, because then someone will read later and think it’s OK for their random BIOS and end up bricking the BIOS.

@Dagal - Some BIOS may have small BIOS body itself, but then large ME FW or empty space etc. To work on such BIOS, cut only the BIOS out of the 8MB dump, edit, then put back into same location once you are done, then program back



I think it’s more safety, than add unknown executable code in Bios.
Script Dummy



Andyp method ( in my bios too)

I would like to present to you, a new BIOS for the GA-78LMT-USB3 R2. It’s adapted the “Phoenix - AwardBIOS v6.00PG” over the stock “Award Modular BIOS v6.00PG”. Not much difference, it was a side project.

Other differences include: Renaming “MB Intelligent Tweaker (M.I.T.)” to the more common “Frequency/Voltage Control”, and renamed all of the DDR3 timing terminology to things you’d see in applications like HWiNFO and AIDA64, so it’s easier to understand what it is you are looking at. PCI option ROM’s are located at the end for easy editing.

Upgrades: Latest AHCI option ROM for slightly quicker boot times. I didn’t bother with the RAID or PXE boot ROM’s. RAID on this motherboard is horrible, and who uses PXE boot anymore? But if you want to update them, they are at the bottom underneath the sensitive modules for your ease of upgradability.

What’s not upgraded: Microcode. It’s stored weird in the factory image, and even though I used Ghidra to recompile the core itself from Phoenix - AwardBIOS v6.00PG, I used the original 4MB flash image to not mess anything up with how sensitive these Gigabyte flash images are. I never could update the microcode without a bricked board, and besides, the OS patches it anyway, so it doesn’t truly matter since the board already supports all of the CPU’s it can handle anyway.

With that said, enjoy: 78LTB3R2_P3_R2.zip - Google Drive

This is version “P3”. P1 and P2 were pulled due to my unsatisfaction with the quality of the compilation, I felt I could do better.




Due to the complexity of this mod, unless there is a bug someone finds, I don’t plan to update this further. I’ve pulled at least 4 all nighters this week alone working on this project that basically started as a “can I do this” before I thought “should I do this”. :wink: But hey it worked, and now you got a firmware update for your board that Gigabyte neglected and left on F1.

Remember, this is for the R2 version of the board, and there was only one revision of it.

What’s broken: SMBCFG. This has to do with the Phoenix - AwardBIOS v6.00PG core I used, you’ll now need to use DMICFG instead.

EDIT: P3 was updated to now included the April 2023 Realtek GBE PXE boot ROM. I did attempt to do the RAID controller, but I cannot locate misc.bin anywhere. But again, performance cost with this motherboards RAID controller limits its usefulness, so unless someone request this one, let me know and I’ll keep trying. Also, because I’m finding ways to improve the restructuring, P3 is BETA, but the best one I’ve done so far. It’s not final, so when I do say it’s the final P3 version, it’s the real version. Beyond this beta versions of my BIOS for this motherboard will be prefixed with D for debugging.

P3 for the GA-78LMT-USB3 R2 is done and complete, and is now ready for use.

It can be downloaded here: Microsoft OneDrive - Access files anywhere. Create docs with free Office Online.

So this is finally what I would call a complete conversion to the Phoenix Award BIOS, with extra assembly added! And an updated PXE boot ROM (I decided against updating RAID on this board, it’s not worth it).

Now for the extra bits. Rather than your screen being flooded with Award summary nonsense before the OS boots, instead of it saying “Verifying DMI Pool”, I wrote some assembly instead for the function that writes the text:

pushaw 
mov    ah, 0
mov    al, 3
int    0x10
popaw

So with this, once the summary is done spewing its text, the screen clears for you, so the only thing you see from here are either boot errors, or the OS itself, how a PC should boot in my opinion.

I would like to state that the DMI verification, updating, all that is still done, it’s just invisible unless there’s an error, then it will show, only the text related to the redundant stuff has been nulled and replaced with code (and as my code runs first, it will be right there at the top should DMI verification or updating fail).

Enjoy. I don’t think I will be doing a P4 release for a couple reasons:
Microcodes and the RAID ROM. This BIOS is 4MB, but every Award/Phoenix utility sees it as a 2MB ROM, and this is quite true, only 2MB of the BIOS is actually Award, the other half is something I have no idea what it is, but there’s two issues, that unknown second half of the BIOS has the AMD FX microcode, and the misc file required for the RAID ROM to be upgraded. With no tool that can access that portion, that’s more hex editing than my pay grade. I did this for free, lol.

1 Like