Tool to extract latest Intel microcode for bios modding

Discusses BIOS flashers and utilities from Award, AMI and Uniflash
richardaburton
New visitors - please read the rules.
Posts: 4
Joined: Fri Oct 24, 2008 6:02 pm

Fri Oct 24, 2008 6:13 pm

I wanted to update the microcode in my bios on an older P4 machine, but after much googleing couldn't figure out for sure what the latest version for my processor was. I couldn't find any sites with a recent definitive list of them, or anywhere with a good download collection. Tutorials for updating your microcode suggested extracting them from newer versions of the bioses for other motherboards that use the same socket type.

In the end I discovered you can download the entire set from Intel, but they are in a crappy format. I wrote this tool to extract all of them into the normal 2k binary files that you want to put in your bios. ctmc likes them, and they match examples from my own bios so I'm pretty confident of the results.

It also extracts the larger updates (I assume for newer processors), but I can't validate them - ctmc doesn't like them, but I suspect that's probably because of their size, they are probably fine. Ideally you should validate some of them before trusting the results.

http://rapidshare.com/files/163163235/microdecode.rar

Richard.
Last edited by richardaburton on Wed Nov 12, 2008 10:12 pm, edited 1 time in total.
roadrunner1405
New visitors - please read the rules.
Posts: 3
Joined: Wed Nov 12, 2008 11:53 am

Wed Nov 12, 2008 11:57 am

Is this link ok? Rapidshare find this not. Can You this mail me? Thanks
edwin
The Hardware Archivist
Posts: 6215
Joined: Wed Mar 20, 2002 7:11 pm
Location: Netherlands
Contact:

Wed Nov 12, 2008 9:46 pm

This file is neither allocated to a Premium Account, or a Collector's Account, and can therefore only be downloaded 10 times.

This limit is reached.
@richardaburton: can you email this thing to me? I might be able to host it properly.
edwin/evasive

Do not assume anything

System error, strike any user to continue...
richardaburton
New visitors - please read the rules.
Posts: 4
Joined: Fri Oct 24, 2008 6:02 pm

Wed Nov 12, 2008 10:15 pm

Download limit was reached. I've created a rapidshare account and uploaded it with that so there is no download limit anymore. Updated the link in the first post.

@edwin emailing you a copy too

Richard.
edwin
The Hardware Archivist
Posts: 6215
Joined: Wed Mar 20, 2002 7:11 pm
Location: Netherlands
Contact:

Wed Nov 12, 2008 11:01 pm

so, if I use this thing
http://www.elhvb.com/mboards/wimsbios/microdecode.rar
on the file here:
http://downloadcenter.intel.com/Detail_ ... ldID=14303
(after a bit of unpacking first)

I get a load of
cpu000xxxxx_plat00000xxx_ver00000xxx_datexxxxxxxx.bin files which can be used to patch into your bios, right?
edwin/evasive

Do not assume anything

System error, strike any user to continue...
richardaburton
New visitors - please read the rules.
Posts: 4
Joined: Fri Oct 24, 2008 6:02 pm

Thu Nov 13, 2008 12:17 am

edwin wrote:I get a load of
cpu000xxxxx_plat00000xxx_ver00000xxx_datexxxxxxxx.bin files which can be used to patch into your bios, right?
That's right. In award bioses you have a file called cpucode.bin which is made up of 1 or more of these bin files (simply concatenated together if there is more than one of them).

You can use the bin files produced by this tool to create a new cpucode.bin file (use copy /b to join your chosen bin files together). There are plenty of tuorials around on updating your microcode, but all that Ive seen require you to find your own microcode updates (from newer bioses for other boards). This tool allows you to get the latest microcode binaries direct from intel.
cp
BIOS Guru
Posts: 1914
Joined: Mon Oct 21, 2002 9:07 pm
Location: Germany

Thu Nov 13, 2008 11:52 am

