AMD Microcode update help

Hi, I’m newbie about CPU microcodes. But, I’'d like to update the microcode of my ASUS Crosshair Formula Z AMD 990FX chipset. It currently has the AGESA OrochiPl V1.5.0.2, but the latest is the V1.5.0.7 from the MSI 970A-G43 motherboard with 970 chipset. The 990FXA-GD80 motherboard has the 990FX chipset, but it comes as EXE file with extraction security, making it dificult to extract the BIN or Rom file. The latest Bios ver is 13.6, but I finded the ver. 13.5 extracted in the MSI Forums it has the V1.5.0.5 microcode, I have some questions: What microcode version is better for my motherboard: the latest or the V1.5.0.5 from a motherboard with the same chipset as mine?. Could it work if I simply replace the AGESA microcode in my Bios? or Is better to simply patch my current microcode?. Can you give us a complete guide to update the microcode for newbies?

Thank you!!

P.D. here are the Bioses:

7974v11.zip (4.37 MB)

E7640AMS.zip (3.9 MB)

This is for Plutomaniac the MC Extractor creator, here in this forum there’s a guide how to update the CPU microcode for Intel. My question to you is : Does this guide also work for AMD CPUs?, if not, can you make a guide for AMD users?. I know that in Linux there’s a solution that updates the microcode every time the computer boots, but I’d like a permanent solution installed in the Bios. What is better: patch the microcode or replace the AGESA module with MMtool?

Thank you!!

I don’t know of any guide to update the microcode in this forum, at least not something from me. I have less AMD knowledge on the matter and especially when it comes to AGESA replacements. That module is important and incorporates a lot more than cpu microcode so I suggest to not try replacing it with something from another board. Instead, you should replace just the cpu microcode, if possible. The easy way would be MMTool but it doesn’t seem to be able to detect or update AMD microcodes. So the only thing I can think of is manual cpu microcode replacement using UEFITool and copy-paste the new microcode data over the old one. I don’t know if that will work as AMD/AMI might have some other AGESA checksum or similar.

You haven’t mentioned what cpu microcode you want updated. I assumed you want cpu00600F20 (CPUID 600F20, FX-8350 etc) so I went with that. I updated it from 822 (03-01-2013) to 84F (25-01-2016) with UEFITool > Open ASUS CAP > Find the module where microcodes are stored by searching a random hex pattern of one mc extracted with MCE > Extract Body > Find 600F20 starting/ending point and replace the hex code within for the new mc (both are 0xA20 sized) > Replace Body > Save/Rebuild final image. UEFITool fixes automatically the BIOS volume checksum where the change is situated but as I said, if there is anything else from AMD or AMI at Agesa or similar, then the BIOS might not work. The mod is based on Crosshair V Formula-Z BIOS 2201.

Also, after the mod, the AMI Capsule (.CAP) might be invalid and thus the in-BIOS update might not allow you to continue. This excellent thread by Fernando might help in such a case.

Bottom line: This might or might not work. So, keep that in mind in case you decide to proceed and test the modded SPI image attached below. Either way, please keep us informed.

By the way, Windows can update the mc as well during OS boot via the mcupdate_GenuineIntel.dll and mcupdate_AuthenticAMD.dll libraries.

CROSSHAIR-V-FORMULA-Z-ASUS-2201_new.rar (3.18 MB)

Thanks for the Modded Bios Plutomaniac, I’ll try it and I’ll let you know my results. Also, I’ll try to replace the AGESA microcode with the latest V1.5.0.7; don’t worry I know the risk that it takes. I’ll use the USB Flashback method that flash the motherboard Bios even is the CPU or Memory are not present, what this means is: in the case the board gets bricked I just reflash the Bios with the currently working one (as stated by the board manual), and return the system to normal operation. This allows me to test different versions of CPU microcodes, and see if my CPU performs better with the new patches. In the worst case that everything fails, I have a spare Bios chip for this board, wich is installed by a socked clip, so I simply power off the system, remove the old one, and install this spare chip to boot again. Is a win-win strategy, when I get the results this will help other people with the same board to reach the best performance.

Greetings!!

Success, I did install this bios and it works slightly better. Confirming this result, I modded this bios a little more updating two microcodes, adding the latest AGESA module, used UBU to update the rest modules and finally adding an AHCI and NVME modules to boot from M.2 SS drives. Now, I’ll put in this topic the steps I did to mod this Bios as a guide for updapting AMD CPU microcodes (for newbies), if more new codes appear in the future:

