NeXT systems
are some of the most sought-after computers ever made. Enthusiasts
go crazy for these magnesium cubes built by Steve Jobs during
his time away from Apple. A well kept example can easily fetch
over a grand on Ebay. Part of this comes from their eye-catching
form and impressive specs, but more captivating is their colourful
history.
In 1985, when the Macintosh
was only a year and a half old, Steve Jobs found himself being
pushed out of the company he had founded. Virtually overnight
he put together a new computer company, simply called NeXT Inc,
and started over. Funding was provided by Ross
Perot of all people, development was done by a handful of
ex-Apple employees, and in a few years they had made something
incredible.
The NeXT cube was unlike anything that came before it. The specs
were top notch, its NeXTstep operating system was based on UNIX,
and it integrated DSP and postscript like they were always meant
to be there. Good news for anyone in the publishing business.
And in a typical Steve Jobs move, the mouse plugged into the keyboard,
which plugged into the monitor, which plugged into the computer,
which plugged into an electrical outlet. A single wire traced
the path from your hand to the wall. A big deal in the days before
USB.
Ahh, but like the Lisa
he had created before, Jobs built the NeXT to be a Lamborghini
in a world of Toyotas. Sales were measured in the low thousands
while Apple was selling more than a million Macs. In the end the
machines simply cost too much, no matter how nice they were, and
as such they failed to take the world by storm. In 1996 Apple
bought NeXT and brought Jobs back in.
But despite their small production figures, NeXT machines were
to have a lasting impact on the world.
In March of 1989, a computer scientist at CERN
by the name of Tim
Berners-Lee sat down at his NeXT cube and began to experiment
with something he'd been thinking about for 10 years. The goal
was to merge the promising technology of Hypertext
with the fledgling internet
to develop a better system for scientists to share information.
The result was something he called the World
Wide Web, and if you're reading this article, you're using
it right now. In a few years it went from an obscure experiment
that only worked on NeXT computers to the most common way people
used the internet.
And what of the technology developed at NeXT? Its Mach-based
operating system turned out to be a smart purchase by Apple. Their
own Mac OS was starting to show its age and limitations. Though
it took them a few years to beat it into shape, NeXTstep is now
better know to the world as Mac OS X.
Alright, enough of the history lesson.
I bought my first NeXT cube in 2009. Someone had brought it into
Free Geek to donate, saying that he had tried and failed to load
an operating system on it. I bought it under the assumption that
he had no idea how to please the SCSI
gods or some such thing. I also found myself in possession
of a second cube shortly thereafter which was in much better condition.
I spent some time learning my way around the working cube, doing
an OS install, etc, then set about tackling the broken one. My
hunch about its hard drive being problematic was spot on. Not
only was the drive misconfigured, it was also stone dead. But
once I swapped the drive and went to do an install on it, I discovered
a second and far more perplexing problem.

Where my working cube would display a nice verbose
diagnostic screen, then boot from the hard drive, this broken
cube would simply go straight to "Loading from network...".
And unlike my working cube, pressing Command-~ wouldn't bring
up the ROM
monitor for me to change its boot options. I pressed and I
pressed and I pressed some more, but no matter how or when I pressed
those keys, the system still wanted to network boot. I tried my
other keyboard and monitor, but nothing helped.
Initially I suspected some sort of configuration
problem. I thought the NeXT would stop responding to Command-~
once it had begun to look for a netboot server. I pulled the backup
battery off the motherboard to reset the parameters and tried
again. No change. I then wondered if perhaps the firmware had
been modified to go straight to netboot without giving the user
a chance to interfere. Some sort of network client or headless
server. I swapped boot ROMs with my working cube and fired it
up again. Also no change.
I began to think there was something seriously wrong
with the machine. But without being able to interact with it,
I could hardly begin to figure out what that might be. Since desperate
times call for desperate measures, I decided to do something unconventional
to provoke a response from the system. I pulled its motherboard
out, removed 2 of the RAM sticks in a bank of 4, and replaced
them with parity sticks. Upon turning the machine on I was greeted
with a new screen. A memory error, followed by a ROM monitor prompt.
It was about time!
Ahh, but my great satisfaction was followed quickly
by the realization of my worst fear. Even at the ROM monitor,
the NeXT's keyboard was completely unresponsive. I couldn't get
a single character to register. The only button which had any
result was the power button, but I couldn't even confirm that
I wanted to shut the machine down. The cause of my earlier difficulty
became clear. But how was this possible? Both my keyboards and
monitors worked fine on my other cube. The answer had to lie in
the cube.
My first attempt was a bit of shotgun debugging.
I resoldered the display connector, plus the handful of components
directly around it. I replaced the nearby 16v 47µF aluminum
surface mount capacitors since I had seen so many of them fail
in other equipment. No change. To find my answer I was going to
have to better understand the problem. To Google I went.
NeXT equipment is affectionately known as "black
hardware," and given how poorly documented the stuff is,
I think it rather apt. It was a great struggle to work out how
the keyboard interfaced with the machine. After looking up the
part numbers of nearly every component on the motherboard in search
of anything that resembled a keyboard controller, I came to the
conclusion that I was dealing with something very unconventional.
A bit of staring at the display cable's pinout
and the guts of the monitor confirmed it. The monitor contained
a board at its bottom that broke a digital signal from the computer
out into stereo sound out, mono microphone in, keyboard+mouse
in, and power on. (BTW, the exact same board, complete with connectors
for the monitor's analog board, is present in the NeXT sound box.
A crafty person could probably use one to build their own monochrome
monitor in lieu of an official one.) There was no traditional
keyboard controller anywhere in the system.