the only problem is: if the size of the microcode differs from 2048 byte (2 kbyte) you can't insert it into (at least) an Award BIOS because it silently ignores the size byte in the binary and assumes a size of 2kB. on the other hand there is a NCPUCODE.BIN which holds all microcode updates that are NOT 2kB in size. but it can not replaced or edited with cbrom :(

topic dealing with this:
http://www.wimsbios.com/phpBB2/topic10082.html

output of the microcode extraction tool that i wrote:
http://www.wimsbios.com/phpBB2/topic9117.html

btw. the microcode is updated by the OS, too. Windows or Linux both do it automatically or have tools for that purpose.
If you email me include [WIMSBIOS] in the subject.
richardaburton
New visitors - please read the rules.
Posts: 4
Joined: Fri Oct 24, 2008 6:02 pm

Thu Nov 13, 2008 12:14 pm

the only problem is: if the size of the microcode differs from 2048 byte (2 kbyte) you can't insert it into (at least) an Award BIOS because it silently ignores the size byte in the binary and assumes a size of 2kB. on the other hand there is a NCPUCODE.BIN which holds all microcode updates that are NOT 2kB in size. but it can not replaced or edited with cbrom :(
The processors that my bios takes appear to only use 2k updates so I hadn't hit this problem. I also didn't have any genuine copies of microcode updates above 2k to compare my extracted ones against, so as mentioned above if anyone wanted to play with these larger updates they should be careful.

output of the microcode extraction tool that i wrote:
http://www.wimsbios.com/phpBB2/topic9117.html
I saw this when I was looking around, but I noticed it was 18 months old and there was no link to download them. So I ended up writing my own tool to find & get the latest versions, easier than keep googleing.
btw. the microcode is updated by the OS, too. Windows or Linux both do it automatically or have tools for that purpose.
I know, but where's the fun in that? Besides this is a bios forum, everyone here loves to flash stuff!

Richard.
cp
BIOS Guru
Posts: 1914
Joined: Mon Oct 21, 2002 9:07 pm
Location: Germany

Thu Nov 13, 2008 8:40 pm

The processors that my bios takes appear to only use 2k updates so I hadn't hit this problem. I also didn't have any genuine copies of microcode updates above 2k to compare my extracted ones against, so as mentioned above if anyone wanted to play with these larger updates they should be careful.
take a bios that contains both CPUCODE.BIN and NCPUCODE.BIN. display its contents with cbrom file.awd /D. watch the cpu models it displays at the very end of the output. extract and then strip the CPUCODE.BIN from the bios and run the display command again. note the missing cpu models? compare them to the contents of CPUCODE.BIN. however there are still supported cpu models shown. they are inside the NCPUCODE.BIN that is still inside the BIOS. take a hex-editor and search for the NCPUCODE.BIN. take a look at the size byte of those updates :)
I saw this when I was looking around, but I noticed it was 18 months old and there was no link to download them.
i never released my tool to the public because it's quite useless in my eyes. okay, it can extract microcodes and transfer them to a binary format but most of the problems with motherboard/cpu combinations are situated in the BIOS' cpu detection algorithm itself, not the cpu microcode. since i looked for a way to cure those problems the tool was not the right approach.
I know, but where's the fun in that? Besides this is a bios forum, everyone here loves to flash stuff!
no doubt, its fun :) and flashing stuff is cool, too. but still the BIOS only does basic stuff or so it should. and taking a look at the extended feature of loading microcodes reveals that the buggy code is already in the basic stuff: a clean CPU detection routine. let's assume the detection routine doesn't crash: the microcode loading routine is so buggy that it needed an addon resulting in TWO files (CPUCODE.BIN and NCPUCODE.BIN) which hold the microcodes. to the extend one of them isn't interchangeable with cbrom which makes it very hard to patch.
and last but not least 5 seconds after the BIOS is finished with all its routines the OS jumps in updating the microcode to an even never version (maybe ;)).

i rather waste my time and skills on coreboot the former LinuxBIOS now.
If you email me include [WIMSBIOS] in the subject.
Azrael5
New visitors - please read the rules.
Posts: 3
Joined: Sat Dec 19, 2009 5:42 pm

