EE Times has just posted a new “fundamentals” course. This one is on the Fundamentals of USB. Have you paused recently to consider just how wonderful USB actually is? If not, let me take you on a trip down memory lane…
As far as I know, USB (which stands for Universal Serial Bus) was originally conceived only in the context of computers and their peripherals, such as mice, keyboards, printers, scanners, and external storage devices. Once it had been introduced, however, USB proved to be so useful that it now appears in all sorts of devices, including smartphones, digital cameras, e-Book readers… the list goes on and on and on…
Now, before we plunge into the fray with gusto and abandon, let’s remind ourselves as to the key things USB provides that most of us don’t even think about anymore:
- Any USB-enabled device can be connected to any USB port on the computer.
- The same USB device can be connected to different computers (PCs, Macs…).
- If this is a new device for which a driver has not yet been installed, then the host system will locate and install the driver without the user having to reboot the system.
- The host system automatically configures itself and the USB device without forcing the user to play around with esoteric settings like numbers of bits and bit rates.
- USB provides “hot swap” capabilities, which means it isn’t necessary to power-down the computer before connecting or disconnecting a USB device.
- If you have more devices than you have USB ports on your computer, all you have to do is plug a cheap-and-cheerful USB hub into one of the ports on the computer and then plug other devices into the hub.
Today, USB is the interconnect of choice for a wide variety of devices
The bottom line is that USB makes things incredibly easy for end-users. One strange thing to me is that, although USB hasn’t been around all that long in the scheme of things, many younger users have never known a time before USB. And even those of us who were present in “ye olden days” tend to forget just how painful things used to be…
In a moment I’m going to talk about things like PS/2 connectors, RS-232 connectors, Centronics interfaces, SCSI interfaces, and goodness knows what else. One problem is that it’s hard to visualize these things without pictures. Another problem is that – not surprisingly – all of the equipment in my office is now USB-based; any older computers and peripheral devices were hauled off to my local technology recycling center long-ago.
Thus it was that I recently found myself visiting the technology recycling center purchasing a bunch of old computers and peripherals that I may well have donated to them myself (as always, it’s a funny old world when you come to think about it). The folks at the center did say that after I’d taken my pictures I could return these units and they would refund my money. But these things are getting harder and harder to find so I decided to keep them because I may wish to take additional pictures in the future.
Let’s start by considering the sort of thing we might have seen looking at the back of a generic tower computer circa the mid-1990s. Basically we would have been faced with a whole bunch of connectors and expansion cards as illustrated in my Visio sketch below:
The back of a generic tower computer circa the mid-1990s
So what sort of devices and connectors would we be looking at here? Well, first of all there would be a PS/2 connector for the keyboard. This was a 6-pin mini-DIN connector, where the letters D-I-N stand for Deutsches Institut für Normung, which is the German national standards organization that originally standardized this type of connector.
A keyboard with a PS/2 connector
Just to make sure we’re all tap-dancing to the same drum beat, a lot of these photos may look a little strange at first because we set them up to have the connector in the foreground and its corresponding device further back. A graphic artist friend called Nick took these pictures for me. Keeping things in focus proved to be harder than I had expected. In many cases Nick had to take two photos – one with the connector in focus and another with the device in focus – and then merge them together (I love learning how to do things like this – this technique would never have occurred to me on my own). But we digress…
The name “PS/2” comes from the IBM Personal System/2 series of personal computers. These computers – along with the PS/2 connector – were first introduced in 1987. The PS/2 keyboard connector replaced a larger 5-pin/180° DIN connector used in the earlier IBM PC/AT design.
In fact, there would be two PS/2 sockets on the back of the computer, where the second was used for a mouse. This PS/2 mouse connector generally replaced the older 9-pin RS-232 "serial mouse" connector that was used on earlier machines (we’ll return to RS-232 connectors in a moment).
A mouse with a PS/2 connector
The PS/2 designs on keyboard and mouse interfaces were electrically similar and employed the same communication protocol. However, a given system's keyboard and mouse port might not be interchangeable since the two devices use a different set of commands. Thus, in order to avoid confusion, the two connectors on the back panel would typically (hopefully) have little images of a keyboard and a mouse associated with them. These were jolly useful if your computer was sitting on top of your desk, but not quite so useful if you were squirming around on the floor under your desk trying to connect things up in the dark.
Over time, these two connectors started to be color-coded – as were the plugs on the ends of the keyboard and mouse cables. I remember thinking that this was an incredibly clever idea the first time I saw it (before that everything was the same color, which didn’t exactly help the situation).
These days we’re used to every computer having all sorts of cool things already integrated into it, such as high-resolution graphics and sophisticated sound. Not so long ago, however, things like sound were optional, so you very often saw one of your expansion slots being occupied by a sound card. As is illustrated in the image below, in addition to the Line In, Line Out, and microphone connectors, a lot of the early cards had a 9-pin RS-232-like connector, but I for one can no longer recall what this was used for.
Another thing you would almost invariably see on the back of a computer were one or two 9-pin RS-232 connectors, where RS-232 – which was introduced by the Electronics Industries Association – is an abbreviation for “Recommended Standard 232”. These were referred to as serial ports or COM ports (for communications), and they could be used to connect a variety of external devices such as scanners, plotters, external modems, and so forth.
One consideration with RS-232 is that the user often had to spend a lot of time configuring things. For example, when you first connected a peripheral device into a COM port, you typically had to inform the operating system and/or device driver as to which port you had used. Furthermore, you often had to set up a load of nitty-gritty communications details, like the number of data bits, the number of stop bits, and the speed of the interface. Quite apart from anything else, this meant that you couldn’t simply plug a new peripheral device into any available serial port or to swap two devices over without having to painstakingly reconfigure everything.
A scanner with an RS-232 connector
If by any chance you required an additional RS-232 port you had something of a problem, because RS-232 is a simple point-to-point protocol, which means you have the computer on one end and a single peripheral device on the other. The solution would be to add another expansion card into your system. Once again, you would have to configure this COM port to match the characteristics of whatever peripheral device you plugged into it.
Actually things were much more complicated than this, because inside the computer your expansion cards plugged into an expansion bus. Starting around 1984, the expansion bus used in PCs was the ISA (Industry Standard Architecture) bus. This started to be replaced in the mid to late 1990s by the PCI (Peripheral Component Interconnect) bus, which was in turn supplanted by PCI Express.
But returning to the mid-1990s, adding an expansion card to an ISA expansion bus-based system was a non-trivial matter. In addition to removing the cover to your PC, you had to set a number of switches and/or jumpers to configure your expansion card, insert the card, and replace the cover.
Adding an expansion card was non-trivial
But you weren’t finished yet -- this was where your problems really started. Once the system was powered up, you would typically have to load the software driver for this device from a floppy disk. Also you would have to juggle a limited number of interrupt request lines to ensure that the resources you had selected weren’t already being used by another device. Adding a simple modem card, for example, could take hours – and that was if you knew what you were doing!
Another connector you would invariably find on the back of a personal computer was a 25-pin parallel printer port. Commonly referred to as the Centronics interface, this was originally developed in the 1970s by a pioneering American manufacturer of computer printers called Centronics Data Computer Corporation, and it soon became a de facto standard to the extent that the Centronics Corporation is now remembered primarily for this parallel interface that bears its name.
A printer with a Centronics connector
Let’s just pause for a moment to look at this connector and associated cable. Although clever for its time, it’s obvious that this was a somewhat expensive and unwieldy implementation…
And yet one more connector type that really deserves mention is SCSI (pronounced “scuzzy”). Standing for Small Computer System Interface, this technique began to appear on the scene in the early 1980s. The reason we have to note this here is that Apple Computers provided a SCSI interface. This gave their owners bragging rights over the users of IBM PCs, which means that if we didn’t mention it I’d soon be receiving loads of emails from disgruntled Apple fans. Of course if you owned an IBM PC and you wanted a SCSI interface … you’ve guessed it, you had to add an expansion card…
External disk drives using SCSI connectors
One big advantage of SCSI was that it was fast enough to enable you to connect it to an external disk drive. Another big advantage is that SCSI allowed you to daisy-chain external devices together. Having said this, things weren’t quite as easy as one might hope, because you had to set switches in each device to give them unique ID numbers. Also you had to chain the devices in a specific order … still, it was considered to be very cool at the time.
The disadvantage was the plethora of SCSI connector types and speeds and “stuff” – in fact probably no computer interconnect (with the possible exception of RS-232 serial) has caused as much confusion. For example, early SCSI interfaces commonly used a 50-pin micro ribbon connector. However Apple used DB-25 connectors, which were less expensive to make, but compromised functionality. Even worse, DB-25 connectors were commonly used for RS-232 serial cables and also to connect parallel printers, meaning that users might accidentally try to use completely inappropriate cables. Oh, the fun we had…
There were more connector types than we’ve discussed here, but I think we’ve hit the main contenders. The result was that life before USB was a real pain:
- Lots of different connector types
- The connectors and cables were expensive and unwieldy
- Most supported only single, point-to-point connections
- If you ran out of connectors you had to add expansion cards
- You had to shut down the system to attach or detach devices
- You had to restart the system after installing a device driver
- Life was a morass of configuration issues and connection confusion
In order to address all of the issues we’ve just discussed, a group of seven companies got together 1994. These companies, who we should all thank profusely, were Compaq, DEC, IBM, Intel, Microsoft, NEC, and Nortel. What they wanted to was to make it fundamentally easier to connect external devices to computers by addressing the usability issues of existing interfaces and simplifying the software configuration of any devices connected to the computer, as well as permitting greater bandwidths for external devices.
Of course, as we now know, the designers of USB rose to the task magnificently. USB 1.0 was released in January 1996, but there were a number of “glitches” and “gotchas”, with the result that few USB 1.0 devices actually made it to the market. USB 1.1 was released in September 1998. This released fixed the problems in the 1.0 version and was the earliest version to be widely adopted.
The USB 2.0 specification – the one most of us are using at the time of this writing – was released in April 2000, and this specification was formally standardized by the USB Implementer’s forum – or USB-IF – at the end of 2001.
As I pen these words, the next generation of the specification – USB 3.0 – is in the early stages of deployment. Also, there’s Wireless USB and USB OTG (“On-The-Go”)… but all of these are topics for another day…