Specifications

22
22
Different Devices and the Transfers They Use
What happens when all of
these devices are plugged
into the USB?
Host manages the bus
bandwidth upon
enumeration. If bandwidth
is not available the host
ignores the enumeration
request and doesn’t allow
the device access.
Mouse and keyboard use
Interrupt transfers to
provide timely responses
to user input. Interrupt
provides guaranteed
maximum latency.
Scanners and printers use
bulk since they are just
sending data files. Host
allocates the bandwidth as
it becomes available.
PDA/MP3 may use bulk for
file transfer to the device. If
it is some kind of audio
playback over USB then it
will employ Isochronous
transfers to guarantee the
data for constant rate
Bulk
Bulk
Interrupt
Bulk
Interrupt
Bulk and/or
Isochronous
Note: all devices use Control transfers to
Endpoint 0 for the Enumeration process
So now that we have covered the different types of transfers used in the USB
specification how do we apply those principals to our applications? Let’s say all of
these products are plugged into the USB and you turn the power strip switch ON.
We learned that all of these devices will initialize and be ready to respond to
endpoint 0 address 0, right? Well…there is always a hub (either external or the root
hub) and within the hub spec those ports are required to be enabled to operate.
There is a standard request SetPortFeature(RESET_PORT) which enables a port.
Technically the device should not be ready for endpoint 0 address 0 until the host
resets it anyway. It works because the host will enable one port that shows an attach
event, assign an address to that device and then can move on from there to the next
port. And so on, and so on…