Repairing a NeXT cube

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