3B1/UNIXPC problems with WD2010 disk chip *SOLVED*

Thad P Floryan thad at cup.portal.com
Tue Dec 18 16:30:10 AEST 1990


It appears everything in and out of PORTAL between Dec.14 and Dec.17 has been
lost in the Great Bit Bucket.  I've checked several other Bay Area sites and
did not find this, so I'm reposting.  Sigh.  If the original did, somehow,
get out during that period, send your nastygrams to CS at cup.portal.com ("CS" is
PORTAL's "Customer Service").

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

     C O R R E C T    3 B 1    W D 2 0 1 0    `` D R U N ''    P A T C H

			       by Thad Floryan

				 15-Dec-1990


As many have discovered, the WD2010 disk controller is not always a drop-in
replacement for the WD1010 chip in the 3B1/UNIXPC/PC7300.  Those who've tried
a simple chip replacement in certain systems have encountered irrecoverable
recalibration errors, numerous disk errors, and often a full Bad Block Table.

Of the 180 chips purchased during the group buy I organized in 1989, 15 were
thought to be "bad" by the recipients, yet several chips returned for testing
operated fine in my systems.  Recent postings to unix-pc.general suggest the
problem is even more widespread as others are attempting hard drive upgrades
using the WD2010 chip.

Why bother with the WD2010 if so many problems are reported?  You'll need the
WD2010 to fully utilize hard drives such as the Maxtor XT2190 or XT2140, both
having 1224 cylinders, or the Miniscribe 3085 with 1170 cylinders.  The WD1010
chip is hardware-limited to 1024 cylinders whereas the WD2010 is specified to
2048 cylinders.  Note all known versions of the 3B1 kernel up to and including
version 3.51m are software-limited to 1400 cylinders.  Note also the 3.51m
kernel is able to identify which disk controller chip is installed and reports
that fact during its boot sequence.

Two identifiable failure modes have been reported with the WD2010:

	1. inability to recalibrate and/or excessive kernel-reported HD errors
	   when simply substituted for a WD1010 in a system that was operating
	   correctly with a WD1010; restoring the WD1010 to the system effected
	   normal operation.

	2. apparent correct formatting of a new hard disk, followed by failure
	   to recalibrate and/or excessive sector errors during a surface test,
	   often followed by a full Bad Block Table.  Substituting the original
	   WD1010 permitted correct formatting (limited to 1024 cylinders) and
	   successful completion of the surface test.

The first "clue" to the solution was understanding the failure modes were ALL
caused by read errors (disk formatting is a high-speed write-only operation).

The second "clue" was an observable pattern of which motherboard "Rev. Level"
systems failed with a WD2010 and which succeeded with a WD2010, but ONLY up to
a point; there were still, say, some "Rev. C" systems that would and some that
wouldn't "take" a WD2010.

The final "clue" was the presence of three separate and distinct system circuit
schematics in the latest copies of the UNIXPC Reference Manual.

Confounding an earlier solution were the lack of any visible differences in
the vicinity of disk drive "read" circuitry between motherboards which did or
didn't function properly with a WD2010.

Further confusion arose due to unobvious schematic "Rev. level" assignments:
for example, is a "Rev. C" board more recent than a "Rev. B" board?

And the "easy" solution in the UNIXPC Service Manual was unacceptable: replace
the hard drive and/or replace the motherboard.

Well, after recently having another opportunity to examine the problem, the
facts and a SOLUTION follow:

The UNIXPC Reference Manual schematics document three DIFFERENT systems which
were all CONCURRENTLY manufactured, and even then with "same-board" variations
in the production component board-stuffing depending on other customer-order
changes.  Thus, a "Rev. level" sticker must be referenced to the specific type
board and one must also take into account the actual production "order" (i.e.
whether to be stuffed for 512K, 1MB or 2MB RAM).  Confusing, eh?  Following is
what I've been able to decipher:

System	Desc.	Schematic Set	Originally	Revision Levels	Dated

S4 CPU P5 1MB	D-08-00225-00   20-May-1985	A: CO# 5197	20-May-85
						B: CO# 5219	26-Jun-85
						C: CO# 5318	 1-Oct-85
						D: CO# 5328	 7-Oct-85
						E: CO# 5393	 8-Jan-86
						F: CO# 5494	12-Jun-86

S4 CPU		D-08-00230-00    9-Jan-1985	A: CO# 5189	 1-May-85
						B: CO# 5296	30-Sep-85
						C: CO# 5331	 7-Oct-85
						D: CO# 5494	12-Jun-86

S4 CPU		D-08-00222-00    9-Jan-1985	A: CO# 5095,5116 4-Jan-85
						B: CO# 5118	21-Jan-85
						C: CO# 5131	31-Jan-85
						D: CO# 5153	28-Feb-85
						E: CO# 5164,5165 8-Mar-85
						F: CO# 5167	10-May-85
						G: CO# 5166	28-May-85
						H: CO# 5331	 7-Oct-85
						J: CO# 5494	12-Jun-86

The "CO# nnnn" are "Change Order number" revisions developed within CT's
engineering department.  To date those have not been made public and there's
no (obvious) method of ascertaining them from notes on the schematics.  The
point being: there are MANY different board variations that can be found in
the hands of 3B1 owners.

After some experimenting and taking some hints from "oblique" references to a
"DRUN patch", it became clear all the problems center on the ability of the
disk controller to reliably detect a sector "signature" arriving from the HD
and to perform the data-separation duties.

For those with the UNIXPC Reference Manual, you should read the description of
hard disk reading beginning on page 2-62 and pay attention to data separation
on page 2-65 and note "DRUN" on page 2-68.  And you should grab sheet 12 from
ALL three schematic sets and do a "blink-comparison" (like astronomers do)
between all three sheets 12; you'll find that:

	D-08-00225-00/Rev.F and D-08-00230-00/Rev.D are identical, and

	D-08-00222-00/Rev.J has 4 substantial differences from the above.

The differences comprise:

	1. source of input signal to [13N] 74123 pin 1
	2. source of input signal to [13N] 74123 pin 2
	3. value of R63, part of timing circuit input to [13N] 74123 pin 15
	4. presence or absence of C252 in the vicinity of [17N] LF412

Now matters become interesting.  Visual observation (again) in the vicinity of
the components listed above on boards that do function with a WD2010 revealed
NO obvious differences with boards that don't function with a WD2010.  All
boards HAVE the C252 part, and the R63 part "appears" the same on all boards.

I found a person willing to sacrifice his system "for the cause" and I was
willing to "tinker" with one of mine.  To keep a long story short, I was able
to get the "other" system to FINALLY work with a WD2010 in two-stages.  The
first was to apply the alleged "DRUN patch" as previously posted to the net
over the years by others; this "almost" worked. The final stage was to replace
R63, and then everything worked properly with the WD2010 in a system that was
unable to function with one before.  C252 was left in the circuit.

The "problem" with R63 was that it's a 1% precision resistor, and such a part
doesn't (usually) have color codes; its value is either written out (as in
"6.1K 1%") or encoded (as in "6811F").  If, during board stuffing, the part
is inserted with its code "down", it will not be possible to "read" the value.