It was only when I stumbled across http://www.68k.org/~degs/nextkeyboard.html
that I finally began to understand how everything worked. It turned
out that the NeXT had a serial out line on its display connector
that emitted a mix of background chatter and sound data. The monitor's
digital board would separate this and perform the task of generating
actual analog sound for its speaker, then send along a stripped
down version of the background chatter to the keyboard. The keyboard
in turn would repeat the chatter back to the monitor, with the
addition of any key presses or mouse movement which had been performed.
And finally the monitor would encode this with any microphone
data and squirt it back to the NeXT via the serial in pin of its
display connector.
Now that I knew what to look for, I broke out my
oscilloscope and began probing. It was easy to work out which
pins did what on the keyboard connector with my scope. I could
clearly see that consistent background chatter on two pins, and
one of them would change slightly whenever I touched a key or
the mouse. That meant the keyboard was getting a signal from the
machine which it understood, and was generating characters correctly
in return. I compared the signals to those generated on my working
cube and they were identical. So the problem had to be farther
down the line.
The next step was the look at the signal between
the monitor and the motherboard. The easiest way I could think
of to do this was to remove the back cover from the NeXT and probe
at the display connector pins on the backside of the motherboard.
I had to be careful not to run the system very long like this,
as the cooling fan was attached to the back cover. But it didn't
take me long to find something. On my working cube there was a
distinct blip on the serial in line every time I pressed a key
on the keyboard. That was the monitor shouting to the NeXT that
something had happened. But on the faulty cube, no signal ever
arrived.
What, I wondered, could possibly be causing the
monitor to withhold the keyboard data blips? The very same monitor
and keyboard would report them just fine on the working cube.
I checked the +12v, -12v line and 20 Mhz clock signal to see if
any of them were out of spec. And while the 20+ signal did look
slightly lopsided, it was exactly the same on my working motherboard.
Everything else seemed identical. Then it hit me. I powered down
the system, pulled the motherboard out and grabbed my multimeter.
With the meter set to ohms, I put one lead to the serial in pin
and touched the other to ground. Sure enough, it showed continuity.
The serial in line was being shorted! No wonder the monitor couldn't
send data back to the machine, it was being pulled to ground!
A part of me was embarrassed that I hadn't thought
to perform such a simple check sooner, but overall I was relieved
to be so close to a solution. All I had to do was find the short
and I'd finally be finished. Ahh, but even that would prove a
tricky task. The NeXT was at the forefront of modern manufacturing
when it was built in 1989. Its circuit board was several layers
deep, and the serial in line completely disappeared internally
at the display connector pins. In the absence of a detailed schematic
I simply had to rely on my multimeter to find the trace. Had I
tried on the broken motherboard, my multimeter would have showed
continuity to nearly every component on the board, due to it being
shorted to ground. So to find where the serial in line actually
went I had to probe my working board. Eventually after poking
at hundreds of surface mount components, I had a hit.

Pin 5 of the component marked "9040" in
this picture showed continuity to the serial in line. I then measured
between the others pins of that chip and ground, but found no
connection. That chip couldn't be my short. But at least I knew
the serial in signal had to be close by. I resumed my search.
It turns out I didn't have to look far. The chip directly to the
right of the previous one, made by Motorola, showed continuity
to the serial in line on pin 8. And when I checked between its
other pins and ground, I found pin 14 to be grounded. Ah hah!
It was possible for this chip to have an internal short to ground.
I had to take it out of circuit to know for sure. I set my soldering
iron to heating, grabbed the broken motherboard, and lifted pin
8.

With pin 8 isolated I once more touched my multimeter
probes to the serial in line and ground. This time I saw no connection.
I had found it! I had discovered my short.

The component in question was a Motorola MMAD1103.
According to the
datasheet I found online, it was a diode array. That meant
it was a single chip full of diodes that replaced 16 individual
ones, taking up less space and being easier to manufacture. The
diodes in question were used to protect the data lines of external
ports against things like static electricity and surges from hot
plugging. Normally there should not have been continuity between
a data line and ground, but one of the diodes inside must have
failed shorted. Now that it was disconnected I could re-test the
machine.

Success! For the first time in all my hours of struggling,
the machine responded to keyboard input. That single shorted diode
was all that had held it back.
I could have left the machine like that, with a
pin sticking up in the air, but I didn't think it wise. Those
protection diodes were there for a reason. Without them, it would
be the IC at the other end of that serial line which got fried
the next time something went wrong. And that's one repair adventure
I didn't want to go on. So I had another look at that chip's datasheet
to see how I could reproduce its functionality. It turns out the
chip was pretty simple and straightforward. A pair of diodes were
attached end to end between the system ground and +5 lines, with
the serial in line connecting in the middle. Power could only
pass from ground to the serial in line, or from the serial in
line to +5, which would only occur during surges or ESD. And the
diodes themselves were nothing special. The common 1N4148
diode would do the job just as well.

A bit of digging through my electronics components
box turned up a pair of 1N4148s left over from a previous project.
Just what I needed.

I then cut off the offending pin from the damaged
IC. Since I had accidently lifted the solder pad when disconnecting
the pin, I had to solder my new diodes to the nearby via instead.
I roughed up the area around it with my new fiberglass pencil.
In addition to spraying itchy glass fibers everywhere, this removed
the solder mask from the traces and exposed the bare copper underneath
so that I could solder to it.

All that was left to do now was solder my pair of
diodes in place and I was finished.
So there you have it. One more rare system saved
from the scrap pile. I'll get a picture soon of the machine running
in its new home at the Hackery.
Page created October 25th 2011
It's hip to be square