W. Curtiss Priest, Director, CITS
Center for Information, Technology & Society
466 Pleasant St., Melrose, MA 02176
Voice: 781-662-4044 BMS...@MIT.EDU
Fax: 781-662-6882 WWW: http://www.eff.org/pub/Groups/CITS
Technical Repair
October 21, 1999
REPAIRING a PC Motherboard with
a defective 8042
(aka HT6542)
keyboard chip
I. Introduction
Many motherboards, including some with the Intel VX chipset with an
Award BIOS (v 4.51G) use the original 8042 keyboard chip dating back
to the very first AT motherboards.
While it is typically not worth repairing motherboards given how
cheaply the earlier ones sell for and because of the difficulty in
dealing with surface mount chips -- this defect is an exception and
can be easily repaired.
But, at even a modest hourly rate, this repair cannot be
typically justified by economics alone unless you are very quick. So
the reward comes more from having "fixed it yourself." In that
there are getting to be fewer things to fix with VLSI (very large
scale integration) -- it is nice to have this opportunity for
a repair.
REPAIR TIME
*Expert -- 15 minutes
*Beginner -- 2 hours +
DEFECT
When the error report is "Keyboard error or no keyboard present" and
you have a known working AT keyboard connected, the problem is most
likely the 8042 chip. While many chipsets build 8042 functionality
into a few chips -- several manufacturers have simply put the original
8042 chip on the board. Its presence is very obvious as it has the
same size and pin numbers as the original 8088 Intel processor chip --
it is 2 inches long, 1/2 inch wide and mounts via pins through the
board -- it is a 40 pin device.
If you are lucky, the manufacturer used a socket for the chip and in
that case you simply pry the chip out of the socket -- working from
both ends -- and replace it.
Replacements are available through parts suppliers, but because these
chips have been used for many years, you can often find one on another
board -- either broken or unwanted.
I found two chips in looking around. One was on a dead Pentium
motherboard (labeled HOLTEK HT6542B ) Another was on a
nonconventional NEC '486 board labeled P8042AH, made by Intel, with a
1991 date code and a 1977 Intel copyright. The first one was soldered
in; the second was socketed.
REMOVING A CHIP FROM AN UNWANTED BOARD
If the 8042 you find is soldered directly to the board, it can be
removed in less than a minute by the "blow torch" technique.
You take the board outside (produces acrid fumes), mount the board
upright in a small vise, take a chip puller and latch onto the two
ends of the chip and then take a bernzomatic torch and sweep across
the solder side, evenly heating the 40 pins. In a few seconds they
start to sputter and the board starts blackening, sometimes emitting
smoke and flame. Not to worry, the board will not self-combust.
You rock the chip and suddenly it will feel lose -- you then just
pluck it from the board. (You can remove almost any component from a
board with this technique which was written up in Byte Magazine in the
'70's) Remember that boards are wave soldered, and so the amount of
heat you apply this way is quite similar to when they were originally
soldered on, provided you don't apply heat past the point they start
to come lose.
This technique will also let you remove sockets, but be sure a chip is
in the socket (to make sure the heat doesn't damage the plastic of the
socket) and don't apply excessive heat to the back side.
After removing you clean excess solder from the chip by heating each
pinning, wacking the upper side of the chip onto a soft towel, and
then cleaning up any rivlets of solder hanging from the pins with an
exacto blade.
REMOVING THE BROKEN 8042 CHIP FROM A BOARD THAT OTHERWISE BOOTS,
DISPLAYS BIOS INFORMATION TO THE MONITOR, AND ONLY INDICATES THE ABOVE
ERROR
Note: the copper traces on the board are not very fragile, but it is
very difficult to remove a chip of this size, evenly heating all 40
leads, and not harming something.
One alternative is to cut each pin from the IC -- up where the pin
goes into the IC, and then remove each pin by applying heat to the
solder side and pulling each pin out from the top.
This technique, however, then requires that all the holes are cleaned
of solder. This can be done by applying heat and using a "solder
sucker" (Radio Shack item). But this is a slow process and some holes
might still require using a #69 drill to get clearance.
The technique I prefer in situations like this is to cut the pins and
leave them. You then take the replacement chip (or a socket) and bend
the leads along one side so that the chip/socket angles up at 45
degrees. This lets you place the leads of the new IC against the old
pins, and then you solder each standing pin to the IC pin. The pins
on the IC/socket should be heavily pretinned and then you should place
the IC/socket leads on the far side of the standing pins so as you
heat the pins they can be rocked towards the IC/socket pins to ensure
a good connection.
Once you have finished one side, you then bend the IC/socket down so
it is flat and do the same operation to the other 20 pins.
Finally take your screwdriver and push on each pin in a direction
opposite of the way the two pins are mating. If you have not
successfully bridged the two pins, it will push away -- indicating you
need to redo that one.
CUTTING THE PINS
These can be cut by using very fine wire cutters, but doing it that
way will crimp the tops of each pin.
A superior way is to use a Dremel cutoff wheel, and you just zip the
pins off, cutting against the edge of the plastic packaging of the IC
as a guide.
However, one runs the risk of the cutoff wheel catching on a pin,
diving into the board and slicing traces that are on the inside. To
avoid that, cut slowly and steadily enough that the wheel always stays
high.
To be very confident, take a 2 inch piece of thin steel, and place
this under the IC, against the inside of the leads, so it protects the
board should the wheel drop down.
Also, after using the cutoff wheel, use an air can to clean the board
of any metal filings.
REPAIRING TRACES
Should you damage a trace (a narrow copper connection), they are
easily repaired by the following:
1. Take a narrow jewelry screwdriver and scrape across
the broken trace area so that the copper is bright
on both sides of the break
2. Take a piece of stranded wire of around 22 guage, strip
the end for 1/2 inch, then clip off all but one
of the strands. Tin it.
3. Tin both sides of the break. If the tinning doesn't
take, scrape again. Try again. Rubbing the iron with
a small puddle of solder and rosin is most effective.
4. Hold the single strand of wire to one side of the break
and tack it onto the trace. Leave a bit hanging over
the other side of the break but do not attempt to
solder it too. Clip the other end of the strand from
the wire you were using to hold the strand in place.
5. Take the jewelry screwdriver and press the piece of wire
around the center of the break -- this will bring the
end of the wire into contact with the other side of
the break. Now touch it with the soldering iron and
it should sink into the tinned area.
In my case I was overly confident and nicked the board in two places.
I immediately noticed the obvious nick which severed 3 traces running
from the 8042 to DM7406 chip.
I was however, most disturbed that the board was dead after I put the
new 8042 chip in.
A quick inspection, and brushing that area of the board for metal
filings do not revive the board.
Finally, a day later, I sat with a magnifying glass to examine each
trace from the 8042. And, yes, there was one very tiny cut on the
inside of pin 18. I tacked a wire strand across it and the board
sprung to life -- AND -- the error
"Keyboard error or no keyboard present" did not appear!
(confirming a connection by using an ohm meter is often difficult
because the other end of the trace can be difficult to find. In my
case, pin 18 was easily followed to pin 17 of a 58D9E9 labeled U3)
Clearly the role of the 8042 is so central to the board's functioning
that this one break prevented the processor from even emitting a POST
code via the speaker.
NOTE: If the location of the 8042 is in the area between the chassis
and the ISA/PCI sockets, you should be sure to have the new chip as
low as the original one as many cards hang down in this region.
Elsewhere you can feel free to put in a $1 socket and elevate the
chip. Using a socket gives you the ability to look at all your
connection points more easily, as the socket's interior is open.
W. Curtiss Priest, Director, CITS
Center for Information, Technology & Society
466 Pleasant St., Melrose, MA 02176
Voice: 781-662-4044 BMS...@MIT.EDU
Fax: 781-662-6882 WWW: http://www.eff.org/pub/Groups/CITS
Technical Repair
October 21, 23, 1999
I. Introduction
DEFECT
********************
NOTE: Both of these chips functioned fine on the Pentium motherboard
except for one, important difference.
The two chips -- the 8042 and the 6542 do NOT behave the same
with regard to controlling the A20 line. (see excerpt below from
the 8th edition of Upgrading and Repairing PCs by Scott Mueller.)
With the 8042, HIMEM.SYS was NOT able to identify how to handle
the A20 line (see, further, the /M switch by typing HELP
HIMEM.SYS in DOS 6.x or in a DOS manual 5.x or higher.)
Using no /M switch, the message --
Error: unable to control A20 line
XMS driver not installed
Trying to use the /M resulted, e.g. /M:1 to select "IBM PC/AT"
resulted in hanging the machine.
Regardless, if the LINUX operating system is used, LINUX does
NOT use the faster A20 line access and no problem is reported.
It is only in attempting to load HIMEM.SYS (and presumably
its Win98/NT equivalent) where the chip difference appears.
This suggests, however, that motherboards that report
"unable to control A20 line" might be repaired by replacing the
8042-type chip -- as this chip is central in turning the A20
line off and on (see reason below).
************************
CUTTING THE PINS
REPAIRING TRACES
*********************************************************************
High Memory Area (HMA) and the A20 line
The High Memory Area (HMA) is an area of memory 16 bytes short of 64K
in size, starting at the beginning of the first megabyte of extended
memory. It can be used to load device drivers and memory-resident
programs to free up conventional memory for use by real mode programs.
Only one device driver or memory-resident program can be loaded into
HMA at one time, no matter what its size. Originally this could be any
program, but Microsoft decided that DOS could get there first, and
built capability into DOS 5 and newer versions.
The HMA area is extremely important to those who use DOS 5 or higher
because these DOS versions can move their own kernel (about 45K of
program instructions) into this area. This is accomplished simply by
first loading an XMS driver (such as HIMEM.SYS) and adding the line
DOS=HIGH to your CONFIG.SYS file. Taking advantage of this DOS
capability frees another 45K or so of conventional memory for use by
real-mode programs by essentially moving 45K of program code into the
first segment of extended memory. Although this memory was supposed to
be accessible in protected mode only, it turns out that a defect in
the design of the original 286 (which fortunately has been propagated
forward to the more recent processors as a "feature") accidentally
allows access to most of the first segment of extended memory while
still in real mode.
The use of the HMA is controlled by the HIMEM.SYS or equivalent
driver. The origins of this memory usage are interesting because they
are based on a bug in the original 286 processor carried forward
through even the new Pentium II.
The problem started from the fact that memory addresses in Intel
processors are dictated by an overlapping segment and offset address.
By setting the segment address to FFFF, which itself specifies an
actual address of FFFF0 that is 16 bytes from the end of the first
megabyte, and then specifying an offset of FFFF, which is equal to
64K, you can create a memory address as follows:
FFFF segment
+ FFFF offset
______
= 10FFEF total
This type of address is impossible on a 8088 or 8086 system that has
only 20 address lines and therefore cannot calculate an address that
large. By leaving off the leading digit, these processors interpret
the address as 0FFEF, in essence causing the address to "wrap around"
and end up 16 bytes from the end of the first 64K segment of the first
megabyte. The problem with the 286 and higher was that when they were
in real mode, they were supposed to operate the same way, and the
address should wrap around to the beginning of the first megabyte
also. Unfortunately, a "bug" in the chip left the 21st address line
active (called the A20 line), which allowed the address to end up 16
bytes from the end of the first 64K segment in the second megabyte.
This memory was supposed to be addressable only in protected mode, but
this bug allowed all but 16 bytes of the first 64K of extended memory
to be addressable in real mode.
Because this bug caused problems with many real mode programs that
relied on the wrap to take place, when IBM engineers designed the AT,
they had to find a way to disable the A20 line while in real mode, but
then re-enable it when in protected mode. They did this by using some
unused pins on the 8042 keyboard controller chip on the motherboard.
The 8042 keyboard controller was designed to accept scan codes from
the keyboard and transmit them to the processor, but there were unused
pins not needed strictly for this function. So IBM came up with a way
to command the keyboard controller to turn on and off the A20 line,
thus enabling the "defective" 286 to truly emulate an 8088 and 8086
while in real mode.
Microsoft realized that you could command the 8042 keyboard controller
to turn back on the A20 line strictly for the purpose of using this
"bug" as a feature that enabled you to access the first 64K of
extended memory (less 16 bytes) without having to go through the
lengthy and complicated process of switching to protected mode. Thus
HIMEM.SYS and the High Memory Area was born! HIMEM.SYS has to watch
the system to see if the A20 line should be off for compatibility, or
on to enable access to the HMA or while in protected mode. In essence,
HIMEM becomes a control program that manipulates the A20 line through
the 8042 keyboard controller chip.
Curtiss Priest wrote:
> Applies to Pentium and other PC Motherboards that
> report "Keyboard error or no keyboard present"
>
Fine about the background info and the software tips!
However, I feel that many people in this newsgroup would strongly
disagree about the workmanship described in replacing ICs.. :-)
It can be done the proper way, read e.g. Sam's FAQ..
Stein
--
*** STEIN-OLAV LUND engineer ***
*** Sor-Trondelag College ***
*** Dept. of Electrical Engineering Tel. +47 73 55 95 99 ***
*** N-7004 Trondheim Fax +47 73 55 95 81 ***
*** NORWAY ***
*** E-:-) LA9QV ***
**************************************************************
+++ Teacher (in pub): Do you serve headmasters? +++
+++ Barman : We serve anybody, sir. +++
+++ Teacher: Good, a beer for me and a headmaster +++
+++ for my dog, please. +++
+++ J. Taylor: The New English Norwegian Joke Book,1990 +++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Stein-Olav Lund wrote:
> Curtiss Priest wrote:
>
> > Applies to Pentium and other PC Motherboards that
> > report "Keyboard error or no keyboard present"
> >
>