USB

USB is the Universal Serial Bus for connecting peripherals to a PC.

A hot swap peripheral connection scheme devised by Intel and others to reduce PC motherboard production costs. It is supported by Windows 98SE, and to later versions. Limited support from Windows 95, no longer available. Not supported by Windows NT, Windows 3, DOS. It is in some respects an update of an earlier Apple serial bus.

Peripherals available include telephones, digital cameras, modems, keyboards, mice, joysticks, most recent printers. Many embedded devices do not support USB due to software overheads. I don't know of any USB GPS, for example (2003), so don't discard your serial ports too early.

Uses a universal plug and a universal A to B cable (the A to A cables you sometimes see are wrong and not permitted). Uses a differential pair serial connection, with two additional wires to supply five volt power from the host PC or powered hub. Speeds originally were 1.5 Mb/s (3 metre cable) and 12 Mb/s (5 metre cable, due to higher quality shielding) (version 2.0 added 480 Mb/s). Original version was too slow for disk or video, but fine for peripherals.

Connecting two PCs together should not be done. It requires a specialised peripheral called a USB bridge, or USB to USB adaptor. Connecting direct via cable may short the PC power supply.

Unfortunately despite being intended as a universal connection, many digital camera manufacturers decided they should use their own custom cables. As a result, a standard USB cable doesn't fit most cameras. So much for universal!

Allows high power peripherals to draw more than 100mA from the USB host power line. Low power devices are ones that draw less than 100mA. Some devices are self powered, as are some hubs that allow multiple devices to connect. This can eliminate power cords and wall plugs for some peripherals.

PCs are USB hosts, and there is only one host, which is the master for all connected devices. Pretty much everything else is a USB slave. This means everything has to connect back to either a PC or a Hub box. A USB slave can not connect to a USB slave. This means, for example, that a USB camera can not connect to a USB printer. A USB PDA can not connect to a USB printer or a USB GPS. I have a note from 2001 that Casio claim their E200 PocketPC can run a USB printer via a provided cradle or optional PC Card unit host converter.

USB is a host oriented bus. All USB transactions are initiated by the host, although devices can provide the host with a USB script. The software overheads of USB are considerable.

USB is a packet oriented serial bus, in which the first (and possibly only) packet is always a token (control) packet. Other packets are isochronous (streaming time sensitive data not requiring error checking such as audio), bulk (large amount of data that is not time critical) and interrupt (poll devices to see if they need service).

There are various clases of USB devices. A Human Interface Device (HID) may be a mouse, joystick or keyboard. Another is monitors.

USB connections are designed to permit plugging and unplugging without powering down the device.

Arthur Hagen complains: Nice, but USB is a _serial_ bus. Every extra USB device you link up adds to the chain, increases the total length and may cause latency problems for timing critical devices. Not to mention that there's two different USB standards - OHCI (Compaq, Dell, others) and UHCI (Intel, Asus, HP, others), which doesn't always like each other much. Mix them in the "wrong" order, and you may have problems, even with "passive" devices. Just having an iPaq cradle plugged into my system caused problems for my APC USB UPSes.

Details of USB support chips are available at www.ibhdoran.com/usb_link.html. For building devices, you can ignore host (PC) chips, and consider either smart USB controllers (akin to UARTs) or go for a CPU that includes USB support. For embedded work, using Philips' I2C to USB chip is probably the least horrible approach. The USB web site is at www.usb.org

If a faster replacement port is required, and neither Ethernet nor a wireless connection is appropriate, then I believe users should look to peer to peer designs such as Firewire, as being a superior approach rather than USB.

I hate USB

I first experienced USB around 1996 on 486 motherboards. Basically it never worked worth a damn, and I ended up simply not using anything that had USB.

Nine years later, in 2004, I can't avoid USB since manufacturers have dumped the old (working) peripheral interfaces like parallel and serial. I'm still underwhelmed by USB.

I'm not the only one underimpressed. Check this Dan's Data rave.

USB external disk drive holder, with a fancy blue LED. Three different Windows 98 machines all see the contents of the hard drive as different. Partitioned on one, the partions are not detected on another. Split into smaller partitions, only two out of three partitions are seen on another. And so on. As a portable external drive, USB just wasn't workable at all. The USB external drive holder was a total waste of money.

Tried a USB to serial converter on an IBM Thinkpad R31 under Windows 98 (this is the notebook that convinced me to dump Windows XP). The USB converter totally fails to work with my PDA (the PDA however connects to exactly the same software via IrDA). The USB converter does however work with an external modem.

Tried an external USB mouse with a Macintosh PowerBook under OS X 10.3.3 When the PowerBook sleeps overnight, the mouse movement (but not the click) get disconnected. As far as I can tell, you have to unplug and replug the USB mouse to get it working again.

USB 1.1 to 2xPS/2 adapter (no brand identification) that doesn't need drivers (none supplied), with a built in power on reset and watchdog timer reset. This is intended to run a PS/2 keyboard and mouse, if your old peripherals are more comfortable than a USB equivalent. Keyboard worked with a Macintosh Powerbook. I planned to use it to run my old wireless keyboard and mouse, since Bluetooth keyboards are flakey.

Skymaster brand CUP100C USB 1.1 Printer Bridge from CX Computer, mentions only Windows computers. Worked from Macintosh Powerbook to Hewlett Packard LaserJet 5MP.

Making USB work properly still feels like polishing a turd.

Why Retain a Serial Port?

You may need a serial connection, so I believe that everyone should reject and refuse to buy any computer that does not still include a serial connection.

IEEE 1394 (Firewire)

Established as a 400 MHz hot plug bus protocol for up to 63 devices in 1995, IEEE1394 is also called iLink (by Sony), Lynx (by TI), Firewire (by Apple). It has dynamically assigned addresses, and can use a serial or a branch network for plugging in devices. Although theoretically slower than USB 2, IEEE1394 actually provides consistently higher actual speeds, as well as lower CPU loadings (provided a reasonable IEEE1394 chip is used).

IEEE1394 uses a six pin cable, with two twisted pairs of data lines, and with two power conductors. Between 8 and 30 volts are supported, at up to 1.5 A. In theory you can use a maximum 4.5 metre cable at full power, and up to 17 devices in series. In practice, you rarely see more than three or four devices in series. Some PC notebooks come with a 4 pin iLink connector which does not supply power pins. This battery saving practice is stupid and short sighted.

IEEE1394 can be used as a network connection between computers. It is substantially faster than non-Gigabit Ethernet and works well under Linux and Mac OS X, however Windows only supports IPv4. Manual IP addresses may be required, since there are routers providing DHCP for IEEE1394. Security is an issue, as the middle systems in a Firewire chain can read any data passing through them, so its use as a network should be confined to personal and small office systems.

I hope you have enjoyed www.ericlindsay.com.