The "problem" with the inputs to the [13N] 74123 was that any differences are
actually in the board and, thus, no tell-tale "funny little wires" are visible.

So, in overview, the complete and correct "DRUN patch" modification to a 3B1
motherboard which does function with a WD1010 but does not function with a
WD2010 is:

	1. separate and lift [13N] 74123's pins 1 and 2 from the motherboard
	2. run a wire from the lifted [13N] pin 1 to [13M] 74F10 pin 7 (ground)
	3. run a wire from the lifted [13N] pin 2 to [13K] 26LS32 pin 3
	4. replace R63 per:
		original:  6.1K,  1%, 1/4W
		new value: 4.75K, 1%, 1/4W

Parts list:

	1. new 74123 (reason for this is described below)
	2. 4.75K, 1%, 1/4 W precision resistor
	3. less than one foot of 30ga "wire-wrap" wire for the two patches

In Silicon Valley, the parts' cost is approx. 40 cents for a 74123 and less
than 15 cents for the precision resistor.

In support of YOU making the changes on your system, I've attached to this
posting two shar'd ASCII picture datafiles produced using CDRAW 2.0 (available
free at osu-cis as pub/att7300/cdraw.cpio.Z [26,211 bytes]) per:

	locator		pictorial overview of 3B1 motherboard, with expanded
			view of area containing the IC chips and R63

	ic.pinnings	depicts the IC pinouts of the 74123, 26LS32 and 74F10
			chips, and depicts how the modified 74123 appears

