[Guide] AMI (non-UEFI) BIOS Modding

Preliminary Note:
Before you start with the BIOS modding procedure, you should have read carefully the “General Preparations for BIOS Modding” (>Link<).


Guide about how to
find/update/extract/insert an Option ROM module
of a non-UEFI AMI BIOS


A. Opening a non-UEFI AMI BIOS file

This is what you should do:

  • Run the Windows Explorer and open the previously created BIOS processing folder (e.g. C:\test).
  • Right click onto the MMTOOL3.26.EXE and choose "Run as Administrator".
  • Hit the "Load ROM" button, browse to the AMI BIOS file, which is within the processing folder (e.g. C:\test). and open it. If the MMTool doesn’t find the BIOS file, you probably forgot to rename the extension of it to “.ROM”.
    After having successfully opened the AMI mainboard BIOS file, the GUI of the MMTool will show you the content of the BIOS file within a great window beneath the header of the MMTool GUI:

  • If the MMTool v3.26 should not be able to open the AMI BIOS file, it is not an old AMI standard (non-UEFI) BIOS, but probably a much newer AMI UEFI BIOS file. In this case you have to use an AMI Aptio UEFI MMTool (you can find the related Guide here:

    >LINK<).


B. Searching for a specific Option ROM Module

Here are some advices to make it easier for you:

  • All Option ROM Modules of the mainboard BIOS are named "PCI Option ROM" and can easily be found by scrolling down within the great MMTool content window.
  • To find out the sort and function of the different listed "PCI Option ROM" modules, you have to highlight the related line. After having done that, you will see the needed details within the "For Adapter ROM only" section of the MMTool GUI. The vendor of the PCI ROM module is shown with the 4 characters (digits or letters) of his unique VendorID (VEN_xxxx) and the related device with the 4 characters (digits or letters) of its unique DeviceID (DEV_xxxx):


    Examples:
    The chipset manufacturer with the VendorID VEN_8086 is the Company Intel.
    So if you are searching for any Intel PCI ROM module, you have to focus on all "PCI Option ROM" lines, where the "8086" is shown as VendorID.

  • If you see more than 1 "PCI Option ROM" with the VendorID "8086" (= VEN_8086), you should check the associated Device ID:
    • The Device ID with the digits "2822" (= DEV_2822) is the "Intel(R) Desktop/Workstation/Server Express Chipset SATA RAID Controller", which is the on-board Intel RAID Controller of mainboards with an ICH8R, ICH9R, ICH10R, 5-Series and 6-series Southbridge.
      The Device ID with the digits "282a" (= DEV_282a) is the "Intel(R) Mobile Express Chipset SATA RAID Controller" and the on-board Intel RAID Controller of mobile (laptop) mainboards with a Southbridge from ICH8M up.
      Important: Both Intel Devices DEV_2822 and DEV_282a need and are using exactly the same Intel RAID ROM module. That is why some mainboard manufacturers are lazy while building the BIOS file and give both types of mainboards (Desktop and Mobile) the same DeviceID (e.g. "282a"). So don’t worry about it, if you are checking a Desktop mainboard BIOS, but see "8086,282a" shown by the MMTool.
      By the way: The shown digits of the Vendor and Device IDs don’t have any influence on the function of the BIOS or the ROM modules.
    • The DeviceID "2826" (= DEV_2826) is the "Intel(R) C600 Series Chipset SATA RAID Controller", which is the on-board Intel RAID Controller of mainboards with an Intel X79 chipset.

    So if you want to extract or replace an Intel RAID ROM module, which is compatible with Intel’s ICH8R/ICH9R/ICH10R/5-Series/6-Series Chipsets, you have to look for a "PCI Option ROM" with the shown VendorID "8086" and DeviceID "2822", whereas users with an Intel X79 chipset mainboard should search for the "PCI Option ROM" with the Vendor ID "8086" and the DeviceID "2826".
  • You can easily find out the vendor and device names of shown VendorID’s and DeviceID’s with other characters by doing a Google search. Just edit the VendorID as "VEN_xxxx" and the DeviceID as "DEV_xxxx" - each ID with the shown characters.



C. Extraction of an Option ROM module

Generally notes:
  • The extraction of a PCI ROM module doesn’t effect the mainboard BIOS. It will stay untouched by the extraction.
  • It is impossible to verify the version of the PCI ROM module as long as it is part of the BIOS file. So you have to extract it, if you want to make sure, that it is the desired version, which you want to flash into your own mainboard later.

