Upgrading CPUs and BIOS, Part 2

You've upgraded your customer's processor, but you're running into big problems. Here's a guide to tweaking the system's firmware

So you've taken the adventurous step of upgrading a system's CPU, and you've followed Part 1 of this Recipe to the letter. But what if the system won't run!? What now? It's time to update the BIOS.

As you probably know, BIOS stands for Basic Input-Output System. A PC's BIOS chip sets up internal parameters the computer must have before it can load the OS from its hard disk.

In general, I try to avoid BIOS updates. Any small increment of improved functionality is drastically offset by the potential downside, namely, that the motherboard won't be able to handle the new firmware, that the system won't revert back to the old firmware, or—worst of all—that the system will be turned into an unusable brick.

However, sometimes there is no alternative. After you've dropped a new CPU into a system, the system may not work, even with the recommended BIOS. For instance, after I had serious stability problems with my CPU/BIOS setup, I tried a number of BIOS settings and installer combinations. These problems took several days to solve. So it's best to avoid such stability problems. Simply spend a few minutes searching the Web to make sure your intended CPU/motherboard combination has been proven to work. But what if the information you've gotten on the Web is wrong, and the system you've upgraded still doesn't work? That's where this Recipe comes in.

In Part 1, I explained how I spent $45 for a processor that would go to waste if I didn't try something radical to make the system work. At the time, I had no reason to believe there was a compatibility problem between the motherboard and the CPU. The way a motherboard is upgraded to make them compatible with newer processes is usually a firmware upgrade, which makes the BIOS the obvious suspect. Further, the BIOS was the easiest thing I could modify without buying new components. And I'd already discounted the power-supply unit (PSU) size as a potential problem, because the voltages weren't sagging the way I'd expect them to if the CPU was overloading the PSU. The increased power consumption of the new processor was reducing voltages (+5, +12, +3.3) by tens of millivolts as measured by a DMM (PCChips site, a supplier of motherboards and PC peripherals, and looked up the BIOS for my 810LR motherboard. I found several BIOS firmware files for the 810LR, though with no information on which I should choose, and an installer program from AMI, one of the best-known BIOS vendors.

Next, it was time to hit Google. I searched on (with quotes): "810LR BIOS". I found a third-party user group called the PC Chips Lottery BBS. At that site and via links on it, I tracked down several FAQ pages, even a FAQ devoted specifically to the model of motherboard I use. I also found relevant user discussion forums. The M810LMR FAQ had several interesting items about the revision history of the motherboard, including which CPUs work (or don't) with which motherboard versions.

Next, I Googled my motherboard model number, CPU name/speed, and "BIOS" as keywords: M810LR "Duron 1800" BIOS. Based on the returned results, I went to Milt's PCChips M810L BIOS page, which had both vendor and custom BIOSes. The custom BIOSes include features such as custom memory timing and control of many other parameters that hardware tweakers can use. An image of a parameter setting screen from a customized BIOS is shown below. Note: The illustration shows what's available in a typical customized BIOS; this should help you to determine whether you want to try one.

Milt's page also linked an alternative installer program called Uniflash, which works on a wide range of BIOS and flash memory chips. It may work for you, too, if the vendor's BIOS flash program doesn't. But try the vendor's flash software first.

For those who don't have a PCChips M810 motherboard, the Rebel's Haven Computer Forum points to several custom BIOSes for various motherboards, though not for all.

If none of these help you, keep searching the Web. Many sites provide custom BIOS information for motherboards. You should eventually find one that covers your motherboard.
Flashing a BIOS

This is the term for replacing the firmware within a BIOS. It's called "flashing" because the user-upgradeable firmware is stored in flash memory, similar to that used in digital cameras. Putting the information into the BIOS by flashing it is the first stage of the BIOS upgrade process. The last stage is setting the parameters accessible via the various BIOS setup screens.

First, get a CPU-analysis utility program. You'll need CPU-analysis software to determine exactly what is going on with the main processor. While a system will boot with a CPU that is not optimized for the system, an unoptimized BIOS will crash repeatedly. The exact CPU ID, as written within the chip itself, may be useful in figuring out what is going on. For instance, AMD's Duron has at least two CPU core types, each with their own issues. The factory fabrication codes (as depicted by the Family / Model / Stepping ID codes on the previous figure) can help you identify which core type you're working with.

WCPUID, a very good CPU analysis utility, is available from H.Oda!'s page. Unfortunately, I had to use the Windows version even though I run Linux. While a Linux version is shown on the download page, it says "members only," and there doesn't seem to be a way to join or contact the author. So I had to boot to my Windows drive (dual boot setup) to test it. This wasn't a problem, since my system has a dual boot setup, and it won't be a problem for Windows-based system builders.

Next, create a bootable DOS diskette. Then add to that diskette the following two items:

  • A copy of the BIOS flash program(s). Note: If you have room on the diskette, and you can find an alternate flash program that works with your BIOS, add the flash program to the diskette as well—in case the BIOS cannot be flashed by the vendor flash program.

  • A copy of the BIOS file you plan to use.

The specifics of operating flash BIOS programming software depend on the flash program used. The best source on available commands (and what they do) is the program documentation. That said, the command you'll typically be using from the DOS command line is: Programname biosfilename.exe (with the three-letter extension being either "exe" or "com").

You can see the information on a non-vendor flash program not tied to a specific BIOS manufacturer called Uniflash below. It can burn BIOSes much of the time when the vendor-specific flash programs don't work.

However, I was in search of a BIOS that could get the system clock to a speed indicating stable operating conditions. The first BIOS I tried failed during boot with the new processor. It went through POST (Power On Self Test—a memory/hardware diagnostic), but didn't make it to the part of the boot process where the BIOS was supposed to start reading the hard drive.

The second BIOS stayed up for an hour or so, but then crashed after misidentifying the CPU as a "Pro 2000." While a BIOS misidentifying a processor doesn't necessarily indicate that it won't boot, or even that there will be any problems with it, a correctly identified CPU is better. That way, there is a good chance the rest of the BIOS has been set up properly to match the CPU. This should make for a trouble-free BIOS upgrade.

Below, here's a screenshot from the WCPUID CPU analysis utility, which shows the CPU in "failsafe mode." This means the CPU has detected something wrong with either the processor or memory that is preventing the CPU from running at full speed. If a processor runs in failsafe mode, it's not going to be stable. The processor's uptime may be limited to mere minutes or, at best, hours. The failsafe speed is also processor-specific. The 99.5 MHz memory speed displayed below is the failsafe speed for the Duron 1800.

The third BIOS I tried worked better than the other two whose results are described above. But at the high-speed, 133 MHz memory clock setting, it misidentified the processor and wouldn't boot. (The microprocessor speed is a fixed multiple of the memory speed—the multiple is CPU-specific. In the case of the Duron 1800, the multiple is 13.5. The system clock speed is a multiple of the memory clock speed, in this case, the multiple is two.) At the low-speed setting, which ran the processor at about 1430 MHz, it ran at the "failsafe rate" clock speed for several hours at a time. While that's better than not running at all, there was obviously still something wrong.

At this point, I decided to visit a user forum for help. I popped over to the PCChips Lottery BBS and posted a request for help. The advice I got was to reinstall the earliest BIOS on the Milt's PCChips M810L BIOS page, and select the 100 MHz memory clock speed matching my PC100 SDRAM.

I did as instructed, and suddenly, the system was its old stable self at 1430 MHz. However, this is an 1800 MHz processor. It went unstable in a fairly drastic sort of way as soon as I re-selected a 133 MHz memory speed. The system remained unstable regardless of the memory setting I used, and it crashed every few minutes. Similarly, the BIOS flash worked just fine, but the computer was still unstable.

The next thing I tried was removing the PC100 memory sticks to replace them with faster memory. Perhaps, I thought, the instability could be due to problems with the memory. This is a simple process: Push the latches on each side of an installed memory stick, and it comes right up. Place the old stick on a conductive surface as you would a CPU in case you find yourself needing to reuse it. I then bought a 512M stick of PC133 SDRAM to install in their place.

To install a memory stick into a socket, push the stick into the socket so the bump in the bottom of the socket matches the notch at the bottom of the stick, then push straight down until both latches click. You should hear or feel the memory stick snap into place.

But even after upgrading the memory, my problem remained. Next came an ugly day of memory-chip swapping, trying different BIOSes, and trying each of two flash upgrade programs to install them with, in order to determine if the problem could be with the flash program, rather than with the BIOS data or the motherboard hardware.

The first program I tried in each case was the vendor flash program. The second of the two flash programs I used was the more sophisticated Uniflash BIOS flash program. To flash a BIOS, read the program docs first, then simply open it from a floppy, select "Flash BIOS image including bootblock:" and at the prompt, enter the filename of the BIOS you plan to use.

I got lucky with the third BIOS I tried. Though the BIOS still misidentified my processor as a Pro2000, it also ran the system clock at a 105 MHz speed, which meant that a stable operation was possible for this CPU on this motherboard.

Here's a screenshot from the WCPUID software displaying the CPU running at a stable 105 MHz memory clock speed (210 MHz system clock speed):

Stability at Last, and How I Got There

It appeared impossible to get my Duron 1800 to run at the 133 MHz memory clock speed, no matter what BIOS or settings I used. I finally came to the conclusion that the problem was not with the original memory at all. So I decided to reinstall the larger of my two PC-100 memory sticks, a 256-MB SDRAM. This bumped the system's memory up to 768 MB.

Finally, the computer was running significantly faster. For example, massive graphics operations in Windows via Win4Lin/Linux—such as running image-processing filters over massive images in programs like PaintShopPro—now took seconds instead of minutes. And really massive graphics operations that would ordinarily tie up the computer for 10 minutes or more (for example, a 2700 x 5400 bitmap image and a 43 MB file) simply run in background, allowing me to use other applications. I really noticed the difference.

Now, instead of crashing after two or three hours of uptime, the system was crashing "only" once a day. So I went back for more advice from the person at the PC Chips Lottery BBS who had advised me on BIOS-related issues. This time he recommended that I try to clear the CMOS, that is, reset the CMOS to factory defaults, eliminating all user-entered information and any corrupted CMOS data entries.

CMOS Clearing

CMOS stands for Complimentary Metal-Oxide Semiconductor and actually refers to the kind of semiconductor used as the BIOS chip memory to store settings. When people discuss PC setups, "CMOS" is frequently used interchangeably with "BIOS."

Clearing the CMOS deletes all user settings and any trace of former BIOSes that stayed within the motherboard's BIOS flash memory. You should clear the CMOS whenever you reflash a BIOS. This is a good way to make sure the settings in the CMOS are the ones you want. Otherwise, traces of earlier settings may remain, producing results you don't want, such as making the computer unstable or even unable to boot.

Below, you can see the CMOS jumper used to erase (clear) BIOS firmware settings on a motherboard.

As you can see in the image, there's a three-pin connector with a Berg jumper connecting two of them, location and ID dependent on the motherboard. One position (for example, pin 1-2) is the normal one that powers the CMOS memory, either from the PSU or backup battery. The other position (for example, 2-3) cuts off power to both the BIOS and to the PSU.

To clear the CMOS, follow these six steps:

  1. Disconnect the PSU connector from the motherboard, then move the CMOS jumper into the "clear" or "erase" position. If you have to remove the PSU from the case to get access to the PSU connector, do so.

  2. Leave the mumper in the clear position for at least 30 seconds.

  3. Return the jumper to its normal position.

  4. Plug the PSU block connector into the motherboard socket. If you had to remove the PSU, reinstall the PSU now.

  5. Reboot the system. On your first boot, you will get this error message: CMOS CHECKSUM ERROR. Don't panic, this is normal! You'll get that message because there are no settings selected in the BIOS (CMOS) yet.

  6. Enter the BIOS setup, and load the OPTIMAL or BEST SETTINGS setup options before making your usual adjustments and setups. (Note: I capitalized those two setup options in order to set them apart from other BIOS options that do not change hidden parameters). Either of these will set up hidden BIOS options that are necessary for system performance and stability. Because the Optimal and Best Settings work slightly differently, you may need to experiment. One or the other, or even a combination of the two, may work best for your system.

You should be done now! After I finished the above steps—and since I had the box open anyway—I made sure the memory was properly seated in its socket. I found that the system had become stable enough to be usable.

Working with Temperature

Knowing a system's CPU temperature is a good idea, since if the processor is running too hot, the system is likely to self-destruct. High temperatures can also significantly shorten a CPU's lifespan. (That's one reason why aftermarket coolers are so big and so frequently used. They cool the CPU far more effectively than stock coolers can manage.)

To detect the CPU's temperature, you have a few options. You can use a temperature readout within the BIOS hardware monitor screen, along with relevant voltage readouts such as the main system voltages of +5/+12/-12, and the 3.33v that powers the CPU, memory and CPU fan speed. However, I prefer to use a utility that reads CPU temperature, motherboard system voltages, and fan RPM sensors while the computer is operating normally. This way, you will know when, for instance, something has gone wrong with the CPU's cooling fan.

For Windows systems, several utilities will provide a temperature readout. Try Googling the following search terms (with quotes): "temperature sensor utility" Windows.

For Linux, the best utility, in my opinion, is lm_sensors. For more information on the utility, go to the Sensors FAQ for lm_sensors version 2.17. The utility requires CPU chipset-specific drivers to support specific CPUs. Unfortunately, the Linux drivers for my sensor chips don't seem to exist, so I have nothing to say about them. This is an exception rather than the rule, as the majority of CPU chipsets are supported by this utility.

On my system, observed temperatures, as shown by the BIOS hardware monitor page, were no more than 105 degrees F, which is very low for a CPU, even after prolonged computer operation at 100 percent CPU utilization. So there was no urgency about getting lm_sensors to work. Mainly, I just wanted to know that my CPU is unlikely to melt down, even under severe usage. In part, my CPU runs so cool because it is underclocked. The faster a chip runs, the hotter—and vice versa.
Troubleshooting Steps (After the BIOS Upgrade)

Even if you check all the compatibility issues first, your clients or users may bring you other kinds of CPU/BIOS-related problems. Or you may be asked to clean up after someone else's unsuccessful upgrade. And sometimes, BIOS data seems to get corrupted on its own.

If you're troubleshooting a system, and suspect that the problem is due to a CPU/BIOS upgrade gone wrong, the two main symptoms to look for are: Instability shown by repeated crashes, and weird artifacts in the video display.

Here are some troubleshooting tips I wish I'd known before starting my own BIOS upgrade process:

  • If the computer won't power up after you clear the CMOS, open the case and make sure that the BIOS jumper hasn't been left in the "clear CMOS" position.

  • If the computer won't boot after a BIOS upgrade, did you clear the CMOS? If not, do so now.

  • Did you set "Best" or "Optimal" BIOS settings before entering your user preferences into the BIOS? If not, clear the CMOS as described above, set "Best" or "Optimal," reset the regular settings (date/time, etc.), and reboot.

  • Check the memory using a memory test utility, such as memtest86. This utility is available for both DOS and Linux, but since you'll be running it off a boot floppy, the OS makes little difference. Note: With this utility, you can test only one memory stick at a time.

  • If all of the above fails, try reflashing whichever BIOS you used. If that fails, too, try another BIOS. If even this fails, try an alternate BIOS flash utility. (For example, Uniflash may be compatible with your BIOS chip).

  • Make sure the power supply can support the new CPU. If it can't, either remove the CPU and replace it with the old one, or replace the PSU with a bigger one.

SIDEBAR: How to Get the Most Out of User Forums

If you're upgrading a system's CPU or BIOS, you're likely to spend some time on user forums. Here are some tips and tricks for getting the help you need, without getting flamed or blown off.

  • Take the time to read the forum's FAQs. These will help you stay out of trouble, and will increase your odds of receiving helpful replies.

  • If you can't find what you want using the forum's internal search function, try Google. First, select Google's "Advanced Search" function. Then enter the domain name of the forum Website and your keywords. For example: www.ForumName.com M810LR Applebred

  • When you post, make sure your description of the problem is accurate and detailed. If people in the forum see that you've done your homework up front, they will be much more willing to help you. For example, here is a post I recently used discussion thread. (If this URL doesn't work for you, check it again later. The page is on a university server that sometimes is taken down.) Good luck!

A. Lizard is an Internet consultant in the San Francisco Bay Area. He has been writing for technology magazines and Web sites since 1987.