To view the drawings, use cdraw's "preview" mode per:  cdraw -p < filename

To print the drawings, simply enter "SHIFT PRINT" and a bit-mapped screen dump
will be queued to your (primary) printer.

Because of [13N] 74123's location, I strongly advise you to simply remove and
toss the original one, and replace it with a new one modified by having its
pins 1 and 2 exiting straight out from the IC body.  The clearance in the area
around [13N] is very tight, and attempting to extract and lift two pins from
the board or to clip at the board and lift two pins risks damage both to the
chip and to the motherboard.  Besides, the 74123 part is inexpensive and
replacing the chip takes but a few minutes and is safe and easy.

If you don't have a hand-pump-vacuum-solder-extractor or a "profesessional"
desoldering station available to you, the next easiest method is to clip each
lead at the IC (NOT at the board), then remove each pin separately from the
board, and clear out the holes with solder braid.  For example:

				        ____ clip leads at IC body
				       /
			____________  /
		     __|            |__
		    |  |____________|  |
		____|__________________|_____


If you've any experience soldering, the modification should be easy and
straightforward.  If you feel uncomfortable with this patch, contract a
service technician or seek the help of a capable friend.

If you've had no success with a WD2010 chip in your system before, you NEED to
make the changes as described above.  I've already successfully modified two
systems (both were quite different) and you wouldn't believe the looks of
delight on their owners' faces!

Thad Floryan [ thad at cup.portal.com (OR)  ..!sun!portal!cup.portal.com!thad ]

-------------------- begin enclosed material --------------------
---- Cut Here and unpack ----
#!/bin/sh
# This is a shell archive (shar 3.32)
# made 12/16/1990 10:46 UTC by thad at thadlabs
# Source directory /u/thad/wd2010
#
# existing files WILL be overwritten
#
# This shar contains:
# length  mode       name
# ------ ---------- ------------------------------------------
#   1959 -rw-r--r-- locator
#   4830 -rw-r--r-- ic.pinnings
#
if touch 2>&1 | fgrep 'amc' > /dev/null
 then TOUCH=touch
 else TOUCH=true