This is the procedure, which is valid for all Option ROM modules:
  1. Start the MMTool v3.26, hit the "Load ROM" button and load the AMI BIOS file, which contains the desired PCI RAID ROM version.
  2. Search for the "PCI Option ROM", which is the desired Intel RAID ROM Module, and highlight the related line within the MMTool window.
  3. Hit the tab "Extract", go to the "Module file" box and edit a name for the module file you want to extract. PCI ROM mudule files usually have the suffix ".BIN" (e.g. RAID_ROM.BIN).
  4. Make sure, that the default option "Extract Module in uncompressed form" is enabled.
    The GUI of the MMTool should look like this:

  5. Now hit the "Extract" button.
  6. You will find the extracted file (named RAID_ROM.BIN or similar) within the processing folder (C:/test).
  7. As last step you should verify the sort and the version of the extracted Intel RAID ROM file.
    Just open it with a Hex Editor and you will find on top of the right side a readable text with the sort and the version of the PCI ROM module (example: "Intel(R) RAID for SATA - v8.0.0.1038"):

    HxD - Verification of the extracted Intel RAID ROM version.png


    This means, that you have extracted the Intel RAID ROM v8.0.0.1038.




D. Replacement of an Option ROM module

This is what you should do:
  1. Run the MMTool v3.26, hit the "Load ROM" button and and navigate to the AMI BIOS file you want to modify (it should be within C:\test).
  2. Search for the "PCI Option ROM" you want to replace and highlight the related line.
  3. Hit the "Replace" tab.
    Now you can see the details (ModuleID, VendorID and DeviceID) of the "PCI Option ROM" you are going to replace by another version.
  4. After having made sure, that the shown "PCI Option ROM" details are the correct ones, hit the "Browse" button and navigate to the Intel RAID ROM file you want to get into the AMI mainboard BIOS (it should be within C:\test and have the suffix ".BIN").
  5. Open the .BIN file by enabling it and hitting the "Open" button or by double click onto the file.
    Now the MMTool GUI should like like this:

  6. If everything is ok, hit the "Replace" button. This will execute the replacement of the selected "PCI Option ROM" module.
    It is possible, that you will see some slightly changes regarding the size of the modules, which are listed within the MMTool GUI window. This happens, when the size of the inserted module is different from the replaced one.
    In my test scenario I got some changes you see here:


    Don’t worry about these changes. The MMTool is able to compress the modules dynamicly (within a certain bandwidth) with the result, that all modules will be completely inserted without changing the size of the entire mainboard BIOS file.
    Attention:
    Old AMI BIOS files are only small sized and it may happen, that the compression potential is not able to replace a small sized PCI ROM Module by a much bigger one. In this case you will get an adequate message.
    Tip:
    In some cases you can solve the space problem by deleting a module, which is not that important for the use of the computer, for example the "OEM Logo".
    Just hit the "Delete" tab, highlight the line with the module you want to delete (example: "OEM Logo"), hit the "Delete" button and save this modification (otherwise you will not get the additional free space!). After having done that you can reopen the just modified BIOS and to retry the replacement of the PCI ROM module.

  7. As last step the modified BIOS file has to be saved.
    Hit the “Save ROM as …” button, create a useful name for the modded BIOS file (example: P8Z68-V-ASUS-0801_mod.ROM) and then save it.
  8. You will find the modded BIOS file within your processing folder (C:\test). Due to the dynamic compression done by the MMToool it should have exactly the same size as the original BIOS.



E. Insertion of a natively not present Option ROM module

This BIOS modification is required, if you want to boot off a storage device (e.g. an NVMe SSD), which is natively not supported by the original BIOS.
Note: The related device will only be bootable in LEGACY mode!

This is what you should do:

  1. Run the MMTool v3.26, hit the "Load ROM" button and and navigate to the AMI BIOS file you want to modify (it should be within a separate folder, e.g. C:\test). You will get a picture like this:

    Original BIOS 1408

  2. Make sure, that the on top of the MMTool header located "Insert" tab is pressed.
  3. Hit the "Browse" button, navigate to the folder, where the desired and 100% matching Option ROM module is located and double-click onto it.
  4. Enter the required information into the following empty fields

    a) “Module ID” (has to be “20” for an Option ROM module),
    b) “Offset/VID” (= the VendorID of the related Storage Controller)
    c) “Seg./DID” (= the DeviceID of the related Storage Controller)

    Here is the picture (as example):
    Insertion of an NVMe Option ROM

  5. Press the big "Insert" button. Now the MMTool will execute the integration of the desired Option ROM.
  6. Hit the "Save ROM as ..." button, give the modded BIOS file a meaningful name and hit the "Store" button.
  7. As last step you should verify the success of your BIOS modification. Open the just created modded BIOS and look for the just integrated Option ROM module by scrolling down the shown BIOS content. This is how the success will be shown:

    successfully inserted module

  8. Now the modded BIOS can be flashed (at own risk!).


Flashing the modded BIOS into the mainboard BIOS chip

