Jump to content

Microcode updates - UPDATE.SYS


Petr

Recommended Posts

It may - (or not?) be good idea to add also updated driver with micocode updates for Intel processors. It is very simple patch replacing not so often used microcodes with new ones.

UPDATE.SYS is now updated in each service pack for Windows 2000/XP/2003, but was never updated for Windows 98/SE/ME.

For processors before P4 Prescott, each microcode update had the size 2000 bytes without header and 2048 with header, and it was specific for every stepping and for every platform (socket).

Starting P4 Prescott, some updates are bigger and most updates are intended for all platforms with the same core stepping. It means different handling in the driver. The number of microcodes included in UPDATE.SYS for different windows versions is:

Windows 98: 7

Windows 98 SE: 27

Windows ME: 49

Windows 2000 SP4: 81

Windows XP SP2: 94

Windows 2003 SP1: 101

There is only limited space in the current driver so some limitation has to be applied.

Updated UPDATE.SYS for Windows 98 SE, version changed to 4.10.2223

http://old.winpack.org/nsp_petr/mc/update_sys-w98se.zip

Contains 26 microcodes for Pentium II, Pentium III and Celeron with cores: Deschutes / Covington / Mendocino / Katmai / Coppermine / Tualatin in Slot 1 and FCPGA-370 packages and for Pentium 4 Willamette and Northwood. No Xeon, EE and mobile processors.

Updated UPDATE.SYS for Windows Me, version changed to 4.90.3001

http://old.winpack.org/nsp_petr/mc/update_sys-wme.zip

48 microcodes, more platforms, also EE, mobile and Pentium M.

It is functional in Windows 98 SE too.

I've added also one 2048 byte microcode for Pentium 4 Prescott stepping C0, CPUID 0F33, I have not tested whether the code can use the right mask compare of the platform ID or used simlple comparison.

It should not be so big problem to prepare patch of the original UPDATE.SYS not to distribute Microsoft code.

Microcode updates are also contained in BIOSes (Award BIOSes shows PATCH ID: during boot), but very often they are not up to date. For example Gigabyte has no Northwood D1 microcodes in BIOS for my motherboards (GA-8PE667 Ultra2).

The success of the microcode update can be seen either by Intel® Processor Frequency ID Utility:

http://www.intel.com/support/processors/tools/frequencyid/

but please be sure to use the right version.

Version 7.2 (fidenu32.msi), the newest, supports Win98SE to WXP and does NOT support Pentium 4.

Version 7.1 (fidenu31.msi), the previous, supports Win98SE to WXP and does support Pentium 4.

Version 5.6 was the last version that supported Windows 95 and 98 Gold.

New Intel® Processor Identification Utility

http://support.intel.com/support/processors/tools/piu/

supports the whole Pentium 4 processor family but only on Windows 2000 and XP.

Always it is possible to use bootable (DOS) version of these utilities.

In the registry, this is how looks successful update from microcode 21 (in BIOS) to 2E by UPDATE.SYS:

[HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0]

"VendorIdentifier"="GenuineIntel"

"Identifier"="x86 Family 15 Model 2 Stepping 9"

"Update Status"=dword:00000000

"Update Signature"=hex:00,00,00,00,2e,00,00,00

"Previous Update Signature"=hex:00,00,00,00,21,00,00,00

I have not found any information about meaning of "Update Status", my observation is the following:

[HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0]

"VendorIdentifier"="AuthenticAMD"

"Identifier"="AMD-K6 3D processor"

"Update Status"=dword:00000001

Status 1 seems to mean that the CPU does not support microcode update.

[HKEY_LOCAL_MACHINE\Hardware\Description\System\CentralProcessor\0]

"VendorIdentifier"="GenuineIntel"

"Identifier"="x86 Family 15 Model 2 Stepping 7"

"Update Status"=dword:00000002

Status 2 seems to mean that there is no suitable microcode in UPDATE.SYS present.