fi
# ============= locator ==============
echo "x - extracting locator (Text)"
sed 's/^X//' << 'SHAR_EOF' > locator &&
XCheap Draw
XRAM AREA
XVOL
XMotherboard
X::::::::::
X13K
X13M
X13N
X26LS32
X74F10
X74123
XR63
X^
XLOCATOR
X^
XThad Floryan, 15-Dec-1990
X
X2 1000 17000 1 0 0
X0 13000 17000 1 0 0
X2 13000 17000 1 0 0
X0 13000 8000 1 0 0
X2 13000 8000 1 0 0
X0 1000 8000 1 0 0
X2 1000 8000 1 0 0
X0 1000 17000 1 0 0
X2 4000 17000 1 0 0
X0 4000 16000 1 0 0
X2 4000 16000 1 0 0
X0 7000 16000 1 0 0
X2 7000 16000 1 0 0
X0 7000 15000 1 0 0
X2 7000 15000 1 0 0
X0 13000 15000 1 0 0
X2 12500 11000 1 0 0
X0 12500 10000 1 0 0
X2 12500 10000 1 0 0
X0 13000 10000 1 0 0
X2 12500 11000 1 0 0
X0 13000 11000 1 0 0
X2 4500 17500 1 0 0
X0 4500 17000 1 0 0
X2 4500 17500 1 0 0
X0 5500 17500 1 0 0
X2 5500 17500 1 0 0
X0 5500 17000 1 0 0
X2 6000 17500 1 0 0
X0 6000 17000 1 0 0
X2 6000 17500 1 0 0
X0 7500 17500 1 0 0
X2 7500 17500 1 0 0
X0 7500 17000 1 0 0
X2 8000 13000 5 0 0
X0 12000 13000 5 0 0
X2 12000 13000 5 0 0
X0 12000 9000 5 0 0
X2 12000 9000 5 0 0
X0 8000 9000 5 0 0
X2 8000 9000 5 0 0
X0 8000 13000 5 0 0
X7 8500 11000 0 1 1
X7 13500 10000 1 1 0
X7 2727 6283 2 2 1
X6 6554 14778 0 1 0
X0 8324 14778 0 1 0
X2 6889 16563 7 0 0
X0 15643 13707 7 0 0
X8 15500 13779 1 3 0
X0 14830 14278 1 3 0
X0 14638 13707 1 3 0
X0 15595 13636 1 3 0
X0 15500 13779 1 3 0
X5 27000 16000 0 3 0
X0 28000 13000 0 3 0
X5 27000 11000 0 3 0
X0 28000 8000 0 3 0
X5 27000 4000 0 3 0
X0 28000 1000 0 3 0
X7 24636 5783 3 1 1
X5 24493 6426 0 3 0
X0 28511 5569 0 3 1
X7 27028 215 4 1 1
X7 26980 7068 5 1 1
X7 27028 12137 6 1 1
X7 28894 857 7 1 0
X7 28750 8139 8 1 0
X7 29037 13065 9 1 0
X2 21383 16706 1 0 0
X0 30281 16706 1 0 0
X2 21479 16777 1 0 0
X0 30281 16777 1 0 0
X2 30281 16706 1 0 0
X0 30281 7568 1 0 0
X2 30233 16706 1 0 0
X0 30233 7711 1 0 0
X2 30329 7639 1 0 0
X0 32386 7639 1 0 0
X2 30377 7711 1 0 0
X0 32481 7711 1 0 0
X5 23500 13500 0 3 0
X0 24500 10000 0 3 0
X7 24110 10923 10 1 0
X10 24000 9500 1 0 0
X10 24000 14000 1 0 0
X2 24000 14000 1 0 0
X0 24000 13500 1 0 0
X2 24000 10000 1 0 0
X0 24000 9500 1 0 0
X7 27315 12851 11 1 1
X7 27315 7782 11 1 1
X7 11864 286 12 3 1
X7 27315 857 13 1 1
X7 192 286 14 1 1
SHAR_EOF
$TOUCH -am 1215061990 locator &&
chmod 0644 locator ||
echo "restore of locator failed"
set `wc -c locator`;Wc_c=$1
if test "$Wc_c" != "1959"; then
	echo original size 1959, current size $Wc_c
