Possible solution for ASUS BIOSes with limited Option ROM space (looking for testers)

Please have a look into my other posts to get more background. But briefly, the latest OROMs that support RAID on HDDs more than 2TB cannot be loaded into quite a few ASUS BIOSes, due to their larger size. I have patched the main BIOS code to enable this feature, but will need some early testers to make sure it works.

If there is anybody who is willing to try please let me know your motherboard name/model (for now, my solution is limited to ASUS motherboards with AMI BIOS, and probably LGA 1366 sockets only, like P6T and its variants, …). Be warned that you may end up with a motherboard that cannot boot and have to reprogram/replace your BIOS flash chip manually.

EDIT by Fernando: Thread title has been shortened by me (hoping, that it is ok for you)

ok, I finally got the time to test my modified BIOS and I can confirm that it works. I am attaching the updated BIOS image here for whoever has an ASUS P6T SE. For other ASUS motherboards, it is possible to apply the same method. Unfortunately, it is too customized and dependent to ASUS BIOS structure and I doubt that it can be extended to other motherboards.

I am happy, my 2x3TB HDDs are finally working with RAID 1 using the internal SATA controller.

Before update

before.jpg




After update

after.jpg

P6T-SE-ASUS-0909.zip (944 KB)

To give back the support from this forum (Fernando, lordkag, …), I want to share the details of what I did, along with a couple of files that might be useful for others. All the files are compressed into one .7z archive (the reason that I did not use the more popular .zip is that it does not support redundancy elimination across files and I was sending a couple of different BIOS images, try to convert it into .zip and see the difference). You will also need to rename the file and remove .zip from the end of it (the forum limits the extensions of the file attachments)

1. extract.cpp and extract.exe: This is the extractor/re-locator for “Single Link Arch BIOS” section of the image (ID = 1B). This section contains most of the relocation/loading/… of the BIOS, it is the first part that gets loaded/executed, and you must be very careful with changing anything in there. Besides breaking this section into small pieces, this program also relocates them in memory and saves them in final.mod. That is how the BIOS code looks like when it is loaded from EEPROM into RAM.

2. To use the extract program, you should first extract code ID 1B from the BIOS image and save it to a file (say 1B.BIOS) and then run “extract 1B.BIOS”, this will generate all the files along with final.mod

3. The most interesting part of the extracted files is in 00040000_POST_CSEG.mod which contains the main code. I made the modifications in this part and combined it back to create an updated 1B section (which in turn can be put into the BIOS image).

4. I noticed that the MMTool cannot be used to update the 1B section, one possibility is to use amimmwin but that is a very old program and my motherboard did not like the images modified by it, I changed the MMTool to remove this limitation (briefly, change the byte at address 0x1039E from 0xD2 to 0x71 and you should be able to modify all the sections (1B included). The modified MMTool is also attached.

5. The rest of the files in the archive are just a couple of images as below which can also be obtained from elsewhere
5.a P6T-SE-ASUS-0908.ROM : This is the latest BIOS image from ASUS for P6T SE
5.b 0909.BIOS : This is the updated 1B section, I suggest that you extract the 1B section from 5.a and compare the differences
5.c 0909.OROM : This is the Intel OROM v11.2.0.1527 (the latest recommended in the forum)
5.d 0909_TRIM.OROM : This is the same version of Intel OROM as 5.c with enabled TRIM in RAID 0 (found in the forum).
5.e 0909_1.ROM : The BIOS in 5.a with updated 1B section from 5.b
5.f 0909_2.ROM : The BIOS in 5.e with updated Intel OROM from 5.c
5.g 0909_3.ROM : The BIOS in 5.e with updated Intel OROM from 5.d

6. The details of the modification (all the addresses are from final.mod)
The code that loads/initializes the OROM is at 0x406B9), the following is the original code