Sat Dec 19, 2009 5:52 pm

Could you describe the procedure to update bios by new microcode provided by intel?
cp
BIOS Guru
Posts: 1914
Joined: Mon Oct 21, 2002 9:07 pm
Location: Germany

Sun Dec 20, 2009 12:24 am

1. convert the microcode updates to binary (if not already done)
2. concatenate all updates to a single binary file
3. use one of the bios editing tools to replace the former microcode update file in the bios

or if you are using Windows: microcodes are loaded while the OS is booting. just make sure you have the latest SP installed to have the latest microcodes.
If you email me include [WIMSBIOS] in the subject.
Azrael5
New visitors - please read the rules.
Posts: 3
Joined: Sat Dec 19, 2009 5:42 pm

Sun Jan 09, 2011 4:43 pm

dear expert, i'm trying to update p5vd1-x bios latest version 0704 released to use pentium d 965 (supported by motherboard but not recognizable since poste xcept in one only attempts in which i entered thebios settings for a while) I understand the 3 points described above but which program or tool i have to use?! Ihave i use it in dos mode? thanks. if you describe the several phases and the used tool I'll be gratefull.
edwin
The Hardware Archivist
Posts: 6215
Joined: Wed Mar 20, 2002 7:11 pm
Location: Netherlands
Contact:

Mon Jan 10, 2011 12:53 pm

http://www.asus.com/product.aspx?P_ID=SkuBYErUHJtQw76w

the 965 is not on the CPU support list. Reason: it is a 1066MHz FSB processor and your chipset simply does not support that.
http://ark.intel.com/Product.aspx?id=27 ... odes=SL9AN

hardware issue, cannot be solved by bios or software.
edwin/evasive

Do not assume anything

System error, strike any user to continue...
garblgok
New visitors - please read the rules.
Posts: 2
Joined: Mon Jan 24, 2011 6:57 am

Mon Jan 24, 2011 7:24 am

Hello!

Two things: on AMI BIOS the contents of module 06 (which is the microcode updates) _M_U_S_T_ also contain eight additional zero bytes at the end.
Meaning if someone cats multiple .bin files from the converter together, the eight zero bytes must also be added at the end of the file.
Or using the "CPU PATCH" tab on mmtool.exe will do it for you. (No need to change any converted binary then.)

And Richard, your highly appreciated tool does add additional data.
I've looked at the patches for 0001067a for the three platforms. I'm using microcode-20101123.dat as source. Manually extracted from the text file (.dat) they are the exact same size, but your converter adds the last line on
cpu0001067a_plat00000044_ver00000a0b_date20100928.bin
twice.
Meaning the file should be 8192 but is 8208 bytes long, the end looking like this:

Code: Select all

1FB0:  3D 43 C0 34-E9 83 FC 3C-6A 73 96 D0-16 E0 3B A5
1FC0:  6C DD A3 EB-61 65 62 2C-8D 0C 16 3C-19 C7 06 85
1FD0:  47 7B 2E 80-96 93 07 16-75 B1 29 6D-B4 AB 91 4E
1FE0:  95 CE 50 E3-A5 1A 48 0D-71 53 E9 94-EC 4D DC 10
1FF0:  35 37 EB BF-4D CB E3 3C-2A 74 FF 32-CB D3 5A AC
2000:  35 37 EB BF-4D CB E3 3C-2A 74 FF 32-CB D3 5A AC
Taken from a hex editor.
If this binary were somewhere in the middle of a concatenated binary, the BIOS would get thrown. (No idea what it would do, just crash, just ignore everything past that point ...? I don't intend on finding out.)
It looks like this is the very last entry and very last line in the .dat file.

It's really a pity you have to do this (putting new microcode updates in as end user) even for a brand new Asus P5P41T/USB3.
garblgok
New visitors - please read the rules.
Posts: 2
Joined: Mon Jan 24, 2011 6:57 am

Mon Jan 24, 2011 7:37 am

Sorry, that is of course module id 11 not 06.
06 is the DMI / SMBIOS data.
Post Reply