Why USB sucks
12/2005


Before I start, here is an article on USB. I find it humorous that it takes 30 pages to explain USB "in a nutshell".

Eons ago, someone (or something) invented the RS-232 serial interface. Noteworthy, since it was later included in the early PCs and to this day persists on most (but not all) PC motherboards. However, the "legacy" COM port (and its big brother, the parallel port) are being slowly being designed out of existence on the PC and are being replaced by USB. "So what?!" you say?... lets take a closer look:

The RS-232 ports had problems that annoyed its users:
  1. It is a point-to-point connection, one cable running from your PC to each serial device.

  2. Connectors with excess number of pins, perceived as big and clunky. Certainly for the original 25-pin connector this was very true. The 9-pin connector is better, but everyone knows that to run RS-232 you really only need 3 pins.

  3. A profusion of gender changers, null modem cables, and adapters, coupled with a perplexing choice of baud rates, stop bits, flow control, etc. No protocol layers. Who among us that has worked extensively with RS-232 hasn't spent a long session fumbling with cable combinations and baud configurations searching for that magic combination that will get the two devices to talk to each other?

  4. Low bandwidth.

  5. No plug-and-play.

Now... which of these problems did USB solve?
  1. One pro-USB wank wrote an article (sorry... lost the link to it) in which he claims the potential for reducing the number of cables when going from RS-232 to USB. Lets review the facts: For each USB device, you need a cable from the device to the host PC... if your host PC doesn't have enough USB ports, then you need a hub. Which is to say you need a hub, and another cable to run from the hub to the host PC (or yet another hub)... Less cables? do the math yourself. I suppose what is really meant, is that there are less cables running to the PC. But remember, it comes at the cost of having to clutter up your desk with hubs and extra cables to those hubs. Also, if you want to run a device over 5 meters from the PC, you need to splice in some hubs. Score 1 for RS-232.

  2. USB connecters are slightly more compact than DB9 connectors. However, the USB connectors have no locking mechanism. This is a mixed bag. Many users will appreciate the ability to yank their USB memory stick from the fronts of their PCs, but the same users will scream in frustration when they realize their USB mouse has been inadvertently unplugged from the back of the computer because it wasn't locked into place.

  3. The USB connector ends (type A for upstream, type B for downstream) are easily discernable and unambiguous. However, there are now multiple types of B connectors, the normal type B first introduced, and the mini B connector made popular by things like USB digital cameras. Guess what... now I have a bunch of USB cables that are not interchangeable. I still haven't figured (read: I am too lazy to look into it) what USB ON-THE-GO will do to the cable scene... looks like gender changers and converters all over again. An imperfect solution to RS-232's problems at best.

  4. OK... USB has better bandwidth than RS-232. But take a close look at how the bandwidth is divided amongst the devices and take into account how the limit on packet sizes is applied, and on the latencies imposed by the USB interface. You will see that things are not as good as they seem.

  5. Plug-and-play? This has to be the biggest hoax ever perpetrated by the computing industry. OK... for a few select USB devices, such as mouses, keyboards, and flash drives, the user truly can plug-and-play. But for the vast majority of devices, you had better have your driver disk handy and be prepared for the real possibility of problems during the install. In fact, I own a LinkSys wireless-G USB-to-network adapter. The instructions in big bold letters implore the user to install the driver first before they can dare to plug the hardware in. That's plug and play? What a joke!

Not only did USB fail to cure most of original problems with the COM ports, it actually made things much, much worse for developers (i.e. the engineers):
  1. PC-centric asymmetry: USB touts it asymmetry. The claim is, by lumping the computational burden onto the host controller (i.e. the PC), USB devices can be made more cheaply. Yet, time after time, I have consistently seen the cost of USB-based products exceed that of comparable parallel port and serial port based products. For instance, the USB dongles I buy are almost twice the cost of parallel port dongles from the same vendor. Furthermore, the cost of implementing a host controller is so prohibitive that only big companies can afford it. Good luck getting two devices to talk to each other. I guess USB on-the-go is supposed to fix this, but I haven't seen anyone with the balls to try it yet.

  2. Cost of vendor ID: $1500 just to buy a vendor ID? You've got to be kidding me. Sure, the cost per device is negligible if you sell a few million units, but there are many low volume products (again, usually of interest to the engineering/scientific community) that can be negatively impacted by such an expenditure. Also note that the vendor ID is only two bytes. Let me see... $1500 * 65536 is a little over 98 million dollars. Hey!, pay me 98 million to maintain a list and I sure wouldn't care if I ran out of numbers.

  3. Driver development: Years ago I wrote piece of code to use COM ports on the PC (using calls to library functions provided with the Visual C++ compiler). This code can be compiled into user mode applications, and has worked rock-solid in all windows platforms (95, 98, NT, 2000, XP, Vista, and 7) without change!. Compare that to the effort required to write and install (yet alone debug!) a USB driver for windows. Mercifully, Microsoft only charges $15 for the DDK CD, but what a royal pain it is to even get their canned bulk mode USB driver up and running (yet alone to understand it). Serial has a clean API, Ethernet does too (ala sockets), why doesn't USB?

  4. Documentation: The USB rev 1.1 specification is over 300 pages long. Another drain on the developer's time.

I note that more than a few chip companies have created USB-to-serial bridges (with accompanying drivers). This is a sure sign of USB's failure. Which isn't to say that USB won't thrive. The marketing types that insist on using USB's half-assed technology simply don't care about the hidden development costs and future problems. To them, there is only the here and the now. I also note that just about every microprocessor with integrated peripherals have one or more built-in UARTs. Very few processors have built-in USB.

Before I close, I will say one nice thing about USB... bus power, even though it is not much, it is sure good to have a 100mA to play with.

So, in conclusion, USB sucks, big-time. Industry would've been better off building on and improving existing communication ports rather than dumping them in favor of USB.



NOTE: 6/2010: A loyal(?) reader speaks out!

Jesus Christ! Your article is 5 years old, but still valid!

USB summary:
  1. logically it's a serial bus. And it sucks: higher latency, bandwith division, synchro, complex protocol etc. Any benefit of common bus, if communication is PC-centric anyway?
  2. physically it became a point-to-point bus (PC-centric)! Any benefit comparing to RS-232? This sucks for users (higher costs, bunch of cables arround the destop), but is good for cable manufacturers ;)
Do You remember first devices with USB bus connected in daisy-chain (eg. PC - printer - scanner)? They dissapeared fast... Why? That made a sense.

I agree that power supply is the only good about the Universally Sucking Bus... You can publish my comments on Your website...

Greets

L. C. from Poland

 
     

   
   

Copyright © 2007 - All rights reserved