000406B9: 9AEB4D0040 callf 04000:04DEB
000406BE: 9AB53D0040 callf 04000:03DB5
000406C3: 9A792E0040 callf 04000:02E79
000406C8: 9A873D0040 callf 04000:03D87
000406CD: 9A424E0040 callf 04000:04E42
000406D2: CB retf

Inspecting ASUS BIOSes for other motherboards that do support OROMs more than 64k, revealed that callf 04000:02E79 was replaced by three function calls. As no space was available in there, I had to move the code flow to somewhere else.

000406B9: 9AEB4D0040 callf 04000:04DEB
000406BE: 9AB53D0040 callf 04000:03DB5
000406C3: EA30F80020 jmpf 02000:0F830
000406C8: 9A873D0040 callf 04000:03D87
000406CD: 9A424E0040 callf 04000:04E42
000406D2: CB retf

I used 0002F6D0_C_DSEG.mod which was the last part in the 1B section and increased the size of this part to contain the code that I needed

0002F830: 9AEDF60020 callf 02000:0F6ED
0002F835: 9A792E0040 callf 04000:02E79
0002F83A: 9AE6F70020 callf 02000:0F7E6
0002F83F: EAC8060040 jmpf 04000:006C8

The body for those two extra functions are also added to 0002F6D0_C_DSEG.mod (check the codes or the relevant sections in final.mod). Finally I jump back to where the old BIOS was. This is all that was needed !

I have to say that I got very lucky with this particular BIOS structure from ASUS (i.e. to add the support for bigger OROMs, only those two extra functions were required). This approach does work for most of the other ASUS motherboards, so if you have some spare time (and enough interest), you just need to find the equivalent functions in your BIOS and modify them accordingly.

I do not regularly check the forum, but will try to come every once in while, let me know if you have any questions.

Wish you all the best of luck !

EDIT by Fernando: The attachment has been removed at 02/16/2017.

@ z258_14:
Thank you very much for having found a solution to solve the space problem of some ASUS BIOSes and for having presented it here. This hopefully will help a lot of affected users.

Unfortunately I cannot use the attachment of your last post, because it has an .mp3 extension. My browser just tries to open the .mp3 file by directly using the Windows Media Player, but doesn’t give me the offer to download the file.
Is it possible to compress the files with WinRAR v5 instead? Alternatively you can rename the 7z archive to “bios_update.7z.zip” (giving the user the possibility to remove the .zip extension).

Thanks again!
Dieter

MP3 is a bad choice with HTML5 compliant browsers…

Attached it properly. Extract the rar and you get the 7z archive.

EDIT by Fernando: This attachment has been deleted at 02/16/2017.

Hi, sorry for the bad selection of extension. I edited the original post and changed the extension from .mp3 to .zip

@z258_14
a tester is toasted here, please check pm.

@ imgwhirl:
Welcome at Win-RAID Forum!

Thanks for doing the tests - good luck!

Regards
Dieter (alias Fernando)

Hi,

I skipped over quite a lot of details in my previous post. I was going to write a tutorial and use imgwhirl’s motherboard as an example, but it seems that his motherboard cannot be used anymore (and hence even if I create the updated image, he cannot verify if this solution works or not). If there is anybody with an ASUS motherboard, let me know the model name/number and I will use that for my tutorial (just this one time).

Regards,

Hello!
Thank You for Your investigations and the usefull info about how to do the modding for Asus BIOS to make a bootable BIOS with large size of Intel RST OROM for old MoBo.
I tried to follow your plan for Asus P6TD Deluxe BIOS v.0608
I got 0002F630_C_DSEG.mod and 00040000_POST_CSEG.mod and did necessary modification.
But i dont know how to "combined it back to create an updated 1B section" from all *.mod files.
Can you explain more info about your steps to make 1B section from modified files.
Thank You.

Hello! And thank you for your hard work!!

You BIOS Works amazingly! But I noticed you did not update the JMicron OROM and also, would love to get the SLI added into it! If there is a chance you could help me, It would be appricated a whole lot! I am currently using your bios, and can test the new one as well!

Please email me if possible!