fi
# ============= ic.pinnings ==============
echo "x - extracting ic.pinnings (Text)"
sed 's/^X//' << 'SHAR_EOF' > ic.pinnings &&
XCheap Draw
X1
X2
X3
X4
X5
X6
X7
X8
X9
X10
X11
X12
X13
X14
X15
X16
X26LS32
X74123
X74F10
XTOP VIEW
XMODIFIED 74123
XOther side's pins not shown
XIC PINNINGS
XThad Floryan, 15-Dec-1990
X
X5 4000 17000 0 1 0
X0 7000 8500 0 1 0
X5 12000 16000 0 1 0
X0 15000 8500 0 1 0
X5 7000 16500 0 1 0
X0 8000 16000 0 1 0
X5 7000 15500 0 1 0
X0 8000 15000 0 1 0
X5 7000 14500 0 1 0
X0 8000 14000 0 1 0
X5 7000 13500 0 1 0
X0 8000 13000 0 1 0
X5 7000 12500 0 1 0
X0 8000 12000 0 1 0
X5 7000 11500 0 1 0
X0 8000 11000 0 1 0
X5 7000 10500 0 1 0
X0 8000 10000 0 1 0
X5 7000 9500 0 1 0
X0 8000 9000 0 1 0
X5 3000 9000 0 1 0
X0 4000 9500 0 1 0
X5 3000 10000 0 1 0
X0 4000 10500 0 1 0
X5 3000 11000 0 1 0
X0 4000 11500 0 1 0
X5 3000 12000 0 1 0
X0 4000 12500 0 1 0
X5 3000 13000 0 1 0
X0 4000 13500 0 1 0
X5 3000 14000 0 1 0
X0 4000 14500 0 1 0
X5 3000 15000 0 1 0
X0 4000 15500 0 1 0
X5 3000 16000 0 1 0
X0 4000 16500 0 1 0
X5 15000 15500 0 1 0
X0 16000 15000 0 1 0
X5 15000 14500 0 1 0
X0 16000 14000 0 1 0
X5 15000 13500 0 1 0
X0 16000 13000 0 1 0
X5 15000 12500 0 1 0
X0 16000 12000 0 1 0
X5 15000 11500 0 1 0
X0 16000 11000 0 1 0
X5 15000 10500 0 1 0
X0 16000 10000 0 1 0
X5 15000 9500 0 1 0
X0 16000 9000 0 1 0
X5 11000 9000 0 1 0
X0 12000 9500 0 1 0
X5 11000 10000 0 1 0
X0 12000 10500 0 1 0
X5 11000 11000 0 1 0
X0 12000 11500 0 1 0
X5 11000 12000 0 1 0
X0 12000 12500 0 1 0
X5 11000 13000 0 1 0
X0 12000 13500 0 1 0
X5 11000 14000 0 1 0
X0 12000 14500 0 1 0
X5 11000 15000 0 1 0
X0 12000 15500 0 1 0
X1 5000 8500 1 0 0
X0 5500 9000 1 0 0
X0 6000 8500 1 0 0
X1 13000 8500 1 0 0
X0 13500 9000 1 0 0
X0 14000 8500 1 0 0
X7 8500 9000 0 1 1
X7 16500 9000 0 1 1
X7 8500 10000 1 1 1
X7 16500 10000 1 1 1
X7 8500 11000 2 1 1
X7 16500 11000 2 1 1
X7 8500 12000 3 1 1
X7 16500 12000 3 1 1
X7 8500 13000 4 1 1
X7 16500 13000 4 1 1
X7 8500 14000 5 1 1
X7 16500 14000 5 1 1
X7 8500 15000 6 1 1
X7 16500 15000 6 1 1
X7 10000 15000 7 1 1
X7 8500 16000 7 1 1
X7 2000 16000 8 1 1
X7 10000 14000 8 1 1
X7 2000 15000 9 1 1
X7 10000 13000 9 1 1
X7 2000 14000 10 1 1
X7 10000 12000 10 1 1
X7 2000 13000 11 1 1
X7 10000 11000 11 1 1
X7 2000 12000 12 1 1
X7 10000 10000 12 1 1
X7 2000 11000 13 1 1
X7 10000 9000 13 1 1
X7 2000 10000 14 1 1
X7 2000 9000 15 1 1
X7 3500 7000 16 2 1
X7 4000 5500 17 2 1
X7 11500 7000 18 2 1
X7 5645 10281 19 1 0
X7 13490 10066 19 1 0
X2 25000 8000 1 0 0
X0 32000 15000 1 0 0
X2 32000 15000 1 0 0
X0 29000 16000 1 0 0
X2 29000 16000 1 0 0
X0 22000 9000 1 0 0
X2 32000 14000 1 0 0
X0 32000 15000 1 0 0
X8 31500 14000 3 1 0
X0 32000 13500 3 1 0
X0 31500 14000 3 1 0
X8 31500 14000 3 1 0
X0 32000 13500 3 1 0
X0 31500 14000 3 1 0
X8 31500 14000 3 1 0
X0 32500 13500 3 1 0
X0 32500 12500 3 1 0
X0 32000 12000 3 1 0
X0 32000 13000 3 1 0
X0 31000 13500 3 1 0
X0 31500 14000 3 1 0
X8 30500 13000 3 1 0
X0 31500 12500 3 1 0
X0 31500 11500 3 1 0
X0 31000 11000 3 1 0
X0 31000 12000 3 1 0
X0 30000 12500 3 1 0
X0 30500 13000 3 1 0
X8 29500 12000 3 1 0
X0 30500 11500 3 1 0
X0 30500 10500 3 1 0
X0 30000 10000 3 1 0
X0 30000 11000 3 1 0
X0 29000 11500 3 1 0
X0 29500 12000 3 1 0
X8 28500 11000 3 1 0
X0 29500 10500 3 1 0
X0 29500 9500 3 1 0
X0 29000 9000 3 1 0
X0 29000 10000 3 1 0
X0 28000 10500 3 1 0
X0 28500 11000 3 1 0
X8 27500 10000 3 1 0
X0 28500 9500 3 1 0
X0 28500 8500 3 1 0
X0 28000 8000 3 1 0
X0 28000 9000 3 1 0
X0 27000 9500 3 1 0
X0 27500 10000 3 1 0
X8 26500 9000 3 1 0
X0 27500 8500 3 1 0
X0 27500 7500 3 1 0
X0 27000 7000 3 1 0
X0 27000 8000 3 1 0
X0 26000 8500 3 1 0
X0 26500 9000 3 1 0
X8 25500 8000 1 1 0
X0 27000 7500 1 1 0
X0 27500 7000 1 1 0
X0 28500 6500 1 1 0
X0 27000 7000 1 1 0
X0 26500 7000 1 1 0
X0 25000 7500 1 1 0
X0 25500 8000 1 1 0
X8 24500 7000 1 1 0
X0 26000 6500 1 1 0
X0 26500 6000 1 1 0
X0 27500 5500 1 1 0
X0 26000 6000 1 1 0
X0 25500 6000 1 1 0
X0 24000 6500 1 1 0
X0 24500 7000 1 1 0
X2 25000 8000 1 1 0
X0 23500 6500 1 1 0
X2 23500 6500 1 1 0
X0 20500 7500 1 1 0
X2 20500 7500 1 1 0
X0 22000 9000 1 1 0
X2 20500 7500 1 0 0
X0 20500 6500 1 0 0
X2 20500 6500 1 0 0
X0 23500 5500 1 0 0
X2 23500 5500 1 0 0
X0 23500 6500 1 0 0
X2 23500 5500 1 0 0
X0 32000 14000 1 0 0
X1 21479 7282 1 0 0
X0 22579 7568 1 0 0
X0 22627 6854 1 0 0
X7 20475 3284 20 2 1
X7 20762 1999 21 1 1
X7 2153 643 22 3 1
X7 21575 215 23 1 1
X1 26500 9000 1 0 0
X0 27500 8500 1 0 0
X0 27500 7500 1 0 0
X0 27000 7000 1 0 0
X0 27000 8000 1 0 0
X0 26000 8500 1 0 0
X0 26500 9000 1 0 0
X1 27000 9500 1 0 0
X0 27500 10000 1 0 0
X0 28500 9500 1 0 0
X0 28500 8500 1 0 0
X0 28000 8000 1 0 0
X0 28000 9000 1 0 0
X0 27000 9500 1 0 0
X1 28000 10500 1 0 0
X0 28500 11000 1 0 0
X0 29500 10500 1 0 0
X0 29500 9500 1 0 0
X0 29000 9000 1 0 0
X0 29000 10000 1 0 0
X0 28000 10500 1 0 0
X1 29000 11500 1 0 0
X0 29500 12000 1 0 0
X0 30500 11500 1 0 0
X0 30500 10500 1 0 0
X0 30000 10000 1 0 0
X0 30000 11000 1 0 0
X0 29000 11500 1 0 0
X1 30000 12500 1 0 0
X0 30500 13000 1 0 0
X0 31500 12500 1 0 0
X0 31500 11500 1 0 0
X0 31000 11000 1 0 0
X0 31000 12000 1 0 0
X0 30000 12500 1 0 0
X1 31000 13500 1 0 0
X0 31500 14000 1 0 0
X0 32500 13500 1 0 0
X0 32500 12500 1 0 0
X0 32000 12000 1 0 0
X0 32000 13000 1 0 0
X0 31000 13500 1 0 0
SHAR_EOF
$TOUCH -am 1215213090 ic.pinnings &&
chmod 0644 ic.pinnings ||
echo "restore of ic.pinnings failed"
set `wc -c ic.pinnings`;Wc_c=$1
if test "$Wc_c" != "4830"; then
	echo original size 4830, current size $Wc_c
fi
exit 0



More information about the Comp.sys.att mailing list