Status 6 can be seen for the second logical CPU for Pentium 4 Hyper-Threading processors. (In WXP, not tested with W98)

Edited by Petr
Link to comment
Share on other sites


Excellent work, Petr. :thumbup

I've added links to iexpress installers [exe] for your drivers:

- Windows ME

- Windows 98 SE

Respectively:

* Unofficial Windows ME Updated CPU Microcode UPDATE.SYS 4.90.3001 Fix

includes most current Intel CPUs:

http://www.msfn.org/board/?showtopic=44388

Direct download [190 KB, English]:

http://www.mdgx.com/files/MEUPDSYS.EXE

* Unofficial Windows 98 SE Updated CPU Microcode UPDATE.SYS 4.10.2223 Fix

includes most current Intel CPUs:

http://www.msfn.org/board/?showtopic=44388

Direct download [100 KB, English]:

http://www.mdgx.com/files/98UPDSYS.EXE

I'm also going to add the WinME driver to 98SE2ME.

Thanks.

Link to comment
Share on other sites

It may - (or not?) be good idea to add also updated driver with micocode updates for Intel processors. It is very simple patch replacing not so often used microcodes with new ones.

Windows 98: 7

Windows 98 SE:  27

Windows ME: 49

Windows 2000 SP4: 81

Windows XP SP2: 94

Windows 2003 SP1: 101

There is only limited space in the current driver so some limitation has to be applied.

Updated UPDATE.SYS for Windows 98 SE, version changed to 4.10.2223

http://www.code.cz/x/update_sys-w98se.zip

Contains 26 microcodes for Pentium II, Pentium III and Celeron with cores: Deschutes / Covington / Mendocino / Katmai / Coppermine / Tualatin in Slot 1 and FCPGA-370 packages and for Pentium 4 Willamette and Northwood.  No Xeon, EE and mobile processors.

Petr, that's excellent work, Thanks! I think I'll add this work into the SP.

I have a question. To add new microcodes into UPDATE.SYS, which old microcodes are removed/replaced?

Link to comment
Share on other sites

I have a question. To add new microcodes into UPDATE.SYS, which old microcodes are removed/replaced?

I can be seen in properties of the file.

Original UPDATE.SYS:

1632-0,2,611-0,b27,612-0,c6,616-0,c6,617-0,c6,619-0,d2,633-0,36,634-0,37,650-4,19,650-20,2e,650-80,2f,650-1,32,651-1,30,652-1,14,652-8,15,652-4,29,652-2,8,653-1,1,653-4,4,660-1,4,665-10,1,66a-2,3,66a-8,7,66a-20,6,671-4,14,672-4,21,672-1,4

Modified UPDATE.SYS:

650-1,40,651-1,40,652-1,2a,653-1,10,660-1,a,665-10,3,672-1,10,673-1,e,681-1,d,681-10,11,683-1,13,683-10,14,686-1,7,686-10,8,68a-10,1,6b1-10,1c,6b4-10,1,f07-1,12,f0a-1,13,f0a-4,14,f12-1,2d,f12-4,2e,f13-4,5,f24-4,1e,f27-4,37,f29-4,2e,f33-d,b

(CPUID-Platform,revision)

Or, in more detail form:

Original UPDATE.SYS:

1632 0 2 10.6.1998 Pentium II OverDrive Processor PGA

611 0 b27 18.12.1996 Pentium Pro Processor B0 CPGA

612 0 c6 10.12.1996 Pentium Pro Processor C0 CPGA

616 0 c6 10.12.1996 Pentium Pro Processor sA0 CPGA

617 0 c6 10.12.1996 Pentium Pro Processor sA1 CPGA

619 0 d2 18.2.1998 Pentium Pro Processor sB1 CPGA

633 0 36 23.9.1998 Pentium II Processor (?) Klamath C0 PGA (?)

634 0 37 23.9.1998 Pentium II Processor (?) Klamath C1 PGA (?)

