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.
Tool to extract latest Intel microcode for bios modding
-
- New visitors - please read the rules.
- Posts: 4
- Joined: Fri Oct 24, 2008 6:02 pm
Last edited by richardaburton on Wed Nov 12, 2008 10:12 pm, edited 1 time in total.
-
- New visitors - please read the rules.
- Posts: 3
- Joined: Wed Nov 12, 2008 11:53 am
Is this link ok? Rapidshare find this not. Can You this mail me? Thanks
-
- The Hardware Archivist
- Posts: 6287
- Joined: Wed Mar 20, 2002 7:11 pm
- Location: Netherlands
- Contact:
@richardaburton: can you email this thing to me? I might be able to host it properly.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.
edwin/evasive
Do not assume anything
System error, strike any user to continue...
Do not assume anything
System error, strike any user to continue...
-
- New visitors - please read the rules.
- Posts: 4
- Joined: Fri Oct 24, 2008 6:02 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 emailing you a copy too
Richard.
-
- The Hardware Archivist
- Posts: 6287
- Joined: Wed Mar 20, 2002 7:11 pm
- Location: Netherlands
- Contact:
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?
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...
Do not assume anything
System error, strike any user to continue...
-
- New visitors - please read the rules.
- Posts: 4
- Joined: Fri Oct 24, 2008 6:02 pm
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).edwin wrote:I get a load of
cpu000xxxxx_plat00000xxx_ver00000xxx_datexxxxxxxx.bin files which can be used to patch into your bios, right?
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.
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.
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.
-
- New visitors - please read the rules.
- Posts: 4
- Joined: Fri Oct 24, 2008 6:02 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.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
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.output of the microcode extraction tool that i wrote:
http://www.wimsbios.com/phpBB2/topic9117.html
I know, but where's the fun in that? Besides this is a bios forum, everyone here loves to flash stuff!btw. the microcode is updated by the OS, too. Windows or Linux both do it automatically or have tools for that purpose.
Richard.
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 :)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.
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 saw this when I was looking around, but I noticed it was 18 months old and there was no link to download them.
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.I know, but where's the fun in that? Besides this is a bios forum, everyone here loves to flash stuff!
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.
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.
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.
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.
-
- The Hardware Archivist
- Posts: 6287
- Joined: Wed Mar 20, 2002 7:11 pm
- Location: Netherlands
- Contact:
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.
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...
Do not assume anything
System error, strike any user to continue...
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:
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.
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
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.