What is Power on Self Test (POST)?
A Power on Self Test, commonly referred to as POST, refers to the series of tests conducted by the software or firmware as soon as a computer is switched on to find out whether or not the hardware of the computer is functioning properly. It is executed irrespective of the operating system.
Technically, it refers to the systematic check of the basic devices of the computer where the BIOS displays the codes usually at the bottom right corner of the screen when the test progresses enough to initialize the video editor.
- Power on Self Test is a part of the pre-boot sequence of the device or devices to find out whether the hardware is functioning as it is desired.
- It is only when this testing process is concluded, bootstrapping and other processes are initiated which sets off the operating system.
- The tests are handled by the BIOS and error messages are sent if the hard drive, disk drive, RAM, CPU and other hardware devices are not found or are identified but are found to be not working properly.
- If everything is found okay during the tests, the operating system is notified with beeps so that it starts functioning. These beeps vary in number and depending on the number of beeps, the error is identified. However, it may vary from one system to another.
- POST tests can help in troubleshooting different errors such as in memory refresh timer, parity, display memory, base read or write memory, cache memory, motherboard timer and others.
Understanding Power on Self Test (POST)
The Power-On Self Test is actually a process which involves a series of built-in analytical tests performed by a computer when it is turned on.
This test is always the first step of booting a device and it will run when you just switch it on for the first time after a few days or restart it regardless of whether the operating system is installed or not because it is handled by the BIOS.
It is actually done to determine whether or not the following components of the computer system are functioning properly:
- The hard drives
- The disk drives
- The Random Access Memory or RAM and
- The Central Processing Unit or CPU and its registers among others.
In addition to the above, checks are also performed by POST on keyboard, Direct Memory Access, interrupt controller and timer.
Usually, in most of the cases this particular series of tests are handled and the error message, if any, is sent by the BIOS of the computer. However, the preliminary tests are carried out by the Read Only Memory or ROM.
If there is any issue found during POST with the hardware the BIOS will send an error message saying that the specific faulty hardware is not functioning properly.
It will also send a similar message if a particular hardware device is not identified during the test.
This error message can be sent in two specific forms such as:
- A text displayed on the monitor of the computer system
- Flashing LEDs or
- An audio message in the form of a series of beep sounds that are usually coded.
Other than that, the results of the POST may also be displayed on the panel of a device that is a part of it, as an output to some external device, and may even be stored to be retrieved in the future by any analytical tool.
If some information is stored in the ROM, it can also test every single byte of the memory to determine the pattern.
When the POST error codes are displayed on the monitor of the computer, it may scroll off too quickly off the screen to read.
The best alternative to this method is to display the codes by redirecting the result of the console to a serial port.
However, the fact that these tests are initiated before the video card is activated, the error message may not always be displayed on the computer screen.
This means that in most of the cases you will usually receive different types of beep codes.
For example, in a MAC, the beep codes can be as follows:
- A single beep for indicating undetected or uninstalled RAM
- A double beep for indicating incompatible type of RAM
- Three beeps for indicating lack of good banks
- Four beeps for indicating bad system configuration block or absence of good boot images in the boot ROM or both
- Five beeps for unusable processors and so on.
These codes help in troubleshooting any error because these are quite descriptive and have different meanings for different numbers of beeps.
Usually, the beep codes describe following issues and are certainly not limited to:
- Error in the memory refresh timer
- A parity error
- Error in the display memory
- Base memory read or write error
- Failure of the cache memory
- Non-functional motherboard timer and several others.
When such errors occur, depending on the type, it may even stop the boot up process and may not resume until it is rectified.
If there is any issue detected with any particular device during POST, it may not be allowed to function. This ensures safety of the entire system.
Typically, a POST error message can be simple or drastic. For example, if you receive an error 161 message, it will indicate a dead battery on the system board.
On the other hand, a drastic message for example would be displayed when the motherboard is not able to detect the Random Access Memory of the computer system.
If POST is successful, bootstrapping happens and the operating system is activated.
Importance of POST
POST is very important for the computer system because it happens before the system starts to function. It helps in determining whether or not all of its components are functioning properly to ensure safety of the computer and in troubleshooting the issues as well.
Being a pre-boot sequence or test, bootstrapping is enabled only after the successful completion of POST. This initializes the operating system and the computer system starts to function.
The messages sent by the BIOS after the POST helps in troubleshooting different issues that can be viewed in different ways depending on the type of the hardware that is creating the particular issue.
It can be that the system turns on perfectly but things may get stuck before the boot process can be initiated with or without any hint given or error messages displayed on the computer monitor.
POST also helps in performing different steps of troubleshooting the issue such as:
- Analyzing when the issues started
- Checking any change of hardware from the last time when computer system was functioning properly
- Removing any new hardware installed to check and isolate the issue
- Removing or disconnecting any disks or USBs and restarting the computer to see whether or not things change
- Connecting a different and functional power cable to see whether or not the system is powering on properly
- Checking the cooling fans and their functioning if any overheating issues or errors are detected and
- Following the manual to resolve issues according to the error codes such as LED indication, beep codes, text message on screen.
The role of POST in the pre-boot sequence does not end there. By helping in finding and loading the operating system, these tests indirectly ensure proper interaction between all the hardware units of the computer system.
Some of the other major responsibilities of POST can be summarized as follows:
- It verifies the integrity of the BIOS code itself before initiating it
- It finds the main memory of the system to verify its size
- It detects, selects and organizes the particular devices that are available and needed for the booting process
- It verifies the CPU registers and a host of other basic components of the computer already mentioned above and
- It passes the control further to the additional dedicated BIOS extensions BIOS if they are installed.
And, in the later versions of BIOS, a POST also performs some other vital functions such as:
- Initializing the chipset
- Discovering, initializing and creating a catalog all system devices and its buses
- Providing a user interface for configuration of the system and
- Constructing the right system environment for the desired operating system.
The POST codes help the computer systems as well as the user to respond or take proper actions after encountering specific errors. These actions include:
- Warning or No Error – The system continues the booting process even with a degraded condition and after the message appears on the monitor. The error is logged or recorded in the SEL or System Event Log. The user may replace the system.
- Pause – The message appears on the BIOS screen and the error is logged in the SEL. Booting will continue only when the user gives an input to continue. The user may continue booting or take instant remedial actions.
- Halt – The error appears and is logged in the SEL and the system will not reboot unless the error is rectified. The user has to remove and replace the faulty component and then restart the computer system.
The importance of POST is not restricted to the computers only but it is also necessary for some other appliances such as medical equipment and other embedded systems such as those found in communications, avionics, and others.
The steps followed for the POST steps may vary according to the hardware architecture of the computer system as well as the firmware installed in it.
In general, it involves validating the capability of all the hardware required and ensuring the apps and operating system run properly.
Ideally, you can say that POST is typically the BIOS startup program that consists of different aspects and is done in different steps. The basic steps of the test involve:
- Reading the information stored about the configuration in the CMOS or the Complementary Metal Oxide Semiconductor chip and
- Examining the jumpers and Dual Inline Package or DIP.
Typically, when the system is switched on, the following steps are followed:
- The LED lights of the hardware starts flashing
- The company logo is displayed on the screen of the computer
- Different chips on the motherboard are checked including CPU, RAM, video card, mouse, keyboard and others
- Memory testing is done by checking the first megabyte of DRAM before copying the BIOS code from the ROM to it, a process called shadowing
- A simple memory test is done on every read and write location typically using the 55aa55aa pattern
- Polling the correctable as well as the non-correctable memory errors both in the controllers and logging them and
- Displaying the final result of the test.
After the results of these tests are obtained, these are compared with the hardware devices. These devices can be varied and many and include but not limit to those mentioned above.
When the comparison is done, the ROM allocates system resources according to the need as needed which is done primarily with an intention to set up the perfect environment that is necessary for the operating system to function.
When this is done and all of the tests are completed, POST will typically alert the operating system by emitting one or more beeps, if the OS is installed. Even if the operating system is not installed, POST will always happen. This step will however depend on the type of the system.
POST Error Codes
There are different codes of POST errors that are usually represented by a number of beeps so that you know its status. Depending on the number of beeps you hear there can be no error or errors in display, RAM, CPU, keyboard and others.
Usually, the different POST errors are pointed out by different beeps combinations you hear when you start your computer.
Here is however some of the most common POST error codes that are indicated through beep codes:
- 1 short beep – No error, normal POST
- 1 long beep followed by 2 short beeps – Error is display adaptor
- 1 long beep followed by 3 short beeps – Error in enhanced graphics adaptor
- 3 long beeps – Error in keyboard card
- 2 short beeps – POST error
- Continuous beep – Issues with system board, power supply, RAM, keyboard
- No beep – Disconnected speaker or CPU r issues with power supply or system board
- Repeated short beeps – Issues with system board, power supply or keyboard and
- 1 long beep followed by 1 short beep – System board issue.
These beep codes, as said earlier, can vary from company to company because there is no universal standard for it. Therefore, it is essential that you look for and know the beep codes for your particular computer system.
Though the POST codes are very short lived and are often unreadable or the digits cannot be distinguished easily, there are a few specific tests that take a long time. You can read them by looking at the LEDs through the front panel. These codes and their meanings, in that order, are:
- 4F – IPMI BT interface being initialized
- D4 – Testing base memory
- D5 – Copying boot block or transferring control to RAM
- 38 – Initializing devices through Device Initialization Manager
- 75 – Int-13 being initialized and getting ready for IPL detection
- 78 – BIOS and Option RAM controlled IPL devices being initialized
- 85 – Displaying to and getting response from the users for errors
- 87 – Executing requested or necessary BIOS setup or checking boot password
- 00 – Passing control to operating system loader and
- FF – Successful updating of flash, disabling flash write and ATAPI hardware, reinstating CPUID value in the register, passing control to F000 ROM at F000:FFF0h.
POST Issues and Meanings
The descriptions of every POST code will usually appear as a four digit string at the bottom right corner of the BIOS screen. Two digits represent the output of the primary I/O port 80 and other two represent that of the secondary I/O port 81.
A few POST codes from the primary I/O port 80 can be seen on the LEDs of the front panel of a server node.
Here is a list of some of the issues, their meanings as well as the pause, warning, halt or no actions taken by the system against each error.
In this list the first two digits of the code are from port 81 and the last two are from port 80.
All these in the order error code, error message and response:
- 0000 – Time error, pause
- 0003 – CMOS battery low, pause
- 0004 – CMOS settings wrong, pause
- 0005 – CMOS checksum bad, pause
- 000B – CMOS memory size wrong, pause
- 000C – RAM R/W test failed, Pause
- 000E – A: Drive error, pause
- 000F – B: Drive error, pause
- 0012 – CMOS Date/Time not set, pause
- 0040 – Refresh timer test failed, halt
- 0041 – Display memory test failed, pause
- 0042 – Display type wrong, pause
- 0043 – ~<INS> pressed, pause
- 0044 – DMA controller error, halt
- 0045 – DMA-1 error, halt
- 0046 – DMA-2 error, Halt
- 0047 and 0049 – Unknown BIOS error, halt
- 0048 – Password check failed, halt
- 004A and 004B – Unknown BIOS error, pause
- 004C – Keyboard/Interface error
- 005D – S.M.A.R.T. command failed
- 005E – Password check failed, pause
- 0101 – Incompatible system board with CPU power requirements, pause
- 0102 – VID configuration or CPU Core to Bus ratio failed, pause
- 0103 – CPU MTRR configuration failed, complicates PCI space, or Un-cacheable memory hole
- 0120 to 0127 – Thermal trip failure, pause
- 0128, 0129, 012A to 012F – Thermal trip failure
- 0150 to 0157 – Processor failed BIST, pause
- 0158, 0159, 015A to 015F – Processor failed BIST
- 0160 to 0167 – Processor missing microcode, pause
- 0168, 0169, 016A to 016 F – Processor missing microcode
- 0180 to 0187 – BIOS does not support current stepping, pause
- 0188, 0189, 018A to 018F – BIOS does not support current stepping
- 0192 – L2 cache size mismatch
- 0193 – CPUID, processor stepping is different
- 0194 – CPUID, processor family is different, pause
- 0195 – Front side bus mismatch, halt
- 0196 – CPUID, processor model is different, pause
- 0197 – Processor speeds mismatched, pause
- 5120 – CMOS cleared by jumper, pause
- 5121 – Password cleared by jumper, pause
- 5125 – Not enough memory to copy PCI Option ROM
- 5180 to 5184 – Unsupported memory vendor for DIMM_A0 to DIMM _A3 and none for DIMM_A4, warning
- 5185 to 51894 – Unsupported memory vendor for DIMM_B0 to DIMM _B4, warning
- 518A – Unsupported memory vendor for DIMM_B5, warning
- 518B to 518F – Unsupported memory vendor for DIMM_C0 to DIMM_C3, warning
- 5190 to 5191– Unsupported memory vendor for DIMM_C4 to DIMM_C5, warning
- 5192 to 5197 – Unsupported memory vendor for DIMM_D0 to DIMM_D5, warning
- 51A0 to 51A5 – Unsupported AMB vendor for DIMM_A0 to DIMM_A5, warning
- 51A6 to 51A9, 51AA and 51AB – Unsupported AMB vendor for DIMM_B0 to DIMM_B5 warning
- 51AC to 51AF – Unsupported AMB vendor for DIMM_C0 to DIMM_C3, warning for AC, AE and pause for AD and AF
- 51B0, 51B1 – Unsupported AMB vendor for DIMM_C4 to DIMM_C5, pause
- 51B2 to 51B7 – Unsupported AMB vendor for DIMM_D0 to DIMM_D5
- 51C0 – Memory configuration error
- 8101 – USB host controller not in specified address
- 8102 – USB device initialization failed
- 8104 – Unsupported 60h/64h port emulation by USB host controller
- 8105 – EHCI controller disabled
- 8301 and 8302 – Inadequate space in runtime area
- 8601 – BMC not responding and
- 8701 – Inadequate runtime space for MPS data.
How to Enable POST?
The process to enable POST is pretty simple but may vary depending on the BIOS available. You will typically have to use the Function key F2 to start and F10 to exit with a few steps to follow in the interim.
- Press F2 quickly after switching on the system
- Enter the BIOS setup
- Go to Advanced
- Click on Boot
- Click on Boot Configuration to open the boot configuration pane
- Enable POST function hotkeys displayed
- Enable display F2 to enter setup and
- Press F10 to save and exit from BIOS.
What will Happen if POST Fails?
If POST fails, it will produce a beep code which will indicate the specific error, as mentioned above. Sometimes, depending on the type of issue, the BIOS will send a simple error message for you to take the necessary action and sometimes the computer will not boot at all.
Where is POST Stored?
POST is an analysis process that happens even before the drive and operating system starts working and therefore is stored in the ROM BIOS of the motherboard. This allows faster access.
As it is clear from this article, the POST process is very important for booting a system up as well as for its safety.
It happens within a few seconds after the computer system is turned on and it detects hardware issues before the operating system is loaded for the computer to start working.