650 1 32 10.6.1998 Pentium II / Celeron Processor Deschutes / Covington dA0 SECC / SEPP

650 4 19 12.12.1997 Pentium II Xeon Processor (?) Deschutes dA0 SECC (?)

650 20 2e 11.2.1998 Mobile Pentium II Processor (?) Deschutes dA0 Micro-PGA1 (?)

650 80 2f 11.2.1998 ?????????????????????????????? Deschutes dA0 ??????????????

651 1 30 10.6.1998 Pentium II / Celeron Processor Deschutes / Covington dA0 SECC/SECC2 / SEPP

652 1 14 10.6.1998 Pentium II Processor Deschutes dB0 SECC/SECC2

652 2 08 8.4.1998 Mobile Pentium II Processor (?) Deschutes dB0 Mini-Cartridge

652 4 29 16.9.1998 Pentium II Xeon Processor Drake B0 SECC

652 8 15 10.6.1998 Mobile Pentium II Processor (?) Deschutes dB0 MMC1/MMC2 (?)

653 1 01 14.10.1998 Pentium II Processor Deschutes dB1 SECC/SECC2

653 4 04 29.7.1998 Pentium II Xeon Processor Drake B1 SECC

660 1 04 5.6.1998 Intel Celeron Processor Mendocino mA0 SEPP

665 10 01 27.8.1998 Intel Celeron Processor Mendocino mB0 PPGA

66a 2 03 5.8.1998 Mobile Pentium II Processor mdxA0 Mini-Cartridge

66a 8 07 26.2.1999 Mobile Pentium II / Celeron Processor mdbA0 MMC1/MMC2

66a 20 06 19.8.1998 Mobile Pentium II / Celeron Processor mdpA0 Micro-PGA1

671 4 14 11.8.1998 ?????????????????????????????? SECC (?)

672 1 04 29.10.1998 Pentium III Processor Katmai kB0 SECC2

672 4 21 30.10.1998 Pentium III Xeon Processor Tanner B0 SECC, SECC330

Modified UPDATE.SYS:

650 1 40 25.5.1999 Pentium II / Celeron Processor Deschutes / Covington dA0 SECC / SEPP

651 1 40 25.5.1999 Pentium II / Celeron Processor Deschutes / Covington dA0 SECC/SECC2 / SEPP

652 1 2a 12.5.1999 Pentium II Processor Deschutes dB0 SECC/SECC2

653 1 10 28.6.1999 Pentium II Processor Deschutes dB1 SECC/SECC2

660 1 a 5.5.1999 Intel Celeron Processor Mendocino mA0 SEPP

665 10 3 5.5.1999 Intel Celeron Processor Mendocino mB0 PPGA

672 1 10 22.9.1999 Pentium III Processor Katmai kB0 SECC2

673 1 e 10.9.1999 Pentium III Processor Katmai kC0 SECC2

681 1 d 21.9.1999 Pentium III Processor Coppermine cA2 SECC/SECC2

681 10 11 21.9.1999 Pentium III Processor Coppermine cA2 FC-PGA

683 1 13 6.2.2001 Pentium III Processor Coppermine cB0 SECC2

683 10 14 6.2.2001 Pentium III / Celeron Processor Coppermine cB0 FC-PGA / PPGA

686 1 7 5.5.2000 Pentium III Processor Coppermine cC0 SECC2

686 10 8 5.5.2000 Pentium III / Celeron Processor Coppermine cC0 FC-PGA / PPGA

68a 10 1 2.11.2000 Pentium III / Celeron Processor Coppermine cD0 FC-PGA / PPGA

6b1 10 1c 15.2.2001 Pentium III / Celeron Processor Tualatin tA1 PPGA-370

6b4 10 1 10.1.2002 Pentium III / Celeron Processor Tualatin tB1 PPGA-370

