Universal Serial Bus: Difference between revisions

Jump to navigation Jump to search
m
no edit summary
[unchecked revision][unchecked revision]
mNo edit summary
mNo edit summary
Line 21:
=== USB 1.0 Host Controllers ===
Intel brought USB 1.0 to the market with its '''Universal Host Controller Interface''' ('''UHCI'''), while Compaq, Microsoft, and National Semiconductors did the same with their '''Open Host Controller Interface''' ('''OHCI'''). Naturally, the two interfaces are incompatible, and to make things worse, VIA Technologies licensed Intel's UHCI standard, thereby ensuring that both standards survived. Typically, an on-board chip set will contain a UHCI implementation, whereas a peripheral card typically implements the OHCI standard (but this is by no means a guarantee).
 
'''Specifications'''
* [http://download.intel.com/technology/usb/UHCI11D.pdf Universal Host Controller Interface (UHCI) Specifications]
* [http://www.o3one.org/hwdocs/usb/hcir1_0a.pdf Open Host Controller Interface (OHCI) Specifications]
 
=== USB 2.0 Host Controllers ===
Line 31 ⟶ 27:
 
The EHCI host controller only handles USB 1.0 devices if they are attached indirectly through a USB 2.0 hub. The specifics of handling USB 1.0 devices attached to a USB 2.0 hub are briefly discussed and illustrated in the [[#Hubs|hubs]] section, and in more detail in the wiki entry for [[USB Hubs]]. Note that some newer chipsets like the Intel 5-series chipsets do not have companion controllers at all and instead have internal "rate matching" hubs that all USB devices go through.
 
'''Specifications'''
* [http://www.intel.com/technology/usb/download/ehci-r10.pdf Enhanced Host Controller Interface (EHCI) Specifications] + [http://download.intel.com/technology/usb/EHCIv1-1_Addendum.pdf Addendum]
 
=== USB 3.0 Host Controllers ===
Line 590 ⟶ 583:
 
==== Function/Host Response Circumstances ====
This section describes the functional circumstances that cause the host or a function to issue an expected response, no response, or certain handshake packet responses. The tables in this section are taken and slightly modified for clarity from the USB 2.0 Specificationsspecifications, section 8.4.6. Dashes denote a "don't care."
 
===== Function Response to IN Transactions =====
Line 1,474 ⟶ 1,467:
Some descriptors contain fields which specify an index of a STRING descriptor, but it is optional for a device to support STRING descriptors. If a device does not support STRING descriptors, then all fields which reference an index of a STRING descriptor should be reset to zero. Thus, a value of zero in any field that is meant to supply an index of a STRING descriptor indicates that no such STRING descriptor is available.
 
If the second byte of a descriptor identifies that descriptor as one of the standard USB descriptors, but the first byte of that descriptor specifies a length less than the lengths defined in the USB 2.0 Specificationsspecifications (and, transitively, here), then the descriptor should be rejected by the host. If the length field reports that the descriptor is longer than expected, then the extra data should be ignored, but still considered part of the descriptor (this is important when the device is returning multiple descriptors, as is the case when the host requests a CONFIGURATION descriptor).
 
If class- or vendor-specific descriptors use the same format as standard descriptors (i.e, the two mandatory bytes at the beginning of the descriptor), then the class- or vendor-specific descriptors are interleaved within the results when the host requests a CONFIGURATION descriptor. Otherwise, the class- or vendor-specific descriptors are accessed by passing a class- or vendor-specific descriptor type in a GET_DESCRIPTOR request.
 
The remainder of this section serves to catalog the standard USB device descriptors and very closely mirrors section 9.6 of the USB 2.0 Specificationsspecifications. These descriptor definitions supplement the [[#GET_DESCRIPTOR|GET_DESCRIPTOR]] request.
 
==== DEVICE ====
Line 2,057 ⟶ 2,050:
=== Links ===
* [http://www.usb.org/home USB.org]
* [http://www.usb.org/developers/docs/usb_20_122909-2usb_20_110512.zip USB Universal Serial Bus Revision 2.0 SpecificationsSpecification]
* [http://www.usb.org/developers/docs/usb_30_spec_122012.zip Univseral Serial Bus Revision 3.0 Specification]
* [http://www.usb.org/developers/wusb/wusb1_1_20100910.zip Wireless USB Specification Revision 1.1]
* [http://www.kernel.org/ The Linux kernel] (though things tends to be confusing there, and you have to be careful with educating yourself from Linux sources if your project isn't GPL'ed).
* [http://www.beyondlogic.org/usbnutshell/usb1.htm USB in a Nutshell] may also interest you. It looks like a really good tutorial giving all the required knowledge to understand any other USB documentation/source code in a couple of HTML pages ...
* [http://www.usb.org/developers/docs/USB_LANGIDs.pdf Currently accepted LANGIDs]
* '''Host Controller Documentation:'''
** [http://www.intel.com/technology/usb/download/ehci-r10.pdf EHCI Specifications] + [http://download.intel.com/technology/usb/EHCIv1-1_Addendum.pdf Addendum]
** [http://download.intel.com/technology/usb/UHCI11D.pdf UHCI Specifications]
** [http://www.o3one.org/hwdocs/usb/hcir1_0a.pdf OHCI Specifications]
 
=== Forum Topics ===
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.

Navigation menu