From http://www.semtech.com/developer/usbtech.html and  http://www.linux-usb.org/LinuxWorld2k/

Purpose:

Architecture:
Uses a serial cable for low cost.
Works at 12 Mbp/s, with a 1.5Mbp/s over unshielded wires.  USB/2.0 goes 480Mb/s!
With one high speed hub, one can have multiple low speed networks at once.
Uses a "heirarchical star" topology where the hubs are active components (maximum depth is 5)
Uses 7 bit addresses, so a maximum of 127 devices at once.
There is one special device on the network (the host); the network is NOT peer-peer.
Host can command a device to sleep.
Hosts can request a device to sleep, and allow it to wake on it's own.
Hardware:
There is no DMA and no interrupt between the device and the host CPU.
The USB hardware on the host can of course use these things
There is a layering between the USB driver and the USB commands.
Supposidly, a FIREWIRE controller has 2-3 more gates than a USB controller, and 3-5 for the device.
4 wires, +5v, +0v, twisted pair signaling.
Total power per hub is 0.5amp at 5v ... 2.5 watts
Classes:
Describe a type of device with a common set of interfaces and such
Not all obvious things got their own class
Devices:
Devices are self-describing.  They even tell their power requirements!
Descriptions can have multiple languages.
Devices can have more than one configuration, and the host picks which one it wants
Devices are a set of configurations, each one of which puts the device into a particular mode.  Only one config can be active at at time
Configurations are are a set of interfaces, each one of which offers a service and all are active at once
Interfaces are which are a set of endpoints, which are communications channels.  Each one is a single data stream.
All devices have a default control endpoint.
Communications channels:
Come in four types: Control, Bulk, Isochronous, and Interrupt.
Control endpoints handle USB control requests, such as those related to device description and configuration.
Bulk endpoints are geared to transferring large chunks of data from the device to the host.
Isochronous endpoints are for transmitting data within time constraints, such as audio data.
Interrupt endpoints are for devices whose data is interrupt driven.  They MAY NOT initiate a transfer to the host. Insted, they can be polled at a regular interval!
USB 2.0:  Bulk endpoints are 512 bytes only, control endpoints are 64 bytes only. High-speed interrupt and isochronous endpoints can have a maximum packet size ranging from 1 to 1024 bytes.
No devidce can send more than three packets per frame.
Frames
There exists a master schedule of who can transmit when.  This is called a Frame, and happens every 1ms(USB1) or 1/8ms (USB/2).
Int and Iso is allowed to consume up to 90% of each frame.
Devices can NAK a packet.
All channels are one way.  But you can have two of them if you want.
Problems
Linux will find hot-unplugable hard drives "interesting"
Suppose you have three keyboards and two mice.  Which one is "/dev/console"?
Can linux power down a device?