1- We’ll use three utilities: MC Extractor, UEFITool, and HxD hex editor.
2- Extract your Bios to a folder where MC Extractor is located, and extract the microcodes to a folder called AMD_old. Find a Bios with updated microcodes (with the same socket/chipset board), and extract them to a folder called AMD.
3-Compare both folders to find the number of microcodes that have been updated (check ver/date), and take both (the new and old one) to a folder where the HxD editor is.
4-Using the Hex editor, open the old microcode and copy a hex pattern (almost 5 characters). Open the Bios with UEFITool and search (menu = search) for this hex pattern to locate the module where the microcodes are stored, and extract the module’s body (right click = extract body).
5-Open the extracted module (bin file) with the hex editor, then the old microcode and new microcode in separate taps. Copy a hex pattern (almost 5 characters) from the bengining of the old microcode, go to the module tap and search (ctrl+F) for this hex number (selecting all), write down the offset location. Go to the end of the old microcode and copy the hex pattern, search for this pattern in the module tap (select next) and write down the offset location.
6-Mouse right click and choose “Select Block”, from the first offset to the second (where the code begins and end) and check its size. We finded the location of the old microcode, next select all block of the new microcode and copy it. Paste it and replace the old microcode in the module tap (it has to be the same size).
7- That’s it, we have updated the microcode. Repeat the procedure if you have more codes to update. Close the old and new microcode taps, and save the modded module; close the HxD hex editor.
8-In UEFITool replace the modded module (right click on the highlighted module=replace), the module could be see duplicated (don’t worry). Go to menu and save the Bios, UEFITool fixes automaticaly the duplicated module and checksum.
9- You did it, a modded Bios with updated AMD CPU microcodes.
10- Thanks Plutomaniac for your help, and the authors of these code utilities.

Good news. Now, to clear things up. Is your success based solely on the file I uploaded above? Meaning, only the cpu microcode is changed and nothing else (no AGESA, NVME etc). If yes, did you verify that the microcode is actually loaded (probably shown at BIOS, otherwise check AIDA64 or HWInfo)? You should see version 84F in your case. For the procedure:

An easier way to search UEFITool for the ucode module of UEFI images is by searching for the non-unicode Text “$UCODEVS” or “$UCODE2K” or “$UCODE4K”. I think only “$UCODEVS” is used from what I’ve seen but the other are mentioned around the web at some sources. That’s what MCE uses to find the microcodes at UEFI images.

You need to extract and replace the body of the “PE32 image section”, no point in doing so at the whole AmdProcessorInitPeim PEI module. At the test above I modded and replaced the “PE32 image section” only and UEFITool fixed the module checksum by itself.

The exact location (offset) of each microcode is shown next to their size at MCE and these sizes are relevant to the exact SPI/BIOS image that got loaded.

If the microcode to be updated is smaller or larger in size (can happen sometimes, not so for AMD), then you need to check the trailing padding after the size of the old microcode and adjust accordingly. If the new MC is smaller, add some padding to have the overall size be the same (MC + padding until the start of the next MC), otherwise remove the amount of padding from the end of the microcode’s area at the PE32 module so that it’s equal to the size difference. That can be useful if someone wants to add a new CPUID microcode and replace another one but that hasn’t been tested of course.

When it comes to AGESA, replacing it is not as easy as it might seem because it has a lot of parts at AMI bios and they are OEM-specific most of the time. For example, AmdProcessorInitPeim is one of those parts. I’ve seen multiple Agesa modules with the exact same version yet completely different contents inside, even from the same manufacturer. Check the more detailed post by lordkag found here to learn more.

Thanks for the info Plutomaniac, and yes your modded bios works. Then I go further modifying this bios: I added the AMD Agesa module from a 990FX Gamer Edition mobo from MSI (due they always update the code each new release), and by surprise it works ( I think it has to be from a mobo with the same chipset to work). Also, i tested it with and without the new Agesa module and extracted the CPU microcodes, the result: the microcodes aren’t inside this module, probably this is for the starting parameters at boot. I’ll install HWinfo, could you please explain in detail how to check for the loaded microcode with this utility?. After I modded this bios I checked it with MCE and extracted the codes to see if they have been updated, everthing ok, three codes are updated (F20, FA0, F41). This result means that the AGESA module can be updated if you find one with matched specs. Your guide is good in case the microcode differs in size, then check the padding and mod accordingly.


