`
`Feature selectors are used when enabling or setting features, such as remote wakeup, specific to a device,
`interface, or endpoint. The values for the feature selectors are given in Table 9-6.
`
`Table 9-6. Standard Feature Selectors
`
`Feature Selector
`
`Recipient
`
`Value
`
`DEVICE_REMOTE_WAKEUP
`
`ENDPOINT _HALT
`
`TEST_MODE
`
`Device
`
`Endpoint
`
`Device
`
`1
`
`0
`
`2
`
`If an unsupported or invalid request is made to a USB device, the device responds by returning ST ALL in
`the Data or Status stage of the request. If the device detects the error in the Setup stage, it is preferred that
`the device returns ST ALL at the earlier of the Data or Status stage. Receipt of an unsupported or invalid
`request does NOT cause the optional Halt feature on the control pipe to be set. If for any reason, the device
`becomes unable to communicate via its Default Control Pipe due to an error condition, the device must be
`reset to clear the condition and restart the Default Control Pipe.
`
`9.4.1 Clear Feature
`This request is used to clear or disable a specific feature.
`
`bmRequestType
`
`bRequest
`
`wValue
`
`wlndex
`
`wLength
`
`Data
`
`000000008
`000000018
`000000108
`
`CLEAR_FEATURE
`
`Feature
`Selector
`
`Zero
`Interface
`Endpoint
`
`Zero
`
`None
`
`Feature selector values in wValue must be appropriate to the recipient. Only device feature selector values
`may be used when the recipient is a device, only interface feature selector values may be used when the
`recipient is an interface, and only endpoint feature selector values may be used when the recipient is an
`endpoint.
`
`Refer to Table 9-6 for a definition of which feature selector values are defined for which recipients.
`
`A ClearFeature() request that references a feature that cannot be cleared, that does not exist, or that
`references an interface or endpoint that does not exist, will cause the device to respond with a Request
`Error.
`
`If wLength is non-zero, then the device behavior is not specified.
`
`Default state:
`
`Device behavior when this request is received while the device is in the Default state
`is not specified.
`
`Address state:
`
`This request is valid when the device is in the Address state; references to interfaces
`or to endpoints other than endpoint zero shall cause the device to respond with a
`Request Error.
`
`Configured state:
`
`This request is valid when the device is in the Configured state.
`
`Note: The Test_ Mode feature cannot be cleared by the ClearFeature() request.
`
`252
`
`ZTE/SAMSUNG 1008-0280
`IPR2018-00111
`
`
`
`Universal Serial Bus Specification Revision 2.0
`
`9.4.2 Get Configuration
`This request returns the current device configuration value.
`
`bmRequestType
`
`bRequest
`
`wValue
`
`wlndex
`
`wLength
`
`Data
`
`100000008
`
`GET _CONFIGURATION
`
`Zero
`
`Zero
`
`One
`
`Configuration
`Value
`
`If the returned value is zero, the device is not configured.
`
`lfwValue, wfndex, or wLength are not as specified above, then the device behavior is not specified.
`
`Default state:
`
`Device behavior when this request is received while the device is in the Default state
`is not specified .
`
`Address state:
`
`The value zero must be returned.
`
`Configured state:
`
`The non-zero bConfigurationValue of the current configuration must be returned.
`
`9.4.3 Get Descriptor
`This request returns the specified descriptor ifthe descriptor exists.
`
`bmRequestType
`
`bRequest
`
`wValue
`
`wind ex
`
`wLength
`
`Data
`
`100000008
`
`GET _DESCRIPTOR
`
`Descriptor
`Type and
`Descriptor
`Index
`
`Zero or
`Language ID
`(refer to
`Section 9.6.7)
`
`Descriptor
`Length
`
`Descriptor
`
`The wValue field specifies the descriptor type in the high byte (refer to Table 9-5) and the descriptor index
`in the low byte. The descriptor index is used to select a specific descriptor (only for configuration and
`string descriptors) when several descriptors of the same type are implemented in a device. For example, a
`device can implement several configuration descriptors. For other standard descriptors that can be retrieved
`via a GetDescriptor() request, a descriptor index of zero must be used. The range of values used for a
`descriptor index is from 0 to one less than the number of descriptors of that type implemented by the device.
`
`The wfndex field specifies the Language ID for string descriptors or is reset to zero for other descriptors.
`The wlength field specifies the number of bytes to return. lf the descriptor is longer than the wlength field,
`only the initial bytes of the descriptor are returned. If the descriptor is shorter than the wLength field, the
`device indicates the end of the control transfer by sending a short packet when further data is requested. A
`short packet is defined as a packet shorter than the maximum payload size or a zero length data packet (refer
`to Chapter 5).
`
`T he standard request to a device supports three types of descriptors: device (also device_ qualifier),
`configuration (also other_speed_configuration), and string. A high-speed capable device supports the
`device_ qualifier descriptor to return information about the device for the speed at which it is not operating
`(including wMaxPacketSize for the default endpoint and the number of configurations for the other speed).
`The other_speed_configuration returns information in the same structure as a configuration descriptor, but
`for a configuration if the device were operating at the other speed. A request for a configuration descriptor
`returns the configuration descriptor, all interface descriptors, and endpoint descriptors for all of the
`
`253
`
`ZTE/SAMSUNG 1008-0281
`IPR2018-00111
`
`
`
`Universal Serial Bus Specification Revision 2.0
`
`interfaces in a single request. The first interface descriptor follows the configuration descriptor. The
`endpoint descriptors for the first interface follow the first interface descriptor. If there are additional
`interfaces, their interface descriptor and endpoint descriptors follow the first interface's endpoint
`descriptors. Class-specific and/or vendor-specific descriptors follow the standard descriptors they extend or
`modify.
`
`All devices must provide a device descriptor and at least one configuration descriptor. If a device does not
`support a requested descriptor, it responds with a Request Error.
`
`Default state:
`
`This is a valid request when the device is in the Default state.
`
`Address state:
`
`This is a valid request when the device is in the Address state.
`
`Configured state:
`
`This is a valid request when the device is in the Configured state.
`
`9.4.4 Get Interface
`This request returns the selected alternate setting for the specified interface.
`
`bmRequestType
`
`bRequest
`
`wValue
`
`wlndex
`
`wlength
`
`Data
`
`100000018
`
`GET_INTERFACE
`
`Zero
`
`Interface
`
`One
`
`Alternate
`Setting
`
`Some USB devices have configurations with interfaces that have mutually exclusive settings. This request
`allows the host to determine the currently selected alternate setting.
`
`If w Value or wLength are not as specified above, then the device behavior is not specified.
`
`lfthe interface specified does not exist, then the device responds with a Request Error.
`
`Default state:
`
`Device behavior when this request is received while the device is in the Default state
`is not specified.
`
`Address state:
`
`A Request Error response is given by the device.
`
`Configured state:
`
`This is a valid request when the device is in the Configured state.
`
`9.4.5 Get Status
`This request returns status for the specified recipient.
`
`bmRequestType
`
`bRequest
`
`wValue
`
`wlndex
`
`wlength
`
`Data
`
`100000008
`100000018
`100000108
`
`GET_STATUS
`
`Zero
`
`Zero
`Interface
`Endpoint
`
`Two
`
`Device,
`Interface, or
`Endpoint
`Status
`
`The Recipient bits of the bmRequestType field specify the desired recipient. The data returned is the current
`status of the specified recipient.
`
`254
`
`ZTE/SAMSUNG 1008-0282
`IPR2018-00111
`
`
`
`Universal Serial Bus Specification Revision 2.0
`
`IfwValue or wlength are not as specified above, or ifwlndex is non-zero for a device status request, then
`the behavior of the device is not specified.
`
`If an interface or an endpoint is specified that does not exist, then the device responds with a Request Error.
`
`Default state:
`
`Device behavior when this request is received while the device is in the Default state
`is not specified.
`
`Address state:
`
`[fan interface or an endpoint other than endpoint zero is specified, then the device
`responds with a Request Error.
`
`Configured state:
`
`lf an interface or endpoint that does not exist is specified, then the device responds
`with a Request Error.
`
`A GetStatus() request to a device returns the information shown in Figure 9-4.
`
`07
`
`I 0 6
`
`I 05
`
`I 04
`
`I 03
`
`I 0 2
`
`Reserved (Reset to zero)
`
`01 5
`
`I 014
`
`I 013
`
`I 012 I 0 11
`
`I 010
`
`Reserved (Reset to zero)
`
`0 1
`
`DO
`
`Remote
`Wakeup
`
`Self
`Powered
`
`09
`
`08
`
`Figure 9-4. Information Returned by a GetStatusO Request to a Device
`
`The Self Powered field indicates whether the device is currently self-powered. If DO is reset to zero, the
`device is bus-powered. IfDO is set to one, the device is self-powered. The Self Powered field may not be
`changed by the SetFeature() or ClearFeature() requests.
`
`The Remote Wakeup field indicates whether the device is currently enabled to request remote wakeup. The
`default mode for devices that support remote wakeup is disabled. IfDl is reset to zero, the ability of the
`device to signal remote wakeup is disabled. If D 1 is set to one, the abi lity of the device to signal remote
`wakeup is enabled. The Remote Wakeup field can be modified by the SetFeature() and ClearFeature()
`requests using the DEVICE_ REMOTE_ WAKEUP feature selector. This field is reset to zero when the
`device is reset.
`
`A GetStatus() request to an interface returns the information shown in Figure 9-5.
`
`0 7
`
`06
`
`05
`
`04
`
`03
`
`02
`
`01
`
`DO
`
`Reserved (Reset to zero)
`
`015
`
`0 14
`
`013
`
`0 12
`
`011
`
`010
`
`0 9
`
`0 8
`
`Reserved (Reset to zero)
`
`Figure 9-5. Information Returned by a GetStatus() Request to an Interface
`
`255
`
`ZTE/SAMSUNG 1008-0283
`IPR2018-00111
`
`
`
`Universal Serial Bus Specification Revision 2.0
`
`A GetStatus() request to an endpoint returns the information shown in Figure 9-6.
`
`D7
`
`06
`
`D5
`
`D4
`
`D3
`
`D2
`
`D1
`
`Reserved (Reset to zero)
`
`D15
`
`D14
`
`D13
`
`D12
`
`D11
`
`D10
`
`D9
`
`DO
`
`Halt
`
`DB
`
`Reserved (Reset to zero)
`
`Figure 9-6. Information Returned by a GetStatusO Request to an Endpoint
`
`The Halt feature is required to be implemented for all interrupt and bulk endpoint types. If the endpoint is
`currently halted, then the Halt feature is set to one. Otherwise, the Halt feature is reset to zero. The Halt
`feature may optionally be set with the Setfeature(ENDPOINT _HALT) request. When set by the
`SetFeature() request, the endpoint exhibits the same stall behavior as ifthe field had been set by a hardware
`condition. If the condition causing a halt has been removed, clearing the Halt feature via a
`ClearFeature(ENDPOINT _HALT) request results in the endpoint no longer returning a STALL. For
`endpoints using data toggle, regardless of whether an endpoint has the Halt feature set, a
`ClearFeature(ENDPOINT_HALT) request always results in the data toggle being reinitialized to DATAO.
`The Halt feature is reset to zero after either a SetConfiguration() or SetJnterface() request even ifthe
`requested configuration or interface is the same as the current configuration or interface.
`
`It is neither required nor recommended that the Halt feature be implemented for the Default Control Pipe.
`However, devices may set the Halt feature of the Default Control Pipe in order to reflect a functional error
`condition. If the feature is set to one, the device will return STALL in the Data and Status stages of each
`standard request to the pipe except GetStatus(), SetFeature{), and ClearFeature() requests. The device need
`not return ST ALL for class-specific and vendor-specific requests.
`
`9.4.6 Set Address
`This request sets the device address for all future device accesses.
`
`bmRequestType
`
`bRequest
`
`wValue
`
`wlndex
`
`wLength
`
`Data
`
`000000008
`
`SET_ADDRESS
`
`Device
`Address
`
`Zero
`
`Zero
`
`None
`
`The wValue field specifies the device address to use for all subsequent accesses.
`
`As noted elsewhere, requests actually may result in up to three stages. In the first stage, the Setup packet is
`sent to the device. In the optional second stage, data is transferred between the host and the device. In the
`final stage, status is transferred between the host and the device. The direction of data and status transfer
`depends on whether the host is sending data to the device or the device is sending data to the host. The
`Status stage transfer is always in the opposite direction of the Data stage. Ifthere is no Data stage, the
`Status stage is from the device to the host.
`
`Stages after the initial Setup packet assume the same device address as the Setup packet. The USB device
`does not change its device address until after the Status stage of this request is completed successfully. Note
`that this is a difference between this request and all other requests. For all other requests, the operation
`indicated must be completed before the Status stage.
`
`If the specified device address is greater than 127, or ifwlndex or wLength are non-zero, then the behavior
`of the device is not specified.
`
`256
`
`ZTE/SAMSUNG 1008-0284
`IPR2018-00111
`
`
`
`Universal Serial Bus Specification Revision 2.0
`
`Device response to SetAddressO with a value of 0 is undefined.
`
`Default state:
`
`If the address specified is non-zero, then the device shall enter the Address state;
`otherwise, the device remains in the Default state (this is not an error condition).
`
`Address state:
`
`If the address specified is zero, then the device shall enter the Default state;
`otherwise, the device remains in the Address state but uses the newly-specified
`address.
`
`Configured state:
`
`Device behavior when this request is received while the device is in the Configured
`state is not specified.
`
`9.4.7 Set Configuration
`This request sets the device configuration.
`
`bmRequestType
`
`bRequest
`
`wValue
`
`wlndex wlength
`
`Data
`
`000000008
`
`SET_ CONFIGURATION Configuration Value
`
`Zero
`
`Zero
`
`None
`
`The lower byte of the wValue field specifies the desired configuration. This configuration value must be
`zero or match a configuration value from a configuration descriptor. If the configuration value is zero, the
`device is placed in its Address state. The upper byte of the wValue field is reserved.
`
`Ifwlndex, wlength, or the upper byte ofwValue is non-zero, then the behavior of this request is not
`specified.
`
`Default state:
`
`Device behavior when this request is received while the device is in the Default state
`is not specified.
`
`Address state:
`
`If the specified configuration value is zero, then the device remains in the Address
`state. If the specified configuration value matches the configuration value from a
`configuration descriptor, then that configuration is selected and the device enters the
`Configured state. Otherwise, the device responds with a Request Error.
`
`Configured state:
`
`If the specified configuration value is zero, then the device enters the Address state.
`If the specified configuration value matches the configuration value from a
`configuration descriptor, then that configuration is selected and the device remains in
`the Configured state. Otherwise, the device responds with a Request Error.
`
`9.4.8 Set Descriptor
`This request is optional and may be used to update existing descriptors or new descriptors may be added.
`
`bmRequestType
`
`bRequest
`
`wValue
`
`wlndex
`
`wlength
`
`Data
`
`000000008
`
`SET _DESCRIPTOR
`
`Descriptor
`Type and
`Descriptor
`Index
`
`Language ID
`(refer to
`Section 9.6.7)
`or zero
`
`Descriptor
`Length
`
`Descriptor
`
`257
`
`ZTE/SAMSUNG 1008-0285
`IPR2018-00111
`
`
`
`Universal Serial Hus Specification Revision 2.0
`
`The wValue field specifies the descriptor type in the high byte (refer to Table 9-5) and the descriptor index
`in the low byte. The descriptor index is used to select a specific descriptor (only for configuration and string
`descriptors) when several descriptors of the same type are implemented in a device. For example, a device
`can implement several configuration descriptors. For other standard descriptors that can be set via a
`SetDescriptorQ request, a descriptor index of zero must be used. The range of values used for a descriptor
`index is from 0 to one less than the number of descriptors of that type implemented by the device.
`
`The wlndex field specifies the Language ID for string descriptors or is reset to zero for other descriptors.
`The wLength field specifies the number of bytes to transfer from the host to the device.
`
`The only allowed values for descriptor type are device, configuration, and string descriptor types.
`
`If this request is not supported, the device will respond with a Request Error.
`
`Default state:
`
`Device behavior when this request is received while the device is in the Default state
`is not specified.
`
`Address state:
`
`If supported, this is a valid request when the device is in the Address state.
`
`Configured state:
`
`If supported, this is a valid request when the device is in the Configured state.
`
`9.4.9 Set Feature
`This request is used to set or enable a specific feature.
`
`bmRequestType
`
`bRequest
`
`wValue
`
`wlndex
`
`wLength
`
`Data
`
`000000008
`000000018
`000000108
`
`SET_FEATURE
`
`Feature
`Selector
`
`Test Selector
`
`Zero
`
`None
`
`Zero
`Interface
`Endpoint
`
`Feature selector values in wValue must be appropriate to the recipient. Only device feature selector values
`may be used when the recipient is a device; only interface featu re selector values may be used when the
`recipient is an interface, and only endpoint feature selector values may be used when the recipient is an
`endpoint.
`
`Refer to Table 9-6 for a definition of which feature selector values are defined for which recipients.
`
`The TEST_MODE feature is only defined for a device recipient (i.e., bmRequestType = 0) and the lower
`byte ofwlndex must be zero. Setting the TEST_MODE feature puts the device upstream facing port into
`test mode. The device will respond with a request error if the request contains an invalid test selector. The
`transition to test mode must be complete no later than 3 ms after the completion of the status stage of the
`request. The transition to test mode of an upstream facing port must not happen until after the status stage
`of the request. The power to the device must be cycled to exit test mode of an upstream facing port of a
`device. See Section 7.1.20 for definitions of each test mode. A device must support the TEST_MODE
`feature when in the Default, Address or Configured high-speed device states.
`
`A SetFeatureO request that references a feature that cannot be set or that does not exist causes a ST ALL to
`be returned in the Status stage of the request.
`
`258
`
`ZTE/SAMSUNG 1008-0286
`IPR2018-00111
`
`
`
`Universal Serial Bus Specification Revision 2.0
`
`Table 9-7. Test Mode Selectors
`
`Value
`
`Description
`
`OOH
`
`01H
`
`02H
`
`03H
`
`04H
`
`05H
`
`Reserved
`
`Test_J
`
`Test_K
`
`Test_SEO_NAK
`
`Test_Packet
`
`Test_Force_Enable
`
`06H-3FH
`
`Reserved for standard test selectors
`
`3FH-BFH
`
`Reserved
`
`COH-FFH
`
`Reserved for vendor-specific test modes.
`
`If the feature selector is TEST_MODE, then the most significant byte of wlndex is used to specify the
`specific test mode. The recipient of a Setfeature(TEST_MODE .. . ) must be the device; i.e., the lower byte
`of wfndex must be zero and the bmRequestType must be set to zero. The device must have its power cycled
`to exit test mode. The valid test mode selectors are listed in Table 9-7. See Section 7.1.20 for more
`information about the specific test modes.
`
`If wLength is non-zero, then the behavior of the device is not specified.
`
`If an endpoint or interface is specified that does not exist, then the device responds with a Request Error.
`
`Default state:
`
`A device must be able to accept a SetFeature(TEST_MODE, TEST_SELECTOR)
`request when in the Default State. Device behavior for other SetFeature requests
`while the device is in the Default state is not specified.
`
`Address state:
`
`If an interface or an endpoint other than endpoint zero is specified, then the device
`responds with a Request Error.
`
`Configured state:
`
`This is a valid request when the device is in the Configured state.
`
`9.4.10 Set Interface
`This request allows the host to select an alternate setting for the specified interface.
`
`bmRequestType
`
`bRequest
`
`wValue
`
`wlndex
`
`wlength
`
`Data
`
`000000018
`
`SET_INTERFACE
`
`Alternate
`Setting
`
`Interface
`
`Zero
`
`None
`
`Some USB devices have configurations with interfaces that have mutually exclusive settings. This request
`allows the host to select the desired alternate setting. If a device only supports a default setting for the
`specified interface, then a STALL may be returned in the Status stage of the request. This request cannot be
`used to change the set of configured interfaces (the SetConfiguration() request must be used instead).
`
`If the interface or the alternate setting does not exist, then the device responds with a Request Error. If
`wLength is non-zero, then the behavior of the device is not specified.
`
`259
`
`ZTE/SAMSUNG 1008-0287
`IPR2018-00111
`
`
`
`Universal Serial Bus Specification Revision 2.0
`
`Default state:
`
`Device behavior when this request is received while the device is in the Default state
`is not specified.
`
`Address state:
`
`The device must respond with a Request Error.
`
`Configured state:
`
`This is a valid request when the device is in the Configured state.
`
`9.4.11 Synch Frame
`This request is used to set and then report an endpoint' s synchronization frame.
`
`bmRequestType
`
`bRequest
`
`wValue
`
`wlndex
`
`wlength
`
`Data
`
`100000108
`
`SYNCH_FRAME
`
`Zero
`
`Endpoint
`
`Two
`
`Frame
`Number
`
`When an endpoint supports isochronous transfers, the endpoint may also require per-frame transfers to vary
`in size according to a specific pattern. The host and the endpoint must agree on which frame the repeating
`pattern begins. The number of the frame in which the pattern began is returned to the host.
`
`If a high-speed device supports the Synch Frame request, it must internally synchronize itself to the zeroth
`microframe and have a time notion of classic frame. Only the frame number is used to synchronize and
`reported by the device endpoint (i.e., no microframe number). The endpoint must synchronize to the zeroth
`microframe.
`
`This value is only used for isochronous data transfers using implicit pattern synchronization. IfwValue is
`non-zero or wLength is not two, then the behavior of the device is not specified.
`
`If the specified endpoint does not support this request, then the device will respond with a Request Error.
`
`Default state:
`
`Device behavior when this request is received while the device is in the Default state
`is not specified.
`
`Address state:
`
`The device shall respond with a Request Error.
`
`Configured state:
`
`This is a valid request when the device is in the Configured state.
`
`9.5 Descriptors
`USB devices report their attributes using descriptors. A descriptor is a data structure with a defined format.
`Each descriptor begins with a byte-wide field that contains the total number of bytes in the descriptor
`followed by a byte-wide field that identifies the descriptor type.
`
`Using descriptors allows concise storage of the attributes of individual configurations because each
`configuration may reuse descriptors or portions of descriptors from other configurations that have the same
`characteristics. In this manner, the descriptors resemble individual data records in a relational database.
`
`Where appropriate, descriptors contain references to string descriptors that provide displayable information
`describing a descriptor in human-readable form. The inclusion of string descriptors is optional. However,
`the reference fields within descriptors are mandatory. If a device does not support string descriptors, string
`reference fields must be reset to zero to indicate no string descriptor is available.
`
`If a descriptor returns with a value in its length field that is less than defined by this specification, the
`descriptor is invalid and should be rejected by the host. If the descriptor returns with a value in its length
`
`260
`
`ZTE/SAMSUNG 1008-0288
`IPR2018-00111
`
`
`
`Universal Serial Bus Specification Revision 2.0
`
`field that is greater than defined by this specification, the extra bytes are ignored by the host, but the next
`descriptor is located using the length returned rather than the length expected.
`
`A device may return class- or vendor-specific descriptors in two ways:
`
`1. If the class or vendor specific descriptors use the same fonnat as standard descriptors (e.g., start with a
`length byte and followed by a type byte), they must be returned interleaved with standard descriptors in
`the configuration information returned by a GetDescriptor(Configuration) request. In this case, the
`class or vendor-specific descriptors must follow a related standard descriptor they modify or extend.
`
`2. If the class or vendor specific descriptors are independent of configuration information or use a non(cid:173)
`standard format, a GetDescriptor() request specifying the class or vendor specific descriptor type and
`index may be used to retrieve the descriptor from the device. A class or vendor specification will
`define the appropriate way to retrieve these descriptors.
`
`9.6 Standard USB Descriptor Definitions
`The standard descriptors defined in this specification may only be modified or extended by revision of the
`Universal Serial Bus Specification.
`
`Note: An extension to the USB 1.0 standard endpoint descriptor has been published in Device Class
`Specification for Audio Devices Revision 1.0. This is the only extension defined outside USB Specification
`that is allowed. Future revisions of the USB Specification that extend the standard endpoint descriptor will
`do so as to not conflict with the extension defined in the Audio Device Class Specification Revision 1.0.
`
`9.6.1 Device
`A device descriptor describes general information about a USB device. It includes information that applies
`globally to the device and all of the device's configurations. A USB device has only one device descriptor.
`
`A high-speed capable device that has different device information for full-speed and high-speed must also
`have a device_qualifier descriptor (see Section 9.6.2).
`
`The DEVICE descriptor of a high-speed capable device has a version number of2.0 (0200H). If the device
`is full-speed only or low-speed only, this version number indicates that it will respond correctly to a request
`for the device_qualifier desciptor (i.e., it will respond with a request error).
`
`The bcdUSB field contains a BCD version number. The value of the bcdUSB field is OxJJMN for version
`JJ.M .N (JJ - major version number, M - minor version number, N - sub-minor version number), e.g.,
`version 2.1.3 is represented with value Ox0213 and version 2.0 is represented with a value of Ox0200.
`
`The bNumConfigurations field indicates the number of configurations at the current operating speed.
`Configurations for the other operating speed are not included in the count. If there are specific
`configurations of the device for specific speeds, the bNumConfigurations field only reflects the number of
`configurations for a single speed, not the total number of configurations for both speeds.
`
`If the device is operating at high-speed, the bMaxPacketSizeO field must be 64 indicating a 64 byte
`maximum packet. High-speed operation does not allow other maximum packet sizes for the control
`endpoint (endpoint 0).
`
`All USB devices have a Default Control Pipe. The maximum packet size of a device's Default Control Pipe
`is described in the device descriptor. Endpoints specific to a configuration and its interface(s) are described
`in the configuration descriptor. A configuration and its interface(s) do not include an endpoint descriptor
`for the Default Control Pipe. Other than the maximum packet size, the characteristics of the Default
`Control Pipe are defined by this specification and are the same for all USB devices.
`
`The bNumConfigurations field identifies the number of configurations the device supports. Table 9-8 shows
`the standard device descriptor.
`
`261
`
`ZTE/SAMSUNG 1008-0289
`IPR2018-00111
`
`
`
`Universal Serial Bus Specification Revision 2.0
`
`Table 9-8. Standard Device Descriptor
`
`Offset
`
`Field
`
`Size
`
`Value
`
`Description
`
`0
`
`1
`
`2
`
`bLength
`
`bDescriptorType
`
`bcdUSB
`
`1
`
`1
`
`2
`
`Number
`
`Size of this descriptor in bytes
`
`Constant
`
`DEVICE Descriptor Type
`
`BCD
`
`USB Specification Release Number in
`Binary-Coded Decimal (i.e .. 2.10 is 21 OH).
`This field identifies the release of the USB
`Specification with which the device and its
`descriptors are compliant.
`
`4
`
`bOeviceC!ass
`
`1
`
`Class
`
`Class code (assigned by the USB-IF).
`
`If this field is reset to zero, each interface
`within a configuration specifies its own
`class information and the various
`interfaces operate independently.
`
`If this field is set to a value between 1 and
`FEH, the device supports different class
`specifications on different interfaces and
`the interfaces may not operate
`independently. This value identifies the
`class definition used for the aggregate
`interfaces.
`
`If this field is set to FFH, the device class
`is vendor-specific.
`
`5
`
`bDeviceSubClass
`
`1
`
`Subclass
`
`Subclass code (assigned by the USB-IF).
`
`These codes are qualified by the value of
`the bDeviceClass field.
`
`If the bDeviceClass field is reset to zero,
`this field must also be reset to zero.
`
`If the bOeviceClass field is not set to FFH,
`all values are reserved for assignment by
`the USB-IF.
`
`262
`
`ZTE/SAMSUNG 1008-0290
`IPR2018-00111
`
`
`
`Universal Serial Bus Specification Revision 2.0
`
`Table 9-8. Standard Device Descriptor (Continued)
`
`Offset
`
`Field
`
`Size
`
`Value
`
`Description
`
`6
`
`bDeviceProtoco/
`
`1
`
`Protocol
`
`bMaxPacketSizeO
`
`1
`
`Number
`
`7
`
`8
`
`10
`
`12
`
`idVendor
`
`idProduct
`
`bcdDevice
`
`14
`
`iManufacturer
`
`15
`
`iProduct
`
`16
`
`iSeria/Number
`
`17
`
`bNumConfigurations
`
`Protocol code (assigned by the USB-IF).
`These codes are qualified by the value of
`the bDeviceC/ass and the
`bDeviceSubClass fields. If a device
`supports class-specific protocols on a
`device basis as opposed to an interface
`basis, this code identifies the protocols
`that the device uses as defined by the
`specification of the device class.
`
`If this field is reset to zero, the device
`does not use class-specific protocols on a
`device basis. However, it may use class-
`specific protocols on an interface basis.
`
`If this field is set to FFH, the device uses a
`vendor-specific protocol on a device basis.
`
`Maximum packet size for endpoint zero
`(only 8, 16, 32, or 64 are valid)
`
`Vendor ID (assigned by the USS-IF)
`
`Product ID (assigned by the manufacturer)
`
`Device release number in binary-coded
`decimal
`
`Index of string descriptor describing
`manufacturer
`
`Index of string descriptor describing
`product
`
`Index of string descriptor describing the
`device's serial number
`
`ID
`
`ID
`
`BCD
`
`Index
`
`Index
`
`Index
`
`2
`
`2
`
`2
`
`1
`
`1
`
`1
`
`1
`
`Number
`
`Number of possible configurations
`
`263
`
`ZTE/SAMSUNG 1008-0291
`IPR2018-00111
`
`
`
`Universal Serial Bus Specification Revision 2.0
`
`9.6.2 Device_Qualifier
`The device_qualifier descriptor describes information about a high-speed capable device that would
`change if the device were operating at the other speed. For example, if the device is currently operating
`at full-speed, the device_qualifier returns information about how it would operate at high-speed and
`vice-versa. Table 9-9 shows the fields of the device_qualifier descriptor.
`
`Table 9-9. Device_ Qualifier Descriptor
`
`Offset
`
`Fie ld
`
`Size Value
`
`Description
`
`0
`
`1
`
`2
`
`4
`
`5
`
`6
`
`7
`
`8
`
`9
`
`bLength
`
`bDescriptorType
`
`bcdUSB
`
`bDeviceC/ass
`
`bDeviceSubClass
`
`bDeviceProtoco/
`
`bMaxPacketSizeO
`
`bNumContigurations
`
`bReserved
`
`1
`
`1
`
`2
`
`1
`
`1
`
`1
`
`1
`
`1
`
`1
`
`Number
`
`Size of descriptor
`
`Constant Device Qualifier Type
`
`BCD
`
`USB specification version number (e.g.,
`0200H for V2.00 )
`
`Class
`
`Class Code
`
`Subclass Subclass Code
`
`Protocol
`
`Protocol Code
`
`Number Maximum packet size for other speed
`
`Number
`
`Number of Other-speed Configurations
`
`Zero
`
`Reserved for future use, must be zero
`
`The vendor, product, device, manufacturer, product, and serialnumber fields of the standard device
`descriptor are not included i