1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#include "pagestart.h"
<h2>What is USB</h2>
<p>USB (Universal Serial Bus) is a simple way of connecting a variety of devices
to a computer. It has improved over the years to increase speeds and how devices
can be connected. Because it is a serial bus, there are only 4 wires in the cabling.
You can use hubs to extend your cabling or to enable plugging in multiple devices.
<h2>Interfaces</h2>
<p>Each USB device has one or more interfaces. Each interface has a type:
<h3>Interrupt</h3>
<p>This allows notification from a device to the computer. For example a cell
phone may use it to indicate there is an incoming call, or a scanner may use
it to indicate that a button has been pressed.
<h3>Bulk</h3>
<p>This is bidirectional allowing data to be sent to and from the device. BitPim
talks directly to the bulk interface on devices, or via device drivers that
talk to tbe bulk interface.
<h3>Isochronous</h3>
<p>This is used for devices where lots of data is generated, and where you
don't need 100% reliability. An example would be a webcam sending its images.
<h2>Drivers</h2>
<p>While the method of talking to devices is standardised (using USB request
blocks), each device still needs to have its data interpreted and presented
to the operating system in the correct manner.
<p>For example, a USB modem needs to look like a communications port, USB
speakers need to look like audio devices and a USB keyboard needs to look
like a keyboard.
<p>Device drivers are responsible for hooking into the right level in
the host computer and for formatting URBs and interpreting the responses.
The device drivers use the identification information to hook into the right
device.
<h2>Identification</h2>
<p>Each device is identified by a 16 bit vendor ID, and a 16 bit product ID.
By convention these are written as 4 digit hexadecimal numbers, but usually
without any sort of prefix indicating the number is hexadecimal.
<p>There are then a number of interfaces identified by type. Each one also
lists what protocol it is. For example class 7 is printer and subprotocol
2 within that is bidirectional. Some operating systems use this information
to automatically assign generic device drivers.
<!-- CONTENTS BEGIN -->
BEGIN_TOC
TOC_0
TOCITEM_0(Linux USB Setup,howto-linuxusb.htm)
TOCITEM_0(Mac USB Setup,howto-macusb.htm)
TOCITEM_0(Windows USB Setup,howto-windowsusb.htm)
TOCITEM_0(Vendor and Product ids,ref-usbids.htm)
ENDTOC_0
END_TOC
<!-- CONTENTS END -->
#include "pageend.h"
|