The need: I had to search everywhere on the internet to find a step-by-step walktrough that teach how to update the microcodes in the NCPUCODE.BIN of my BIOS. (I have an Award non-UEFI BIOS on a Gygabite GA-X58A-UD9 motherboard) This should work with Phoenix Bios too.
The problem: Almost all guides on the internet are related to UEFI Bios and tell you to use MMTool or UBU to do it, but it is unfortunately useless on non-UEFI Bios… And for most of the rest of the guides out there, those are hard to find, very rare, are incomplete, not well done and therefore incomprehensible guides asking you to use a HEX Editor to change the microcodes manually.
The solution: After so much time in research, i want to save everyone the time wasted and the problems i got finding how to do it. And i must say that no Hex editor is required!
So here is the simple guide step-by-step on how to do it:
Note 1: Only the name “NCPUCODE.BIN” is used in the Guide to keep it short. Your CPU microcodes file in your Bios may be named CPUCODE.BIN instead. (If you find other names for it, please post it) Just use the same name as the one already in your Bios.
Note 2: You MUST already have a file for the microcodes in your Bios (See note 1). This guide can’t create a microcode file for more older Bios where there are none. Well… It can but the Bios won’t use it so it is the same thing. If you are in this situation, then HxD editing is probably your only solution…
Note 3: If you have an Award/Phoenix bios that happen to be also from Dell then there are chances that this guide won’t work for you. Dell has some special bios that usually requires a completely different guide and a different set of tools to do it.
Preparation:
1- Your Bios file that you want to modify.
2- a) The tool CBROM155.EXE if you have a GIGABYTE motherboard or…
b) If your motherboard is not GIGABYTE maybe a CBROM version higher that v1.55 can do (I didn’t test with other motherboards than GIGABYTE so i am not sure). Reasons are that versions higher than v1.55 are trying to change and/or relocate and/or change the checksum of the files that are before MINIT. This makes the bios invalid to flash on some motherboards (Example: GIGABYTE)
You can download all CBROM versions >here<
3- The new updated microcodes you want to put in your Bios. You can get most of those >here< and >here<
4- The latest MC Extractor and database. You can get those >here<
5- Optional: The microcode tool to convert .dat into usable microcodes. You can download it >here<
Note: Alternatively, you can also use MC Extractor with -CONT option (Prefered). In this case, you already have it.
The guide step-by-step:
Step 1 : How to know which microcodes are “Outdated” :
2- If you have an “extracted” folder, make sure it is empty of microcodes before doing the next step.
3- Drag your Bios file over MCE.EXE then press ENTER. You should see a list of your microcodes. Each microcode is listed as “Yes” or “No” to be the latest.
Step 2 : Choosing your new CPU microcodes :
2- Copy MICROCODE.EXE and MICROCODE.C into the same folder of the MICROCODE.DAT file
3- Drag MICROCODE.DAT over MICROCODE.EXE. This will extract all the microcodes inside. You should now see them all.
4- Find your new microcodes in the list by comparing the CPUID, platform, version and date with the “Outdated” ones. If you find a corresponding one with a newer date and version, then copy it to the same folder as your Bios file and CBROM.
Note: Take special attention to the platform, because sometimes CPUID are the same but platform are not.
Step 3 : Integration of the new CPU microcodes :
3- Open a command prompt with administrative rights and go to your bios and CBROM folder directory.
2- Create a blank file NCPUCODE.BIN either by:
a) Typing
NUL > NCPUCODE.BIN
b) Creating an empty document text and changing the name to NCPUCODE.BIN
3- This step is required only if an old microcode and a new microcode are not the exact same size. Type the following command:
cbrom155.exe The-name-of-your-BIOS-file-here /nc_cpucode NCPUCODE.BIN
cbrom155.exe x58aud9.f6 /nc_cpucode NCPUCODE.BIN
This will erase ALL the microcodes in your bios so that you can replace them in a clean manner without leftover and reduce the chances of an error in the microcodes.
4- Merge your existing and new CPU microcodes by typing something like this adapted to your file's names in the command prompt: (Your microcodes files needed should all be in this folder by now)
copy /b ncpucode.bin + cpu00010676_plat00000004_ver0000060f_date20100929.bin + cpu00010676_plat00000040_ver0000060f_date20100929.bin + cpu0001067a_plat00000044_ver00000a0b_date20100928.bin ncpucode.bin
5- Make it "read-only" to prevent from deletion after the update is complete by typing the following command:
attrib +R ncpucode.bin
6- Update your BIOS file with the new cpu microcodes with the next command: (You may need to replace CBROM155.exe by CBROM198.EXE if you are not updating a GIGABYTE Bios and are using CBROM198 instead)
Note: Make a copy of your Bios file somewhere before doing this step, you may need it later.
cbrom155.exe The-name-of-your-BIOS-file-here /nc_cpucode NCPUCODE.BIN
cbrom155.exe x58aud9.f6 /nc_cpucode NCPUCODE.BIN
If you get a "Not enough space error", see the FAQ and problems section.
7- VERY IMPORTANT: Verify the integrity of your new microcodes in your Bios file before flashing it! DO THE NEXT STEP!
Step 4 : >(VERY IMPORTANT!)>: Verify the integrity of the new CPU microcodes in your new BIOS file before flashing it:
2- Drag your new Bios file over MC.EXE to see your new list of microcodes. 2 things can happen:
a) Your new codes are there and no error shows up. Congratulation! You microcodes are updated to newer ones and you are ready to flash it.
b) You get an error from MC Extractor saying that X microcode in the list is packed or badly extracted. If that happen, DON'T FLASH IT. Remember the copy of the Bios file you have done just before the integration? You will now need it because the new Bios file you just made is now useless. You have to redo it by starting from the integration step of the NCPUCODE.BIN (the copy /b step) by trying to remove one or more already updated microcodes. If that don't work, you can try instead to add also one or more of the old ones that are still in the "extracted" folder. Unfortunately, it is more a "trial and error"-untill-it-pass-the-validation step than anything else. It just takes patience to do it... But there is at least one exception where it will never validate: See "FAQ and problems" for more details.
FAQ and Problems:
Solution: I will tell you the solution because it happened to me once and i almost got crazy searching for the problem... Your problem is probably because the total space of your microcodes that you try to put in (your NCPUCODE.BIN) is smaller than the one it replace in the Bios. Exemple: 63k (total new) instead of 68k(total old). CBROM155 (and maybe other version) don't deal well with a decrease in space used. The real problem is because CBROM in the Bios start with the end (Search for NCPUCODE.BIN with an HxD editior in the Bios) and fill it up by replacing what is there untill the beginning (search for your first microcode that is in your Bios and NCPUCODE.BIN file), but your beginning is now shorter and it doesn't replace by FF all the leftover of your old microcodes. Even doing an extra "CBROM155 your-bios-name /nc_cpucode NCPUCODE.BIN" BEFORE integration with an empty NCPUCODE.BIN that in theory should erase your NCPUCODE from your Bios don't work. The leftover remains there no matter what. The solution is to do the following:
1- Do your integration of your new microcodes as you want them by following the guide untill you fail the verification process.
2- Open your new Bios file with HxD editor, open your new NCPUCODE.BIN that you used for integration and open also your first microcode that you used to make it with the COPY /B step. You may also have to open the first microcode of your old Bios if it is not the same as your new one.
3- Verify that your first microcode for integration is really the first in your NCPUCODE.BIN file.
4- Highlight all the codes in the NCPUCODE.BIN file and copy it to use it to make a search for it in the Bios file. That part should all become blue in your Bios.
5- Go the the beginning where the blue start. Congratulation, you found where the leftover ends. Now you need to know where they beggin.
6- Look for the leftover by scrolling up to find where the leftover beggins. The beginning of the leftover will usually be easy to spot because it start where you beggin to see FF everywhere and it will begin with the same code as the first microcode that was in your old Bios. (That is why it always appeared in double in the verification process and also why this part was always marked as badly packed or extracted)
7- Highlight all the leftover from beginning to the end of it and do a right click on it. Choose the command "Fill the space", type FF then click Ok. You did this to maintain the size and the checksum of your Bios (Otherwise the Bios won't work and probably won't even flash).
8- Now restore the internal references in your Bios to be sure that when you try to flash it, you won't get an "invalid Bios" message. To do that, redo your integration using CBROM155 your-bios-name.here /NC_CPUCODE NCPUCODE.BIN one last time.
9- Congratulation! Your Bios should now work. Save it, and redo the validation process. No error should appear this time. You can also verify further by doing the /d option with CBROM to verify all your microcodes appears in the end of the list.
Problem: I got a "Not enough space error" while trying to integrate my new CPU microcodes in the BIOS. What can i do?
Answer: If your Bios don't have big enough empty space to take the updates then here are your choices:
Option 1- Don't do the update. --- YOU ARE KIDDING, RIGHT?? Ok, maybe...
Option 2- Try again by removing one of the CPU microcodes that you will never use. --- BUT I WANT TO BE ABLE TO KEEP THE SAME CPU SUPPORT AS I ORIGINALLY HAD!!! Ok, i understand you, keep on reading...
Option 3- Try again by removing one of the CPU microcodes that you will never use... Once it is done, use the /cpucode option to add the one you removed. Steps to do it:
a) Rename your missing cpu microcode. Example: Rename "cpu000106A5_plat03_ver0000001B_date27-06-2015.bin" to NCPUCODE.BIN
b) Do the command. Here is an example of the command:
CBROM155.exe x58aud9.f6 /cpucode NCPUCODE.bin
This will create a new compressed file in your BIOS for your last microcode. Be aware that it probably won't show up in the microcodes infos at the bottom of the list of CBROM when you do /D option. It won't show up either if you use "intelmicrocodelist_v04a" to see the list of your microcodes. I don't know if it will show up in MC Extractor (to be confirmed). But the microcode will work.
If this still doesn't work, try the same thing but this time by removing 2 microcodes and so on untill it works.
Question: What is the difference between the /nc_cpucode and the /cpucode option?
Answer: a) /nc_cpucode is used to update microcodes because it will erase EVERYTHING (not just the ones you update) in the NCPUCODE.BIN of your Bios and replace it by what is in your new NCPUCODE.BIN that you created. Also, the command never compress anything.
b) /cpucode is used mainly to add support for a new CPU with a new cpu microcode (not an update) without touching to the uncompressed NCPUCODE.BIN of the Bios, instead it will create a second NCPUCODE.BIN in the bios but this one will be compressed (Just like a .ROM module) So yes, the Bios will have to read 2 files to get all the microcodes... Because of that, it is better to use the /nc_cpucode even to add a new CPU microcode to put them all in the same place and uncompressed. But when the space in the Bios runs out or other problems like that appears (Bios are tricky things), this is where the /cpucode command offer a chance and a way to go around the problem.
Question: I can't extract my microcodes when i drag my bios over MCE.EXE. It copy my file instead of opening it. What can i do?
Answer: Be sure you downloaded the whole MCE program with the MCE.exe file and not just the database file. If this is not your problem, then i suspect either you didn't do step one: "1- Copy your Bios in your MC Extractor folder" or your Windows is not set anymore with its default behavior.
In any case, you can try instead this work around:
1- While holding the CTRL key, right click on your bios file and click "Copy as path"
2- Double click MCE.exe
3- Paste your path in MCE, press SPACE and write -CONT. So it should look like this: "your-path-here" -cont
4- Press enter
This should give you the same thing but with an error that it didn't manage to convert the file. The error is normal and you can dismiss it because the microcodes were already converted in the bios (Meaning they are already uncompressed).
Question: After i have done the procedure to empty the NCPUCODE.BIN in my Bios, MCE still list the microcodes even if when i inspect the Bios file, i find it empty. This prevent me from putting back my new list of microcodes successfully because they will combine with only-God-knows-how what is still there in the Bios. What can be done?
Answer: Then you are not lucky and it never happened to me... But it won't be dramatic. This is a rare problem that is caused by a partial incompatibility between your version of Cbrom and your Bios for that specific command. If your motherboard is a Gigabyte, chances are that you MUST use Cbrom 1.55 to integrate your microcodes with /nc_cpucode (Otherwise, it will mess up with what is before MINIT in the Bios and it won't be good). The way around the problem is that you don't need Cbrom 1.55 for some of the other commands required. Said simply, if a command will not mess with anything related to the checksum of what is before MINIT, then chances are it can also be done by another version of Cbrom. You can use, for example, Cbrom 1.98 to do a "/nc_cpucode Release" command, come back to Cbrom 1.55 and do a /nc_cpucode with an empty write protected file then continue normally by integrating your new CPU Codes by following the guide. For more precisions on this, see the discussion related to post #341. Thanks to Triv for providing this solution for his problem.
ALTERNATIVE: The HxD Editor way to do it.
Sometimes, it is impossible to use cbrom to update the microcodes and can't change the microcodes using the first guide. Or you just prefer to do it in the good old fashion way. So here is what to do using HxD Editor.
- HxD Editor
- Your new microcodes that you want to put there
- MCExtractor
- Your Bios file
- Depending on what is preventing you to update your bios, a software that can open your bios file and replace orom.
Quick Guide:
1- Extract your old microcodes using MCExtractor.
2- Open in HxD Editor:
a) Your bios file
b) One of your old microcode you want to replace
c) The new microcode that will be used to update that microcode
2- Copy all of the old microcode you opened. (It becomes blue)
3- Do a search for it in the bios file. (That part will become blue)
4- Copy all of the new microcode you opened. (It gets blue too)
5- Click on the blue part of the bios file and paste it there using the replace option.
6- Save the changes in your bios file and repeat all the steps for each of the microcodes you want to update.
7- Restore the checksum and the integrity of your bios file by updating or replacing an orom file in the bios (usually the last one for simplicity). That step is almost impossible to describe as a guide because each bios have a differrent problem that requires a differrent work around to do it for those that the first guide didn't work. You will have to make a research according to your bios for that step and ask for help in this forum if need be.
8- Verify your new Bios with MCExtractor to be sure that everything is in place and that no unexpected errors are showing.
Notes: This guide assume that the new microcode that replace an old one are both the same size. Even if it is almost always the case, there are sometimes a differrence in size between both microcode files and, if it is your case, you will have to use a differrent method. A work around is to NOT change them one by one but as a bulk update (Replace all the microcodes, even the already updated, by all the new microcodes, even the already updated in just one step). The little warning about this method is to verify that if your new update is bigger than the old one, you must be sure to have enough free space in the bios for the extra data. Some bios are already full and can cause you some problem. And if you new file is shorter, then you risk letting old microcode parts in you bios. Remember to replace those with "FF" or "00" according to your bios. Better that you verify all that before you copy anything.
To help you, here you can >download my collection of all the valid versions of CBROM i have<.
I hope that help you to update your CPU microcodes.
If you have a Gigabyte motherboard, it could be a good opportunity to also update your Q-Flash module (Usually SBF.bin module). The latest i have is v2.24 and >you can download it here<. If you find a newer version then please post it.
If you like my BIOS guide and want to help me in providing always the latest BIOS updates then please consider making a donation to my PayPal account: [email protected]