It is strongly recommended to follow the following advices:

  • Before you are going to flash the new BIOS, you should make a complete backup of your entire system and boot partitions or at least of all important data. After having done that, enter the BIOS and list all your special settings. Before you leave the BIOS, choose and save the DEFAULT settings.
  • Since the BIOS file name usually is layed down by the mainboard manufacturer within the BIOS itself, the "modded" BIOS file should not be renamed unless the new name is "in the line" with BIOS files, which were previously released by the manufacturer.
  • Users with an ASUS mainboard, who get a "Security Verification" warning while trying to flash a modified BIOS, should redo it by using the "USB BIOS Flashback" method (for details look into the mainboard manual, not all ASUS mainboards do support it). Important: The BIOS has to be renamed a special way according to the ASUS PDF files, if you use the ASUS "USB BIOS Flashback" method!
    Users with an ASUS P8xxx mainboard, which doesn’t support the "USB BIOS Flashback" feature, may get the modified BIOS successfully flashed by following >this< guide layed down by CodeRush at [H]ard|Forum (thanks to Maikl for the tip).
  • After having flashed the new BIOS, you have to redo your previous BIOS settings.
    Safest way (found >here<):
    After flash is complete, shut down fully and switch off PSU, wait one minute and clear CMOS. Then turn on, boot to BIOS, load optimized, set the SATA Controller to the appropriate mode (AHCI/RAID) and save/apply/reboot back to the BIOS. Once in the BIOS again recover the previous boot settings (boot device and HDD boot order). If you have updated the Marvell 91xx AHCI/RAID ROM module, set the Marvell Firmware mode to "Force", then save/apply/reboot and let it load through to windows, before that happens Marvell Firmware will update and board will reboot.
  • Before you restart with your usual PC work, you should verify the full function of the updated PCI ROM module. If you have inserted a new RAID ROM version into the BIOS, you have to make sure, that the "RAID" mode of the on-board SATA Controller is enabled, and then you should run the RAID Configuration Utility by hitting CTRL+I, F10 or similar (look into your mainboard manual). Everything will be fine, if you can enter and use the RAID Configuration Utility without any problem (Don’t modify anything, if you don’t want it to be changed!).
    Advice for users with a non-RAID system:
    Users, who are running their SATA Controllers in AHCI or IDE mode, should check the function of the freshly updated RAID ROM module the same way. After having temporarily enabled the "RAID" mode of the on-board SATA Controller they should run the RAID Configuration Utility and look, if everything seems to be fine (but don’t create a RAID array!). Then they can close the Utility and reset the SATA Controller to the usual setting (AHCI/IDE mode). The data of their AHCI/IDE system will not be altered or destroyed by this procedure.


Any feedback is much appreciated. Most important is a short report about the success or failure of flashing the "modded" BIOS into the BIOS chip of your mainboard. Don’t forget to mention the vendor and the name of your mainboard and the sort and version of the flashed PCI ROM module.

Good luck!
Fernando

2 Likes

Thank you very much for this useful guide !

1 Like

@ cavilio:
Welcome at Win-RAID Forum!

Thanks for your comment!

Regards
Fernando

Fernando, I have wasted almost 1 week trying to figure out why my trim wasn’t working with no success, I found your guide and I’m very interested in flashing my ROM, I have an Allienware Area 51 - Intel i7 Extreme 975 - Alienware X58 (0J560M) - G.Skill 8 x 2Gb 1866Mhz - 2 x Samsung PM800 256Gb Raid0 - MSI Geforce GTX Titan - Windows 7 64 bit

I’m pretty sure that I’ve got AMI bios, simply because on the bios screen it says “American Megatrends Inc.”, by following your guide I have tried using Aptio MMTool to load the image but it returns with “Error Loading Firmware Image”, while by using MMTool it returns with “Error Loading ROM Image”.

Can you please assist me in flashing my ROM. I’m using A11 Bios which can be found here http://www.helpjet.net/files-Dell-Alienware-Area-51.html

@ Deccal:
Welcome at Win-RAID Forum!

No X58 chipset mainboard has an AMI UEFI BIOS. So if you want to modify your AMI non-UEFI BIOS, you have to use the older (non-UEFI) AMI MMTool.
Maybe you will have to rename the BIOS file to xxxxxxxx.ROM.
If you want to get TRIM support within your RAID0 array, you have to replace the Intel RAID ROM module of the BIOS by the “Especially modified RST(e) Intel RAID ROM v11.6.0.1702 with Trim in RAID0 for ICH10R systems”, but there is no guarantee,
a) that you really get the 120KB sized OROM module inserted (many X58 chipset mainboard BIOSes don’t offer enough space for the actual OROMs) and
b) that the BIOS will work properly with all on-board SATA ports.
I am sorry, but I cannot give you more help, because I am on holidays now.