f07 1 12 16.7.2002 Pentium 4 Processor Willamette B2 PPGA-423 INT2

f0a 1 13 16.7.2002 Pentium 4 Processor Willamette C1 PPGA-423 INT2

f0a 4 14 16.7.2002 Pentium 4 Processor Willamette C1 PPGA-478 FC-PGA2

f12 1 2d 2.5.2003 Pentium 4 Processor Willamette D0 PPGA-423 INT2

f12 4 2e 2.5.2003 Pentium 4 Processor Willamette D0 PPGA-478 FC-PGA2

f13 4 5 8.5.2003 Pentium 4 / Celeron Processor Willamette E0 PPGA-478 FC-PGA2

f24 4 1e 5.6.2003 Pentium 4 Processor Northwood B0 PPGA-478

f27 4 37 4.6.2003 Pentium 4 / Celeron Processor Northwood C1 PPGA-478

f29 4 2e 11.8.2004 Pentium 4 / Celeron Processor Northwood D1 PPGA-478

f33 d b 12.5.2004 Pentium 4 / Celeron Processor Prescott C0 All

Or you can display microcodes yourself by using ctmc utility ftp://ftp.heise.de/pub/ct/ctsi/ctmc10.zip - just type "ctmc update.sys". Warning - ctmc utility does not support long filenames and does not work under WinXP. It also supports 2048 byte microcode only.

Petr

Link to comment
Share on other sites

Thanks Petr!

Are these microcodes for only Intel processors?

I think Xeon / Pentium Pro microcodes are useless for Windows 98 / ME, they can be replaced. But what about "Mobile Pentium II" microcodes? Still lots of users have old Pentium II laptops with Windows 98.

Link to comment
Share on other sites

Thanks Petr!

Are these microcodes for only Intel processors?

I think Xeon / Pentium Pro microcodes are useless for Windows 98 / ME, they can be replaced. But what about "Mobile Pentium II" microcodes? Still lots of users have old Pentium II laptops with Windows 98.

Then suggest another microcode to remove. It's no problem to change it. Or to use UPDATE.SYS from ME (I know, not for SESP).

I has to be noticed that the microcode update is done by the BIOS too, and UPDATE.SYS will replace the microcode only if it has newer than is in the BIOS.

I have no expericence with notebooks so I don't know if they have microcode support up to date or not.

I do have experience with Gigabyte desktop boards with 440BX chipset, and only latest Coppermine P III processors does not have the latest version in one model.

Petr

Link to comment
Share on other sites

I forgot to reply - UPDATE.SYS supports Intel processors only.

Why UPDATE.SYS size doesn't match with the original?

Your UPDATE.SYS: 60,576 bytes.

Original UPDATE.SYS: 60, 592 bytes.

Do you know any good free patching program (supports silent patching)?

Link to comment
Share on other sites

Why UPDATE.SYS size doesn't match with the original?

Your UPDATE.SYS: 60,576 bytes.

Original UPDATE.SYS: 60, 592 bytes.

Do you know any good free patching program (supports silent patching)?

Because the version information was also edited - especially DataVersion filed. It could be possible to prepare file with equal size if you wish - but the list will not be perfect.

I know no suitable patching program but I believe it sure exists. 20 years ago I wrote something similar in 8080 assembler for CP/M-80 :-) and it was very simple. With current development tools such a single purpose patcher can be written within one hour by experienced programmer I believe.

Regards,

Petr

Link to comment
Share on other sites

This utility is used for patching files. First you (or somebody else) must  create a .pth patch script or .exe minipatcher by comparing two files (old and new one) and then anybody who has the old file can patch it by using the patcher with the patch script or a standalone minipatcher.

crayzee's patcher

I don't know if it's good but it seems to do what you are after.

Link to comment
Share on other sites

Why UPDATE.SYS size doesn't match with the original?

Your UPDATE.SYS: 60,576 bytes.

Original UPDATE.SYS: 60, 592 bytes.

