|
|
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:
- It is a point-to-point connection, one cable running from your PC to each serial device.
- 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.
- 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?
- Low bandwidth.
- No plug-and-play.
Now... which of these problems did USB solve?
- 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.
- 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.
- 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.
- 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.
- 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):
- 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.
- 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.
- 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?
- 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:
- 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?
- 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
|
|
|