Regards
Fernando

@Deccal
You must extract that exe using 7-zip, change whatever you want in a11.bin, then reinsert into exe using again 7-zip. The first time I downloaded that file it indeed produced your error because it was corrupted, but re-download until the file is intact and you can use older MMTool without size complaints. The next step is the real testing.

I have downloaded “Especially modified Intel RST(e) RAID ROM v11.6.0.1702 with TRIM in RAID0 for ICH10R systems” renamed it to “ICH10.rom”, then tried using MMTool V3.12, V3.19, V3.22, V3.26 to load it but still getting “Error Loading ROM Image (100000h)”.

The link http://www.helpjet.net/files-Dell-Alienware-Area-51.html for A11 bios is a link to my current used bios and not the one that I’m trying to update, don’t know if it will help understanding my bios.

You cannot open an OROM module with the MMTool. This tool can only open the complete mainboard BIOS file.
Please read my guide about modifying non-UEFI BIOSes.

Ok I got what I need to do, but the issue is the bios for the Alienware is an .exe file, I have tried extracting it using 7-zip and Universal Extractor without success, is there anyway that I can extract such file?

According to lordkag an actual version of the tool 7-Zip should be able to extract the BIOS file. The tool WinRAR may work as well.

I have downloaded the file almost 30 times from different sites, tried extracting the .exe using 7-ZIP, WinRAR, Universal Extractor, WinZip with no success, I don’t think that these tools can extract it, therefore; I don’t think I’ll be able to update my bios so I’m giving up.

Thanks guys for the help.

Here is the only working way I’ve imagined and I’ve used. I own a Dell XPS Studio 8100.

If your BIOS is up-to-date:

- Download the actual .exe BIOS file
- Execute the .exe BIOS, a confirmation message will pop-up
- Don’t do anything else with this message at this time. Don’t accept, don’t refuse!
- Set your Windows Explorer to show hidden and system files
- Browse the following directory : “C:\Users\Username\AppData\Local\Temp” where “Username” is your real Windows account name
- Sort the content of this folder by date
- You will find a temporary directory containing the extracted files from the downloaded .exe BIOS file
- I can’t tell you exactly the file extension of the ROM file you need (in my case, it’s a .bin file but it could be something else). But it’s easy to identify the ROM file : it’s neihter a .exe file nor a .dll file and the size of the file is 1024 KB or above
- Copy this file to a non temporary directory such as “c:\test” or whatever you want and change its extension to .rom
- You can now open the ROM file the way it’s explained on this very usefull web site
- You can now refuse the confirmation message to update your BIOS, the temporary directory is automaticlly deleted

If your BIOS is not up-to-date, you’ll have to install the last official Dell BIOS file the way it’s explained on the Dell support website and then follow the steps above.

I hope my message will help you and all the Dell PC users.

English isn’t my mother tongue so that some language mistakes could be present.

Oli

@ Oli_be:

Welcome at Win-RAID Forum and thanks for your tip regarding the extraction of a Dell BIOS file.

Regards
Fernand

Thanks Oli_be for the tip, it did work indeed and I was able to load the bios. I followed the guide and succeeded in flashing the new bios, but after restarting the computer won’t post, I’m trying to recover my bios using my backup and I’ll try and figure out the problem and then re-flash.

@Deccal

You’re very welcome!
Sorry but I’m not sure to fully understand the following part of your last sentence: “the computer won’t post”.
Does “the computer won’t post” mean that the usual booting messages are no more displayed? Or does it mean that your computer don’t boot anymore?
If you explain to me what “the computer won’t post” exactly means in English, I might be able to help you fix your problem.
If you need any French lessons, just let me know… :wink:

@ Deccal:

I suspect, that the 120KB sized OROM module is too big for your X58 chipset mainboard BIOS.
The last less than 100KB sized Intel RAID ROM module is v10.1.0.1008, but it doesn’t support Trim in RAID0.

I meant that when I turn on the computer the screen is black and no beep. Is there anything that I can do to restore my bios? I got a backup of my old bios.

Yes, you should be able to reflash the original BIOS, but if you have another computer, I recommend to update the Intel RAID ROM to v10.1.0.1008 and to flash the BIOS, which contains this more actual Intel RST OROM.

Is there any guide on how to do it?

What do you mean, the OROM update or the BIOS extraction/flashing procedure?
The procedure is the same as you did it before. Only difference: You replace the Intel MSM RAID ROM of your original BIOS file by the Intel RST RAID ROM v10.1.0.1008 (instead of the "Especially modified Intel RST(e) RAID ROM v11.6.0.1702 with TRIM in RAID0 for ICH10R systems").