[Guide] Manual AMI UEFI BIOS Modding

I want to replace the Intel microcode from a previous bios version of the same board. The motherboard has q flash plus, which I have used successfully to update the bios once already. The main problem is, how do I find the specific section of code I’m looking for? Can I look through a bios that I downloaded, or do I have to extract the bios module from bios installed on the board? I’m planning to use mm tool or whatever it is to view the bios modules, but I’m not sure how to find the code I’m looking for.

Thank you.

@ BDTDNC
So i suspect that you want older cpu mcodes from old bios revision on new bios revison.
What kind of bios AMI/PHOENIX/INSYDE…
There are several tools that can extract the mcodes like MCextractor and even a repository of older mcodes.

Do please provide further information on hardware, bios and actions to be made, on this post and in future requests on this forum, users are not “wizzards” to guess it, so providing the best info is half way to a better comprehension of a user request.

1 Like

Ok my bad I thought there was only one “Intel microcode” per bios, and that all the tools were basically the same.

The board is Gigabyte B660m Gaming X AX. Current bios versions have Intel microcode that blocks undervolting. I am on F20, I would like to replace the microcode on F20 with the Intel microcode on F4 which from other user reports does not block undervolting.

Thank you.

General guides, not all steps applies to all bios systems:

[GUIDE] AMI INTEL CPU Microcode Update Guide - Special Topics / CPU Microcodes - Win-Raid Forum (level1techs.com)
[GUIDE] Update CPU Microcode + Fix FIT Using UEFITool / Hex - Special Topics / CPU Microcodes - Win-Raid Forum (level1techs.com)
MC Extractor: Intel, AMD, VIA & Freescale Microcode Extraction Tool Discussion - Special Topics / CPU Microcodes - Win-Raid Forum (level1techs.com)
Intel, AMD, VIA & Freescale CPU Microcode Repositories Discussion - Special Topics / CPU Microcodes - Win-Raid Forum (level1techs.com)
[OFFER] Intel CPU Microcode Archives - Special Topics / CPU Microcodes - Win-Raid Forum (level1techs.com)

I could use some help with unlocking settings on Gigabyte Alder Lake platform (Z690 Aorus Elite DDR4). The problem is that I only see cherry-picked items in BIOS because Gigabyte uses a custom menu. No matter how many settings I unlock, I cannot see them in BIOS. For instance, I could unlock all settings in ‘chipset’ but it wouldn’t matter because I can’t see ‘chipset’ at all and therefore, I cannot see any of its settings, except for the few handpicked settings that the custom menu gives me. See my attached screenshot.

How can I get rid of the custom menu?

So far, it is only possible to change it on your choose by picking other setting to be shown. That’s it because of that highly customized setup screen.

The view available in UEFIEditor doesn’t match what actually displayed. I wish I could know how to fix this.

1 Like

How much research have you done into the Aorus Elite motherboard? I could be mistaken, but I think that’s the one that’s horribly broken and the bios is barely held together with the coding equivalent of duct tape… that might be why certain settings are hidden - those settings either don’t work or will break things.

You should check for bad reviews on Amazon, Newegg, etc. I could be wrong though.

Ok thanks for the guides, I will check them out.

Since I have q flash plus, would that save me in the case that I didn’t edit the bios correctly and it got corrupted? Just wondering.

Thanks again!

It should, as long as no EC/TPM/ME fw is not messed around, meaning the purpose here is to mod the bios_region area and so Q-Flash plus should correclty recover it.

Now…this is the kind of question that should never be made in “MOD world”…as no one can assure you of nothing and its the user ONLY, choice of proceeding in such “adventures”, we cant guess how all the models/brands of motherboard/bioses deal with it, even when a user with same hw and action reports is been successful, it can go wrong for us, im not “painting” it as a dark scenario, it IS as it IS, good luck.

In the link you gave, in the blog entry, he is using AMIBCP but I can’t open the BIOS in AMIBCP. I get something like ‘strings are too long’. Does anybody know how to open Z690 BIOS in AMIBCP? Is there a patched version out there?

How much research have you done into the Aorus Elite motherboard? I could be mistaken, but I think that’s the one that’s horribly broken and the bios is barely held together with the coding equivalent of duct tape… that might be why certain settings are hidden - those settings either don’t work or will break things.
You should check for bad reviews on Amazon, Newegg, etc. I could be wrong though.

Not sure, if this was addressed to me or which board you mean (the Z690 or the Z490).

