Inelegant hardware has long been the bane of elegant software but some hardware offenses are inexcusable
Both Admiral Grace Hopper and Andrew S. Tanenbaum are credited with pointing out that "The nice thing about standards is that you have so many to choose from." Each spoke over thirty years ago and just what have thirty years of standardization brought us? More standards. Many standards aim to be "backwards compatible" but even standards that are designed to aggressively replace their previous incarnations are at best condemned to coexist with them for a very long time. I would like to share some of my recent experiences with what has long been the bane of BSD elegance: Hardware proprietarity.
All hardware is proprietary in some way, be it through proprietary designs, patent encumberment, local modification or simply ownership and condition. The business forces that produce the powerful systems that fit in the palm of your hand are not fueled by kindness and generosity: vendors are cutthroat and corner-cutting. Contrast this attitude to that of your average BSD developer or operator and you get a decades-old tension between elegant software and the inelegant hardware it must run on. While some corner-cutting and obfuscation may lead to delayed or unavailable drivers, mechanical problems such as proprietary physical interface choices will never be solved with software.
Let's explore some of the proprietary hardware traps that you should watch for and try to avoid:
Computer systems generally fall into three categories of standardization: Open standards, de facto standards and embedded systems. The dominant open standard is the ATX PC platform that was introduced in 1995 as the first comprehensive rethink of IBM's original PC from 1981. The "PC" is credited with world domination thanks to its published specifications but as the saying goes, for every rule there is an exception to the rule. Not all PC's have x86 processors: DEC offered desktop Alpha system that could accept x86 or AXP processor cards. Not all x86 systems are AT/ATX: Sun's i386 line kindly offered the worst of both worlds. Or, the alternative may not be so different: The modern Macintosh is x86 PC compatible and will run non-Apple operating systems. Between these extremes, we find the more familiar death by a thousand cuts brought by vendors' subtle and blatant violations of the open standards that they claim to implement.
Looking back to before the introduction of the IBM PC, all computer platforms were essentially proprietary and incompatible with one another. The Berkeley Unix project was in fact started to help unify these distinct platforms and is still one of the most portable family of operating systems available. If successful, these proprietary platforms became de factor standards in and of themselves. Today, Sparc-based and Android-based computers make little effort to be compatible with either one another with regard to their hardware, but the ubiquity of the Internet has rendered their hardware differences irrelevant. People also vilify the Apple Macintosh for its bastardization of the ATX PC standard but it is much easier to find a replacement part for an older Macintosh that it is for virtually any older name brand PC. The same goes for finding a Macintosh power adapter while traveling – it's power interface is completely proprietary but has achieved de facto status. The Macintosh can also be thanked for creating the demand for the USB interface that help it reach the ultimate achievement of standardization: ubiquity.
Embedded systems are generally purpose-built and pay little attention to any given standard. There is however a growing ecosystem of open embedded systems like the Arduino and Papilio platforms and some day these will serve as the basis of popular consumer products and government systems. Such systems also offer the greatest potential freedom in computing given that their proprietarity is usually confined to individual integrated circuits chips, rather than the system as a whole. Reconfigurable FPGA-based systems typically use chips that are completely proprietary and require proprietary software to program, but can be programmed with completely nonproprietary CPU's, including images of legacy Unix hardware.
For every rule...
With these extremes in perspective, let's explore some violations of the ATX PC standard and some of the areas where the standard fails to assert any leadership. My recent journey that inspired this article began when I agreed to take a once high-end Sony desktop computer with a dead power supply. While the electronics and dimensions of the power supply are surely ATX-compliant, Sony took the liberty of violating all established power supply mounting guidelines. Wanting to take the ecological route, I opened up the power supply in search of a capacitor that is in obvious need of replacement. None stood out and while I would like to trace the problem with a voltage meter, I have zero time to do so.
Sony, we would all really appreciate it if you either stick to established hardware standards and form factors or give us the documentation we need to service the ones you have invented. To add insult to injury, a replacement power supply for the particular model is not available at any price. Shame on you Sony, you did not add value for either of us.
It is up to you whether you consider an entire system proprietary but here is a review of some internal components that can cause you grief.
On the topic of power supplies, I was surprised to learn that despite the well-established ATX power supply specifications in terms of both control, output and mounting, every vendor has their own proprietary backplane or series of backplanes for hot-swappable redundant power supplies. I will trust that there are some de facto standards for name brand systems but like with RAID cards, either buy your replacements up front or be prepared to not find an exact replacement when you need it most.
Using a quality single power supply and under-utilizing it is a very good start in addressing this issue. In researching the matter however, I was surprised to read that most power supplies perform most efficiently at half their rated output. Yes, you may want a 400 watt power supply for your 200 watt system.
What I would like see is a simple yet robust module that would allow two standard power supplies to work redundantly. I have found some examples of power supply daisy-chaining plus the necessary cables, but nothing with the intelligence to bypass and perhaps warn of a failed supply. I will buy such a device if you sell it and failing that, I will look into making my own. Let's hope the patent trolls aren't preventing the world from having such a device.
Not only do you want to buy your replacement RAID controllers when you first deploy a system, good luck recovering an array in the absence of the controller card that created it. The same goes for the drive mechanisms themselves – have your spares ready before disaster strikes. While its patent implications concern me, ZFS is the most promising answer to these issues I have seen to date. As I see it, a striped drive and an encrypted drive share way too much in common if you ever need to recover data from them.
To the Serial ATA International Organization's credit, there are well-defined standards for SATA and SAS cabling and a surprising level of interchangeability between their interfaces despite their ability to use the two different protocols. Unfortunately, there are about a dozen key variations of these "standard" interfaces including but not limited to internal, external and miniature variants. I am in urgent need of the less-common 8484 to 8484 "backplane" variation as I write this. One local retail store has one overpriced example but I need between three and nine of them. Online will never beat local when in a pinch and online sales are in fact driving retail to the lowest common denominator of selection and service.
Just like Hot-Swappable Power Supplies, there appear to be no standards for removable drive trays/sleds. Name brand vendors may have de facto standards but if you find an economy desktop case with "hot-swap", you should consider getting extra trays at time of purchase if you are lucky enough to have them available. I do not think that vendors even give drive trays clear part numbers and SKU's to help identify replacements. Come to think of it, I think that Sony desktop case even had proprietary internal, fixed drive sleds.
That is inexcusable. Fortunately, modern hard drives are equipped with insertable data and power interfaces and trayless solutions exist, most of which are in various increments of 5.25" drive bays. I never thought I would again want a case with as many 5.25" bays as possible but I do. All the ones I once had are long gone. Unfortunately, while hot-swap SATA backplane PCB's are relatively plentiful and affordable, no standards exist for their dimensions and mounting, or for the frames that allow for their use.
Update: A DorkbotPDX organizer directed me to the Backblaze Storage Pod project which is 45-drive chassis design that includes full SolidWorks artwork. They are using off-the-shelf CFI-B53PM port 5-drive port multipliers and they would clearly benefit from an open backplane design for both improved product availability and performance.
Not long ago, a floppy disk drive was the "small" device in a computer and had its own smaller power interface. Only fans have smaller connectors and unfortunately no standards have been set for anything smaller. I have two models of Disk On Module IDE storage devices and of course both have different power connectors. Modules like this generally include an adapter to a standard 4-pin power connector but one of mine has a cable that is hard-wired into a motherboard power supply. Nowhere in my 2176-page Allied Electronics parts catalog can I find a replacement connector to build a replacement cable with. This is one more device that will cost an administrator time, money and probably its entire usefulness because the vendor chose to use an unusual or proprietary power connector.
Who could argue with "Universal"? The Universal Serial Bus saw its first widespread adoption when its 1.1 version came out in 1998 and from 2000 onward, the USB 2.0 standard has emerged as one of the most ubiquitous and flexible communications and power standards in the history of computing. I guarantee that its inventors did not imagine its use for standardized mobile phone chargers or novelty humping dogs. The specification dictates a number of connectors but market forces have lead to our collective agreement on a select few, plus timeless PCB header pins.
The industry's arrival at a ubiquitous standard was not easy. Early USB devices were slow, unreliable and plagued by a connector Tower of Babble. We can thank USB 2.0 for resolving most of these issues and giving USB a great level of predictability, but to this day I still encounter older servers that I would like to boot from USB flash, only to find that their USB 1.1 interfaces are not up to the task. About all we can complain about with USB 2.0 is its slow speed relative to EtherNet, SATA, FireWire and now Thunderbolt. Ever looking out for our needs, the industry as responded with the USB 3.0 specification that raises USB's potential throughput to an impressive 5 Gbit/s.
That's the good news. The bad news is that the USB 3.0 standard introduces new connectors that are based on the current ones for backwards compatibility but add extra pins for the improved speed. The connectors literally look like two connectors fused together and they push backwards compatibility to a fault: there are multiple USB 3.0 connectors that serve the exact same purpose with the assumption that you might still have a mix of the previous generation of connectors. The square, D-shaped USB "B" connector is back and finally looks like a "B" thanks to the appended additional pins. Just look at the pain in its face. If EtherNet can stick with the same connector over several decades, we would appreciate if USB could do the same. "No, I don't have a spare USB 3.0 cable."
We must accept that every standard is doomed to become a legacy standard as soon as its next iteration is released or it is obsoleted by a new standard. Otherwise, modern computers would still have parallel ports, serial ports, PS/2 ports and on-board floppy interfaces. We can thank USB for superseding all of these with the ironic exception of the serial port. Unix operators have long had the option of redirecting console output to the serial port and no good USB option exists because USB drivers are often loaded late in the boot sequence. Serial interfaces are particularly useful on headless systems but the serial headers that allow for this use are now starting to disappear from motherboards. To further complicate the matter, few systems ever allowed you to configure their BIOS over a serial interface.
In an attempt to solve the "legacy" problem, Intel has started including the Low Pin Count (LPC) interface that it introduced in 1998 (!) as an end-all be-all gateway to legacy interfaces like parallel ports, PS/2 ports and even the ISA slot itself. LPC uses a seven-pin header connection and promises DMA transfers of up to 6.67 MB/s. At that speed, it could even replace 12 Mbit/s USB 1.1 should anyone so desire. Sadly, despite the standard existing for over a decade, I can only find one set of LPC devices: the Via LPC-01 and LPC-02 quad-port serial interfaces. Priced at about $45 and $65 USD, these are certainly not the replacement for a $10 serial header to DB-9 adapter I was looking for. It also remains to be seen if they can indeed be used for console redirection at boot time.
Based on these experiences, I would like to see standards bodies take leadership positions on the less obvious "glue" of computers like backplanes and drive trays considering that neither of these are distinguishing, customer-facing features. They do not set systems apart from the competition and in my humble opinion would only do so if they are distinctly nonproprietary features just like "includes USB 2.0 and 802.11n networking!" The alternative to such leadership is a set of open hardware designs that vendors are free to implement. Because these are mostly mechanical interfaces, the greatest challenge would be to get power supply vendors to use standard, interchangeable back planes. The rest of their products already conform to defined standards unless they are specifically requested to do otherwise, as was the case with some Dell Pentium II and Pentium III power supplies.
Vendors, please do not make our jobs more difficult.
Copyright © 2011 – 2014 Michael Dexter unless specified otherwise. Feedback and corrections welcome.