So I have prepared new patched file by hex editor only, not by Restorator, i.e. it has equal size and the difference is just in microcodes and in the version info data.

Here it is:

update_sys-w98se-same_size.zip

I don't know if there are some checksums in the header but the driver works as it is.

Petr

Edited by Petr
Link to comment
Share on other sites

The success of the microcode update can be seen either by Intel® Processor Frequency ID Utility:

http://www.intel.com/support/processors/tools/frequencyid/

but please be sure to use the right version.

Version 7.2 (fidenu32.msi), the newest, supports Win98SE to WXP and does NOT support Pentium 4.

Version 7.1 (fidenu31.msi), the previous, supports Win98SE to WXP and does support Pentium 4.

Version 5.6 was the last version that supported Windows 95 and 98 Gold.

New Intel® Processor Identification Utility

http://support.intel.com/support/processors/tools/piu/

supports the whole Pentium 4 processor family but only on Windows 2000 and XP.

Always it is possible to use bootable (DOS) version of these utilities.

Intel ONLY offers the LATEST release of the Intel® Processor Frequency ID Utility which is version 7.2. So you won't be able to find any previous versions of the utility there.

If you need version 7.1 of that tool go to this page:

http://www.msfn.org/comments.php?shownews=9020

As for Win95 support, versions of Intel® Processor Frequency ID Utility starting from version 4.5 (not 5.6) no longer support Win95 as stated in Intel's support page:

http://support.intel.com/support/processor...b/CS-007636.htm

Also no longer available from Intel.

If you want to use much older versions of Intel® Processor Frequency ID Utility in Win95/98 you'll have to do a search on them at some search sites if you're lucky enough to find them.

At least the bootable version of the tool is available at the Intel web site.

Link to comment
Share on other sites

If you need version 7.1 of that tool go to this page:

http://www.msfn.org/comments.php?shownews=9020

or

ftp://aiedownload.intel.com/df-support/3084/eng/fidenu31.msi

As for Win95 support, versions of Intel® Processor Frequency ID Utility starting from version 4.5 (not 5.6) no longer support Win95 as stated in Intel's support page:

http://support.intel.com/support/processor...b/CS-007636.htm

Also no longer available from Intel.

It seems you are right with Windows 95. I have no system to test it.

I use version 5.6 and it works fine on Windows 98 Standard Edition. I quote from the readme.txt file:

2.  Supported Operating Systems

===============================

The Intel Processor Frequency ID Utility v5.6 - Windows version

supports the following Microsoft* operating systems:

  Windows 98 (all versions)

  Windows ME (all versions)

  Windows 2000 Professional/Server/Advanced Server (all service

  packs)

  Windows XP Home/Professional (all service packs)

Version 5.6 is here for download:

ftp://aiedownload.intel.com/df-support/3084/eng/fidenu25.exe

Version 4.5 suitable for Windows 95 is here:

ftp://aiedownload.intel.com/df-support/3084/eng/fidenu19.exe

If you want to use much older versions of Intel® Processor Frequency ID Utility in Win95/98 you'll have to do a search on them at some search sites if you're lucky enough to find them.

No, all of them are here: ftp://aiedownload.intel.com/df-support/3084/eng/

At least the bootable version of the tool is available at the Intel web site.

Regards,

Petr

Link to comment
Share on other sites

Found version 5.6 of Intel Processor Frequency ID Utility here:

ftp://aiedownload.intel.com/df-support/3084/eng/fidenu25.exe

Last version to work under Win98 Gold [1st edition]. Version 6 & higher require Win98 SE.

And for those using the very obsolete Win95 OS, one could try version 4.0 found here:

ftp://aiedownload.intel.com/df-support/3084/eng/fidenu18.exe

The next release after 4.0 is 4.5 which dropped Win95 support.

It's just that intel doesn't seem to mention the old versions anymore at their site.

Link to comment
Share on other sites

  • 4 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...