As far as the Gigabyte Aorus Z690 BIOS goes, in my experience, it is fine. I don’t have any issues with it. There was one annoying bug in BIOS versions before F21, but that has since been fixed with a BIOS update. The bug was that if you enabled “Resizable BAR” but left “Above 4G Decode” disabled, the BIOS would not POST, and you had to do a CMOS reset via hardware jumper.

Hi MeatWar,

Apparently I am supposed to find a 0x104 Intel microcode and replace it into bios.

So I have opened the bios file (with the microcode I want to edit) into in UEFITool NE Alpha 51. I have opened every single section of the list and there is only one microcode file (and it matches the GUID(?) from the tutorial, so I’m sure I have the right thing. Per the tutorial, I right-clicked it and “extract body” and saved it as File_Raw_Microcode_body.raw.
The tutorial says to open the master microcode file in HxD editor, so I’m assuming that’s what this file is. I then have successfully opened it in HxD hex editor where I see all the hex values.

At this point I am the tutorial starts talking about a “CPU microcode repository” and I’m not sure whether that is even relevant to what I’m trying to do, which is to replace the newer bios microcode with the 0x104 microcode. ssIt also talks about checking whether the two microcode files are different sizes, and I’m supposed to be able to see this in the hex editor? I used the “fastforward” button in the data inspector window on the right in HxD, but I don’t see anything obvious indicating file size. Perhaps I am supposed to infer file size from the last offset line (which is 0014B400)? IT SEEMS I CAN CHECK THE SIZE IN UEFI TOOL… it gives “full size,” “header size,” and “body size,” and I’m not sure which is relevant.

Lastly, once I have both the new 0x104 microcode and the old microcode both open in HxD, how do I know what to replace? (I am currently trying to figure this out from these two tutorials:

[GUIDE] AMI INTEL CPU Microcode Update Guide)

I think I am supposed to replace certain hex values, but also I need to make sure everything “lines up” so that nothing else is pushed out of whack. Something I am very confused about is that the different bios version have different numbers of microcode addresses.
Please see this image:


(Duplicate image backup in case the other does not display large enough: https://imgur.com/rTYKQbI)

Please excuse my ignorance, I am not anything close to a programmer. I really appreciate your help!

Thank you.

“Some BIOS strings exceeds the maximum length”?

Unfortunatelly, I didn’t save the patched version in my cloud storage, so I have none to share.
Try using AMIBCP PRO.

Im no programmer also… but you lack severe understanding and advanced knowledge, so its very difficult and i have no time for extended lessons.

It could be easier for you using MMtool and replace on F22 with the F4 old mcodes extracted with MCextractor (Extracted folder), it may work as it is and you have Q-Flash to recover.
Do not use the older mcodes for other cpu’s, use the ones you need only.

Every mcode in their respective bios version has its own starting adress and length (length varies from mcode revisons), basically the new(old) mcode will have to be pasted in this block length using HEX manual editing.

But there is no download. The source is in the link is only a PDF file. I tried to google ‘AMIBCP Pro’, ’ ‘AMIBCP 5.14.0058’, etc. no success.

@Tad91
Since AMI doesn’t offer the AMIBCP tool for the customers, you cannot expect here a download link.
Nevertheless you will be able to find a link, if you do a Google search for “AMIBCP 5.02.0031” and choose the first of the offered options. Then you may have to scroll down.

I found nothing for the new AMIBCP Pro I was able to find older versions but none of them can open the BIOS. They all report something like: “Maximum number of strings exceeded.”

I have tested: 5.02.0031 and 5.02.0034.

@Tad91
A Forum like this one doesn’t offer a tool, which cannot be legally achieved by a private person.
What about asking the Company AMI? I am pretty sure, that AMI will be pleased about your request.

If you read my posts, you will see that I did not ask for a link to the tool, because I understand, that it cannot be legally obtained by anyone here, unless they work for a hardware manufacturer. In my first post, I was using a free tool (Aptio V UEFI Editor). You can see that in my screenshot. Then Sweet_Kitten points me to the AMIBCP Pro tool that nobody has access to, afaik. I have not seen any indication that someone claims they have the new AMIBCP Pro or have used it to edit a BIOS. An then you tell me to ask AMI.

I fully understand that the tool cannot be legally made available here. But I would like to know, which tools people are using to successfully mod Alder Lake/Alder Point BIOS ROMs.

Has anybody successfully used AMIBCP to mod a Z690 BIOS? And which version did you use? Or are people using free tools? I see in the screenshots, that they use AMIBCP to mod older BIOS versions (for Z390, etc.), but what about Z690?

I searched the forum for “Z690” and I see lots of requests for modding but all but one request are unfilled/unanswered. It makes me wonder, if anybody has even been able to mod a Z690 BIOS?

As you can see: unfilled request here, and here unfilled #2, another unfilled here.
I found one success here in which the BIOS options were confirmed unlocked/unhidden, but they didn’t say how they did it.

In the meantime, as I said in my first post, I hit a brick wall with trying to unlock hidden options using the free UEFI Editor tool. I don’t know if this is because I am doing something wrong, or if it is because of the custom menu that this BIOS has.

Another, more successful, avenue for me has been to completely ignore the BIOS setup and its options and instead to modify UEFI NVRAM variables. I hit another brick wall there because the varstores that I need to edit, are write protected. These are ‘Setup’, ‘AMITSESetup’, ‘PchSetup’ to name a few. My workaround for this is to edit NVRAM vars in the ROM image and then flash the image (instead of changing the variable directly in NVRAM from UEFI shell or in BIOS setup). Now, you can imagine that is not the most efficient workflow for testing but at least it works.

This way, I have been able to enable S0 power state (Modern Standby) by setting ‘Low Power S0 Idle Capability’ to enabled. It is disabled and hidden by default. I’m on Alder Point Desktop (Gigabyte Z690 Aorus Elite DDR4). Now it shows in Windows:

The following sleep states are available on this system:
    Standby (S0 Low Power Idle) Network Connected
...
The following sleep states are not available on this system:
    Standby (S3)
        This standby state is disabled when S0 low power idle is supported.
...

With stock BIOS, it is the other way around. S3 is available and S0 is unavailable.

There is yet another issue I need help with. In the process of doing this, I had to enter manufacturing mode, because I had issues with Gigabyte’s and AMI’s flash tools refusing to flash unsigned ROMs (or at least refusing to flash unsigned BIOS region only ROMs). I tried the old version of AFU flash (with the ‘/GAN’’ option but it cannot see the EC on Alder Point.). Now I need help with exiting manufacturing mode. Currently, I don’t have ‘Intel(R) Platform Monitoring Technology Device’ in device manager anymore and Intel’s MEInfo tool reports.

PS C:\CSME ADP v16.0 r8\MEInfo\WIN64> .\MEInfoWin64.exe -VERBOSE
Intel (R) ME Info Version: 16.0.15.1829
Copyright (C) 2005 - 2022, Intel Corporation. All rights reserved.

General FW Information
    FW Status Register1                          0x80042044
    FW Status Register2                          0x39284106
    FW Status Register3                          0x00000020
    FW Status Register4                          0x00004000
    FW Status Register5                          0x00000000
    FW Status Register6                          0x40200000

    Current FW State                             Disabled
    Flash Partition Table                        Valid
    FW Memory State                              CM0 with UMA
    FW Initialization                            Initializing
    BUP Loading state                            Success
    FW Error Code                                Disabled
    FW Mode Of Operation                         Unsecured mode by H/W jumper
    SPI Flash Log                                Not Present
    FW Loading Phase                             BringUp
    FW Loading Phase Status                      CM0_TEMP_DISABLE
    ME File System Corrupted                     No


Error 632: ME disabled.
PS C:\CSME ADP v16.0 r8\MEInfo\WIN64>

The problem with ’ FW Mode Of Operation : Unsecured mode by H/W jumper’ being of course, that the board does not have a hardware jumper. Currently, the only way that I know of to re-enable ME and to exit manufacturing mode is to flash the stock BIOS, but that defeats the purpose. I would like to keep the modded BIOS but exit manufacturing mode and re-enable Management Engine. Is the problem possibly, that I did not flash the entire ROM, but only the BIOS region?

So, what I need help with at this point is

  1. need help with unhiding BIOS settings
  2. I possibly also would like to be able to change setup/optimized defaults
  3. How can I exit manufacturing mode and re-initialize Management Engine (ME)?
  4. Lastly, How can I remove write protection from NVRAM vars that are write protected so that I can set them from UEFI shell? What is responsible for protecting UEFI vars, and how do I remove it? Is it a hidden BIOS setting perhaps (like “BIOS Lock”, Help: “Enable/Disable the PCH BIOS Lock Enable feature. Required to be enabled to ensure SMM protection of flash.”)? Or is it more deeply rooted? Perhaps in the flash descriptor?

I forgot to make clear, that this was an ironic advice.