Nonvolatile BIOS memory
Nonvolatile BIOS memory refers to a small memory on PC motherboards that is used to store BIOS settings. It was traditionally called CMOS RAM because it used a volatile, low-power complementary metal-oxide-semiconductor (CMOS) SRAM (such as the Motorola MC146818 or similar) powered by a small battery when system power was off. The term remains in wide use but it has grown into a misnomer: nonvolatile storage in contemporary computers is often in EEPROM or flash memory (like the BIOS code itself); the remaining usage for the battery is then to keep the real-time clock (RTC) going. The typical NVRAM capacity is 512 bytes, which is generally sufficient for all BIOS settings. The CMOS RAM and the real-time clock have been integrated as a part of the southbridge chipset and it may not be a standalone chip on modern motherboards.
- Finds a device that is not recorded in the CMOS.
- Does not find a device that is recorded in the CMOS.
- Finds a device that has different settings than those recorded for it in CMOS.
- Detects a CMOS checksum error.
The memory and real-time clock are generally powered by a CR2032 lithium coin cell. These cells last two to ten years, depending on the type of motherboard, ambient temperature and the length of time that the system is powered off, while other common cell types can last significantly longer or shorter periods, such as the CR2016 which will generally last about 40% less than CR2032. Higher temperatures and longer power-off time will shorten cell life. When replacing the cell, the system time and CMOS BIOS settings may revert to default values. This may be avoided by replacing the cell with the power supply master switch on. On ATX motherboards, this will supply 5V power to the motherboard even if it is apparently "switched off", and keep the CMOS memory energized. In general one should not work on a computer that is powered.
Some computer designs have used non-button cell batteries, such as the cylindrical "1/2 AA" used in the Power Mac G4 as well as some older IBM PC compatibles, or a 3-cell NiCd CMOS battery that looks like a "barrel" (common in Amigas and older IBM PC compatibles), which serves the same purpose.
Resetting the CMOS settings
||This article contains instructions, advice, or how-to content. (January 2012)|
To access the BIOS setup when the machine fails to operate, occasionally a drastic move is required. In older computers with battery-backed RAM, removal of the battery and short circuiting the battery input terminals for a while did the job; in some more modern machines this move only resets the RTC. Some motherboards offer a CMOS-reset jumper or a reset button. In yet other cases, the EEPROM chip has to be desoldered and the data in it manually edited using a programmer. Sometimes it is enough to ground the CLK or DTA line of the I²C bus of the EEPROM at the right moment during boot, this requires some precise soldering on SMD parts. If the machine lets one boot but does not want to let them into the BIOS setup, one possible recovery is to deliberately "damage" the CMOS checksum by doing direct port writes using DOS debug.exe, corrupting some bytes of the checksum-protected area of the CMOS RAM; at the next boot, the computer typically resets its setting to factory defaults. For example:
c:\debug -o 70 10 -o 71 aa -q
That will write to CMOS (Offset 10h) with the value 0AAh.