PD: Yes, I have checked the microcode loaded with HWInfo in the system tree =>Processor=>9590FX=CPU microcode ver. 0600084F. Confirmed

AGESA consists of many parts which work together so it makes sense for the actual cpu microcodes to not be at the one you replaced. Since I don’t have AGESA knowledge, I’ll just drop this subject. Now, testing if the microcode is inserted with MCE means nothing for the actual system’s operability once flashed. The actual test is for the platform to boot and for the new microcode to be shown as loaded at BIOS or software tools such as HWInfo, AIDA64 etc. There’s also the fact that AMD generally has no standards and in the case of cpu mc, no checksum or even encryption in some of their platforms so it’s a good idea to run a cpu stability test as well once after the mod is flashed.

As far as updating the cpu microcode in AmdProcessorInitPeim PEI module is concerned (UEFI only), your case proves that it works and it’s easy enough to possibly even automate at some point (@SoniX ). So thank you for testing this Stickmode.

Ok, to further testing the use of AGESA Modules in AMD bios. I’ll post two AGESA modules, both are the latest ver 1.5.0.7, one from the 990FXA GAMING and the other from 970A-G43 PLUS mobos from MSI. As I said these modules have to match your mobo’s chipset to avoid any problems, the first is for AMD 990FX chipset, and the second for AMD 970 chipset. Be aware that you only test it if your mobo supports USB Flashback feature, otherwise don’t try it, your mobo could be bricked. Proceed with caution, if all the testing are ok and you successful update your AGESA module, post your results here showing your mobo’s specs. I’ll contact SonicX the UBU author to try to implement the AGESA module update feature if all goes well. Also, you can try to update the AMD CPU microcodes following the procedure in this topic (already confirmed to work by me), and I’ll ask to include in UBU the automatic microcode update too. Good luck…



PD: I have another question for you PLUTOMANIAC: Where I find the latest AMD microcodes?, Is there a database?, or I have to find them checking the latest AMD Bios for every mobo?. Thanks!!

MSI_990FXA-GAMING_AgesaModule.zip (52.2 KB)

970A-G43_PLUS_AgesaModule.zip (52.2 KB)


That’s not really possible for various reasons but even if it was, I would not recommend it. It could cause lots of bricks.


No need, I had already tagged him above. If he thinks it’s possible based on what I said above, he’ll look into it. But that’s not our decision.


I have some microcodes, those that can be seen at the MCE database. People can generally ask me from time to time but don’t expect to create a request topic of something.

Latest AMD microcodes:

http://ftp.us.debian.org/debian/pool/non…md64-microcode/

Thanks Kgbab, that’s just I needed. Now, I’ll have all AMD microcodes up-to-date…


PD: I have downloaded these files, and they are Debian install packages. To extract the microcodes you have to choose the latest file (check date), there are four different files by date, you just select the files with TAR.XZ extension, rename the files removing the “XZ” converting them to TAR compressed files. Use 7-zip or another tool to extract the file and rename it with binary (.bin, .rom) extension, then use MC Extractor to get the microcodes. There are some microcodes that your mobo’s bios doesn’t use, and others are missing, so compare the bios’s microcodes with this package and take ONLY the updated codes that your bios uses. Here’s the file, good luck…


Update: I checked it, and comfirm that the only codes that have been updated for AMD CPUs used by my mobo are 00100F41, 00100FA0, and 00600F20.

amd64-microcode_3.20160316.2.bin.zip (33.3 KB)

I have a BIOS. I updated the microcode in it to cpu00870F10_ver08701021_2020-01-25_E0F8186D.bin and it shows that it is updated in HWInfo.

How do I update the AGESA 1.0.0.5 from the beta X570 ACE BIOS into the X570 Creation BIOS?

The ACE and Creation BIOS’s are too big to attach, from my OneDrive.

https://drive.google.com/file/d/1WHHgBGk…iew?usp=sharing

https://drive.google.com/file/d/1RkEoXGV…iew?usp=sharing

hi would like to downgrade my microcode before spectre and meltdown patches . my mobo a320m sh2 v2 (rev1.1)

Do not Update the AGESA Micro Codes!! They can bei UNIQUE OEM version and distroy your board.

When you extract your orignal AGESA Code and compare it with official from AMD. When it is the same, then are the change good that it worked.