WO2001057679A2 - Host-specified usb device requests - Google Patents

Host-specified usb device requests Download PDF

Info

Publication number
WO2001057679A2
WO2001057679A2 PCT/US2001/001801 US0101801W WO0157679A2 WO 2001057679 A2 WO2001057679 A2 WO 2001057679A2 US 0101801 W US0101801 W US 0101801W WO 0157679 A2 WO0157679 A2 WO 0157679A2
Authority
WO
WIPO (PCT)
Prior art keywords
request
specific
host
usb
code
Prior art date
Application number
PCT/US2001/001801
Other languages
French (fr)
Other versions
WO2001057679A3 (en
Inventor
John C. Dunn
Kenneth D. Ray
Firdosh K. Bhesania
Original Assignee
Microsoft Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corporation filed Critical Microsoft Corporation
Priority to AU2001236480A priority Critical patent/AU2001236480A1/en
Publication of WO2001057679A2 publication Critical patent/WO2001057679A2/en
Publication of WO2001057679A3 publication Critical patent/WO2001057679A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • G06F13/426Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using an embedded synchronisation, e.g. Firewire bus, Fibre Channel bus, SSA bus

Definitions

  • the following relates to device requests made to USB devices and to methods of implementing device requests that are defined by a host system rather than by the USB standard or by the device itself.
  • USB Universal Serial Bus
  • the Universal Serial Bus is a cable bus that supports data exchange between a host computer and a wide range of simultaneously accessible peripheral devices.
  • the attached peripheral devices share USB bandwidth through a host- scheduled, token-based protocol.
  • the bus allows peripherals to be attached, configured, used, and detached while the host and other peripherals are in operation.
  • the USB is defined by a specification that is approved by a committee of industry representatives. The specification covers all aspects of USB operation, including electrical, mechanical, and communications characteristics. To be called a USB device, a peripheral must conform to this very exacting specification.
  • USB allows peripheral devices to store information about themselves, and to provide such information upon request to host computers. This avoids the need for the computer, operating system, or application programs to maintain this information for many different devices. Instead, the device stores and provides its own information.
  • the USB device information is typically stored in so-called “descriptors” — data structures formatted as specified by the USB specification. These descriptors contain information that is primarily related to device controls (joysticks, buttons, wheels, sliders, etc.). They describe the type of each control, the format of data generated by the control, the range of values generated by the control, and many other characteristics.
  • USB communications protocol In defining the USB communications protocol, the USB committee attempted to foresee future needs, and to provide ways to accommodate such needs within the existing protocol. In addition, the USB specification is updated from time to time, thereby providing a mechanism for adding further functionality while still retaining backward compatibility.
  • a device request is a data structure that is conveyed in a "control transfer" from the host to the peripheral device.
  • a control transfer contains the following fields:
  • bmRequeslType a mask field indicating (a) the direction of data transfer m a subsequent phase of the control transfer; (b) a request type (standard, class, vendor, or reserved); and (c) a recipient
  • USB-specific All USB devices are supposed to support and respond to "standard" requests — referred to herein as "USB-specific" requests
  • the request type portion of the bmRequeslType field contains a predefined value indicative of the "standard" request type
  • Each different USB-specific request has a pre-assigned USB-specific request code, defined in the USB specification. This is the value used in the bRequest field of the device request, to differentiate between different USB-specific requests.
  • the USB specification sets forth the meanings of wValue and wlndex, as well as the format of any returned data.
  • USB devices can optionally support "vendor” requests — referred to herein as “device-specific” requests.
  • the request type portion of the bmRequeslType field contains a predefined value to indicate a "vendor" request type.
  • the USB specification does not assign request codes, define the meanings of wValue and wlndex, or define the format of returned data. Rather, each device has nearly complete control over the meaning, functionality, and data format of device-specific requests.
  • the device can define its own requests and assign device-specified request codes to them This allows devices to implement their own device requests for use by host computers, and provides tremendous flexibility for manufacturers of peripherals.
  • a device request such as this would be defined by the host or by the manufacturer of an operating system that executes on the host, and supported uniformly by peripheral devices. Because of this, the device request might be referred to as a "host-specific” device request — in contrast to "USB-spccified” requests and “device specific” requests.
  • the different request types supported in the bmRequcstlype field of a USB device request do not include a "host" type of request.
  • USB committee Another possibility might be to work with the USB committee to define a new type of request — possibly including a range of request codes for use by host computers. However, this would be a very long term project, and would not produce results quickly enough to be useful in current host program versions.
  • the inventors have devised a technique that allows a host system to define and issue host-specific device requests while remaining within the current USB specification and maintaining backward compatibility with previous generations of USB peripheral devices.
  • the system includes a USB device that responds to device requests from a host.
  • the device requests include USB-specific device requests with corresponding USB-specified request codes and device-specific device requests with corresponding device-specific request codes.
  • the USB- specific requests include a GET_DESCRIPTOR device request that is initiated with a corresponding GET DESCRIPTOR request code.
  • the described technique involves two phases. First, the host uses the
  • GET_DESCRIPTOR device request to obtain the request code that corresponds to the host-specific device request.
  • the host uses the obtained request code to initiate the host-specific device request.
  • the first phase is performed once, while the second phase can be performed many times.
  • signature checking is performed to confirm that the device supports this technique This ensures backward compatibility with earlier devices.
  • Fig. 1 is a block diagram of a host/peripheral USB system.
  • Figs 2 and 3 are flowcharts illustrating methodological aspects of the described system.
  • Fig 1 shows a computer system 10 that includes a host computer 1 1 and a
  • USB peripheral device 12 The host computer is a typical personal computer, but might alternatively be some other type of computer or computer-like device such as a dedicated gaming unit.
  • the USB peripheral device is a device such as a joystick, game pad, steering unit, mouse, stylus, digital speaker, microphone, data storage device, display device, etc.
  • Host computer 1 1 has one or more processors 14 and one or more forms of computer-readable memory media 16 such electronic memory, magnetic storage media, optical storage media, or some other type of data storage Programs are stored in memory 16 from where they are executed by processor 14 In tnis example, such programs include an operating system 18 and an application piogram 19
  • Host computer 1 1 also has a USB port 20
  • the USB port is supported b ⁇ operating system 18
  • application program 19 makes high-level calls to system services provided by operating system I S
  • the system services take care of lower level communications details, and return requested information to the application program
  • USB peripheral device 12 also has one or more processors 30 and one or more forms of comput r-readable memory media 31 , including at least some form of non-volatile memory media 32.
  • Various USB-related information is stored in the non-volatile memory, such as descriptors 33 that are provided to host 11 upon request.
  • Operating logic in the form of a sequentially-executed program 34 is stored in the memory, from where it is executed by processor 30.
  • USB device 12 has a USB port 36 connected for communications with USB port 20 of host 11. Communications take place between host 11 and peripheral 12 using conventional USB protocols, and in accordance with the additional techniques described below. Further details regarding the USB and its protocols are available from the USB Implementers Forum, which has current administrative headquarters in Portland, Oregon (current Internet URL: www.usb.org).
  • USB device 12 responds to USB device requests from host 11.
  • device requests include USB-specified device requests with corresponding USB-specified request codes, and device-specific device requests with corresponding device-specified request codes.
  • Fig. 2 shows top-level methodological aspects of the described system.
  • a new, non-USB-specific device request is defined for use with various USB peripherals. This request is referred to herein as a host-specific device request.
  • the host-specific device request can be defined by the manufacturer of an operating system or application program, and can then be made available to peripheral vendors so that they can support and respond to the newly defined request.
  • an OS manufacturer might define a new descriptor allowing peripherals to enumerate actions to be performed by various controls when operating with application programs of different genres. This would allow the operating system to use a single device request to obtain this information from various different peripherals (assuming those peripherals are configured to support the new device request).
  • the host sends a request to the peripheral in the form of a USB-specified device request.
  • the request is for a device-specific request code — of the device's choosing — that will be subsequently be used as the request code for the host-specific device request.
  • this request code is obtained, it is used in a subsequent phase 102 to initiate the host-specified device request.
  • the host specifies the request code as the bRequest value in a control transfer (see the "Background” section for details regarding a control transfer).
  • the actual protocol of this device request meanings of blndex, bValue, etc. is as specified in the definition of the host- specific device request.
  • Phase 102 is repeated as desired during subsequent operation, without repetition of initialization phase 100.
  • Fig. 3 shows more details regarding the initialization phase 100. Actions performed by the host are on the left, and actions performed by the device are on the right.
  • the host performs an action 104 of sending a GET DESCRIPTOR device request to the peripheral device
  • the fields of the control transfer (discussed above in the background section) have values as follows:
  • This descriptor is not defined by the USB standard, but has fields as defined m the following discussion
  • the host-specific request descriptor designates a device- specific request code that will work on this device to initiate the host-specific request code. In other words, the manufacturer of the device can select any device- specific request code, and associate it with an implementation of the host-specific device request.
  • the device receives the GET DESCRIPTOR device request (block 106 of Fig. 3) and performs a decision 108 regarding whether the index value (the second byte of wValue) corresponds to the predetermined value (EE (hex))
  • This predetermined value is a value that is chosen to be used specifically for this purpose. If the index value does not correspond to the predetermined value, the device responds in an appropriate way, usually by returning some other descriptor that corresponds to the index value If the index value does correspond to the predetermined value, an action 1 10 is performed of returning the host-specific request descriptor to the host.
  • the host receives the host-specific request descriptor (block 1 12) and then performs an action 1 14 of checking or verifying the signature and version number found in the qwSignature field
  • the correct signature confirms that the device is configured to support host-specific request codes If either the signature or v ersion number are incorrect, the host assumes that the device does not suppoit host- specific request codes, and no further attempts are made to use this feature
  • the signature field of the host-specific request descriptor block is what provides backward compatibility
  • a non-compatible device one that doesn't support host-specific request codes
  • the host reads the device-specific request code from the bVendorCode field, and uses it in the future as a host-specific request code, to initiate the host-specific device request.
  • the host sends the host-specific device request by specifying the obtained device-specific request code as part of a control transfer.
  • the device responds by performing one or more predefined actions or functions that correspond to the host-specific device request, in accordance with the specification of the host-specific device request.
  • the host-specific device request itself is in the format of a normal USB control transfer, including the fields discussed in the "Background" section above.
  • the bRequest field is set to the value of the bVendorCode field of the host-specific request descriptor, which was earlier obtained from the peripheral device.
  • the bmRequestType field is set to 1 1000001 (binary), indicating a device-to-host data transfer, a "vendor" or device-specific request type, and a device recipient.
  • the wValue and wlndex fields are used as defined by the definition of the host-specific device request.
  • the wLength field indicates the number of bytes to transfer if there is a subsequent data transfer phase in the device request.
  • the host-specific device request is used to request one of a plurality of available host-defined string descriptors from the device.
  • the wlndex field of the host-specific device request indicates which of the plurality of strings are to be returned
  • the device returns the descriptor referred to by wlndex.

Abstract

A USB device is configured to support a non-USB-defined device request that is specific to an application program or operating system. The device request is supported by using a device-specific or vendor-specific request code, which is allowed to vary from device to device. To determine the proper request code, the host performs a GE-ESCRIPTOR device request, specifying a predetermined string descriptor. The requested string descriptor designates the request code to be used in the non-USB-defined device request.

Description

H 3ST-SPECFFIED USB DEVICE REQUESTS
TECHNICAL FIELD
The following relates to device requests made to USB devices and to methods of implementing device requests that are defined by a host system rather than by the USB standard or by the device itself.
BACKGROUND OF THE INVENTION
The Universal Serial Bus (USB) is a cable bus that supports data exchange between a host computer and a wide range of simultaneously accessible peripheral devices. The attached peripheral devices share USB bandwidth through a host- scheduled, token-based protocol. The bus allows peripherals to be attached, configured, used, and detached while the host and other peripherals are in operation. The USB is defined by a specification that is approved by a committee of industry representatives. The specification covers all aspects of USB operation, including electrical, mechanical, and communications characteristics. To be called a USB device, a peripheral must conform to this very exacting specification.
One significant feature of USB is that it allows peripheral devices to store information about themselves, and to provide such information upon request to host computers. This avoids the need for the computer, operating system, or application programs to maintain this information for many different devices. Instead, the device stores and provides its own information.
The USB device information is typically stored in so-called "descriptors" — data structures formatted as specified by the USB specification. These descriptors contain information that is primarily related to device controls (joysticks, buttons, wheels, sliders, etc.). They describe the type of each control, the format of data generated by the control, the range of values generated by the control, and many other characteristics.
In defining the USB communications protocol, the USB committee attempted to foresee future needs, and to provide ways to accommodate such needs within the existing protocol. In addition, the USB specification is updated from time to time, thereby providing a mechanism for adding further functionality while still retaining backward compatibility.
It was recognized from an early date that certain peripherals might need to define their own descriptors or request codes, relating to new features or technology not encompassed by the USB-defined descriptors. This capability was provided by reserving certain request codes for definition and use by individual peripheral manufacturers.
Request codes are used in a USB system to define "device requests" from a host to a peripheral device. A device request is a data structure that is conveyed in a "control transfer" from the host to the peripheral device. A control transfer contains the following fields:
• bmRequeslType — a mask field indicating (a) the direction of data transfer m a subsequent phase of the control transfer; (b) a request type (standard, class, vendor, or reserved); and (c) a recipient
(device, interface, endpomt, or other). The primary types of requests specified in the "request type" field are the "standard" and "vendor" types, which will be discussed below.
• bReques — a request code indicating one of a plurality of different commands to which the device is responsive. • wValue — - field that varies according to the request specified by bRequest.
• wlndex — field that varies according to request; typically used to pass an index or offset as part of the specified request. • wLength — number of bytes to transfer if there is a subsequent data stage.
All USB devices are supposed to support and respond to "standard" requests — referred to herein as "USB-specific" requests In a USB-specific request, the request type portion of the bmRequeslType field contains a predefined value indicative of the "standard" request type
Each different USB-specific request has a pre-assigned USB-specific request code, defined in the USB specification. This is the value used in the bRequest field of the device request, to differentiate between different USB-specific requests. For each USB-specific request code, the USB specification sets forth the meanings of wValue and wlndex, as well as the format of any returned data.
USB devices can optionally support "vendor" requests — referred to herein as "device-specific" requests. In a device-specific request, the request type portion of the bmRequeslType field contains a predefined value to indicate a "vendor" request type. In the case of device-specific requests, the USB specification does not assign request codes, define the meanings of wValue and wlndex, or define the format of returned data. Rather, each device has nearly complete control over the meaning, functionality, and data format of device-specific requests. Specifically, the device can define its own requests and assign device-specified request codes to them This allows devices to implement their own device requests for use by host computers, and provides tremendous flexibility for manufacturers of peripherals. The inventors have discovered a need for a similar feature that would benefit various hosts, application programs, and host operating systems. Specifically, designers of application programs and operating systems would value the opportunity to define their own device requests (and the associated responses), and to have such requests supported in a uniform way by compatible peripherals.
As an example of this need, a co-pending US Patent Application ("System and Method for Mapping Input Device Controls to Software Actions," serial no. 09/148,1 13, filed January 10, 2000), describes a technique in which different controls of a device are arranged in different combinations for use with application programs of different "genres." For each genre, the controls of the device are enumerated along with standard "actions" that are to be initiated in response to the respective controls.
Although such information can be maintained at the host for various different controllers, it would be desirable for each controller to store its own genre information, and to make it available through a predefined USB device request. However, such a device request is not defined by the USB specification.
Ideally, a device request such as this would be defined by the host or by the manufacturer of an operating system that executes on the host, and supported uniformly by peripheral devices. Because of this, the device request might be referred to as a "host-specific" device request — in contrast to "USB-spccified" requests and "device specific" requests.
However, the different request types supported in the bmRequcstlype field of a USB device request do not include a "host" type of request.
One possible solution to this problem would be to simply usurp a vendor- specific request code, and attempt to persuade all device manufacturers to use this request code to initiate an agreed-upon host-specific device request. However, this would not provide backward compatibility in the case that the chosen request code was used in previously manufactured devices for different, vendor-specific requests.
Another possibility might be to work with the USB committee to define a new type of request — possibly including a range of request codes for use by host computers. However, this would be a very long term project, and would not produce results quickly enough to be useful in current host program versions.
Accordingly, the inventors have devised a technique that allows a host system to define and issue host-specific device requests while remaining within the current USB specification and maintaining backward compatibility with previous generations of USB peripheral devices.
SUMMARY OF THE INVENTION
Described below is a technique for implementing a host-specific device request in a USB system. The system includes a USB device that responds to device requests from a host. The device requests include USB-specific device requests with corresponding USB-specified request codes and device-specific device requests with corresponding device-specific request codes. The USB- specific requests include a GET_DESCRIPTOR device request that is initiated with a corresponding GET DESCRIPTOR request code.
The described technique involves two phases. First, the host uses the
GET_DESCRIPTOR device request to obtain the request code that corresponds to the host-specific device request. Second, the host uses the obtained request code to initiate the host-specific device request. The first phase is performed once, while the second phase can be performed many times. During the first stage, signature checking is performed to confirm that the device supports this technique This ensures backward compatibility with earlier devices.
BRIEF DESCRIPTION OF THE DRAWINGS
Fig. 1 is a block diagram of a host/peripheral USB system.
Figs 2 and 3 are flowcharts illustrating methodological aspects of the described system.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
Fig 1 shows a computer system 10 that includes a host computer 1 1 and a
USB peripheral device 12 The host computer is a typical personal computer, but might alternatively be some other type of computer or computer-like device such as a dedicated gaming unit. The USB peripheral device is a device such as a joystick, game pad, steering unit, mouse, stylus, digital speaker, microphone, data storage device, display device, etc.
Host computer 1 1 has one or more processors 14 and one or more forms of computer-readable memory media 16 such electronic memory, magnetic storage media, optical storage media, or some other type of data storage Programs are stored in memory 16 from where they are executed by processor 14 In tnis example, such programs include an operating system 18 and an application piogram 19
Host computer 1 1 also has a USB port 20 The USB port is supported b\ operating system 18 To communicate with a USB device, application program 19 makes high-level calls to system services provided by operating system I S The system services take care of lower level communications details, and return requested information to the application program USB peripheral device 12 also has one or more processors 30 and one or more forms of comput r-readable memory media 31 , including at least some form of non-volatile memory media 32. Various USB-related information is stored in the non-volatile memory, such as descriptors 33 that are provided to host 11 upon request. Operating logic in the form of a sequentially-executed program 34 is stored in the memory, from where it is executed by processor 30.
USB device 12 has a USB port 36 connected for communications with USB port 20 of host 11. Communications take place between host 11 and peripheral 12 using conventional USB protocols, and in accordance with the additional techniques described below. Further details regarding the USB and its protocols are available from the USB Implementers Forum, which has current administrative headquarters in Portland, Oregon (current Internet URL: www.usb.org).
USB device 12 responds to USB device requests from host 11. In accordance with the USB specification, such device requests include USB-specified device requests with corresponding USB-specified request codes, and device- specific device requests with corresponding device-specified request codes.
Fig. 2 shows top-level methodological aspects of the described system. Generally, a new, non-USB-specific device request is defined for use with various USB peripherals. This request is referred to herein as a host-specific device request. Because of the described methodology, the host-specific device request can be defined by the manufacturer of an operating system or application program, and can then be made available to peripheral vendors so that they can support and respond to the newly defined request. As an example, an OS manufacturer might define a new descriptor allowing peripherals to enumerate actions to be performed by various controls when operating with application programs of different genres. This would allow the operating system to use a single device request to obtain this information from various different peripherals (assuming those peripherals are configured to support the new device request).
In an initialization phase 100, the host sends a request to the peripheral in the form of a USB-specified device request. The request is for a device-specific request code — of the device's choosing — that will be subsequently be used as the request code for the host-specific device request.
Once this request code is obtained, it is used in a subsequent phase 102 to initiate the host-specified device request. Specifically, the host specifies the request code as the bRequest value in a control transfer (see the "Background" section for details regarding a control transfer). The actual protocol of this device request (meanings of blndex, bValue, etc.) is as specified in the definition of the host- specific device request. Phase 102 is repeated as desired during subsequent operation, without repetition of initialization phase 100.
Fig. 3 shows more details regarding the initialization phase 100. Actions performed by the host are on the left, and actions performed by the device are on the right.
The host performs an action 104 of sending a GET DESCRIPTOR device request to the peripheral device The GET DESCRIPTOR device request is a standard, USB-specific request, identified in a control transfer by the GET_DESCRIPTOR request code (bRequest = GET DESCRIPTOR) The fields of the control transfer (discussed above in the background section) have values as follows:
• bmRequeslType - 10000000 (binary), indicating a "devicc-to-host" transfer, a "standard" or "USB-specific" type request, and a device recipient. • bR ?quest = GET DESCRIPTOR. This is a constant (six) defined by the USB specification
• wValue = 03EE (hex). The high byte (03) indicates that the request is for a "string" descriptor, and the low byte is an index value that is predefined as a constant in the definition of the host-specified device request. In this example, it has been defined as EE (hex), but could be predefined as any other value.
• wlndex = 0.
• wLength = 12 (hex). This is the length of a host-specific request descriptor that will be returned in response to this request. In the described example, the length is 12 (hex).
• data — returned host-specific request descriptor.
A compatible USB device is configured to respond to a request such as this (where wValue = 03EE (hex)) by returning a host-specific request descriptor. This descriptor is not defined by the USB standard, but has fields as defined m the following discussion The host-specific request descriptor designates a device- specific request code that will work on this device to initiate the host-specific request code. In other words, the manufacturer of the device can select any device- specific request code, and associate it with an implementation of the host-specific device request.
More specifically, the device receives the GET DESCRIPTOR device request (block 106 of Fig. 3) and performs a decision 108 regarding whether the index value (the second byte of wValue) corresponds to the predetermined value (EE (hex)) This predetermined value is a value that is chosen to be used specifically for this purpose. If the index value does not correspond to the predetermined value, the device responds in an appropriate way, usually by returning some other descriptor that corresponds to the index value If the index value does correspond to the predetermined value, an action 1 10 is performed of returning the host-specific request descriptor to the host.
The host-specific request descriptor contains the following fields:
• bLength — the length of the descriptor ( 12 (hex) in this example)
• bDescrψtorType — the type of descriptor (string type in this example) • qwSignature — a signature confirming that this descriptor is indeed a descriptor of the type requested The signature optionally incorporates a version number For example, in the described example MSFT100 indicates that this descriptor is for an "MSFT" host-specific device request, version "100" or 1.00 • bVendorCode — the device-specific request code that is to be associated with the host-specified device request
• bPad — a pad field of one byte
The host receives the host-specific request descriptor (block 1 12) and then performs an action 1 14 of checking or verifying the signature and version number found in the qwSignature field The correct signature confirms that the device is configured to support host-specific request codes If either the signature or v ersion number are incorrect, the host assumes that the device does not suppoit host- specific request codes, and no further attempts are made to use this feature
The signature field of the host-specific request descriptor block is what provides backward compatibility A non-compatible device (one that doesn't support host-specific request codes) might use the predetermined wValue 03EE (hex) to store some othe r string descriptor, which will be returned to the host without any indication of problems. However, this will become apparent to the host after it examines the data in the location where the signature is supposed to be. If the signature is not found, the host knows that the returned descriptor is not of the type requested, and will assume that the device does not support host-specific request codes.
If the signature and version are confirmed in block 114, the host reads the device-specific request code from the bVendorCode field, and uses it in the future as a host-specific request code, to initiate the host-specific device request. When using the device, the host sends the host-specific device request by specifying the obtained device-specific request code as part of a control transfer. The device responds by performing one or more predefined actions or functions that correspond to the host-specific device request, in accordance with the specification of the host-specific device request. The host-specific device request itself is in the format of a normal USB control transfer, including the fields discussed in the "Background" section above. The bRequest field is set to the value of the bVendorCode field of the host-specific request descriptor, which was earlier obtained from the peripheral device. The bmRequestType field is set to 1 1000001 (binary), indicating a device-to-host data transfer, a "vendor" or device-specific request type, and a device recipient.
The wValue and wlndex fields are used as defined by the definition of the host-specific device request. The wLength field indicates the number of bytes to transfer if there is a subsequent data transfer phase in the device request.
In a current implementation of this system, the host-specific device request is used to request one of a plurality of available host-defined string descriptors from the device. The wlndex field of the host-specific device request indicates which of the plurality of strings are to be returned The device returns the descriptor referred to by wlndex.
The techniques described above allow an operating system designer to specify informational descriptors that devices can implement to provide additional data about themselves — data that is not directly addressed by the USB specification Such data might relate to power management, special features, and overall device layout, as well as to the genre information discussed above The techniques provide these advantages while retaining backward compatibility and without requiring changes to the USB specification Although details of specific implementations and embodiments are described above, such details are intended to satisfy statutory disclosure obligations rather than to limit the scope of the following claims Thus, the invention as defined by the claims is not limited to the specific features described above Rather, the invention is claimed in any of its forms or modifications that fall within the proper scope of the appended claims, appropriately interpreted in accordance with the doctrine of equivalents

Claims

1. In a USB device that responds to device requests from a host, the device requests including USB-specific device requests with corresponding USB- specified request codes and device-specific device requests with corresponding device-specified request codes, the USB-specific device requests including a GET_DESCRIPTOR device request with a corresponding GET_DESCRIPTOR request code, a method of implementing a host-specific device request comprising: receiving a GET_DESCRIPTOR device request that specifies a predetermined index; responding to the GET_DESCRIPTOR device request by returning a device- specific request code that corresponds in the USB device to the host-specific device request; receiving the host-specific device request, specified by the returned device- specific request code; and responding to the host-specific device request with one or more predefined actions that correspond to the host-specific device request.
2. A method as recited in claim 1 , wherein the host-specific device request indicates one of a plurality of available descriptors that is to be returned from the USB device in response to the host-specific device request, the method further comprising returning said one of a plurality of available descriptors in response to the host-specific device request.
3. A method as recited in claim 1 , wherein the device-specific request code is returned in a host-specific request descriptor comprising: a length field; a type field; a signature field containing a signature, the signature confirming the validity of the host-specific request descriptor; and a request code field indicating the device-specific request code.
4. A method as recited in claim 1 , wherein the host-specific device request is received in a format that comprises: a request type field indicating that the device request is a device-specific type of request; a request code field containing the returned device-specific request code, a value field indicating an interface number and an extended descriptor size, an index field that specifies a particular one of a plurality of available functions available through the host-specific device request; and a length field indicating the length of data to be returned in response to the host-specific device request.
5. A method as recited in claim 1 , wherein the device-specific request code is returned in a host-specific request dcscriptoi , the method furthci comprising: returning a signature in the host-specific request descriptor, the signature confirming the validity of the host-specific request descriptor.
6. A method as recited in claim 1. further comprising: returning a signature with the device-specific request code, the signature confirming the validity of the device-specific request code.
7. A method as recited in claim 1, wherein the one or more predefined actions are specified in he host-specific device request.
8. One or more computer-readable media containing a computer- executable program that performs the method of claim 1.
9. In conjunction with a USB device that responds to device requests from a host, the device requests including USB-specific device requests with corresponding USB-specified request codes and device-specific device requests with corresponding device-specified request codes, the USB-specific device requests including a GET_DESCRIPTOR device request with a corresponding GET_DESCRIPTOR request code, a method of specifying a request code for a host-specific device request, comprising: sending a GET DESCRIPTOR device request to the USB device, the GET DESCRIPTOR device request specifying a predetermined index; and in response to the GET DESCRIPTOR device request, returning a device- specific request code from the USB device, wherein the returned device-specific request code corresponds in the USB device to the host-specific device request.
10. A method as recited in claim 9, further comprising: sending the host-specific device request by specifying the returned device- specific request code; and in response to the host-specific device request, performing one or more predefined actions that correspond to the host-specific device request.
11. A method as recited m claim 9, further comprising sending the host- specific device request by specifying the returned device-specific request code.
12. A method as recited in claim 9, further comprising checking a signature that is returned in conjunction with the device-specific request code.
13. A method as recited in claim 9, further comprising: returning a signature with the device-specific request code, and checking the returned signature to confirm the validity of the device-specific request code.
14. A method as recited in claim 9, further comprising returning a signature with the device-specific request code; checking the retumed signature to confirm the validity of the device-specific request code; and if the device-specific request code is valid, sending the host-specific device request by specifying the returned device-specific request code
15. A method as recited in claim 9, wherein the device-specific icqucst code is returned in a host-specific request descriptor comprising a length field; a type field; a signature field containing a signature, the signature confirming the v aliditv of the host-specific request descriptor, and a request code field indicating the dev ice-specific request code
16. A method as recited in claim 9, wherein the host-specific device request is received in a format that comprises: a request type field indicating that the device request is a device-specific type of request; a request code field containing the returned device-specific request code; a value field indicating an interface number and an extended descriptor size, an index field that specifies a particular one of a plurality of available functions available through the host-specific device request, and a length field indicating the length of data to be returned in response to the host-specific device request
17. A method as recited in claim 9, wherein the one or more predefined actions are specified in the host-specific device request
18. One or more computer-readable media containing a computer- executable program that performs the method of claim 9
19. One or more computer-readable media containing a computer- executable program for use in conjunction with a USB device that responds to device requests from the program, the device requests including USB-specific device requests with corresponding USB-specified request codes and device- specific device requests with corresponding device-specified request codes, the USB-specific device requests including a GET_DESCRIPTOR device request with a corresponding GET DESCRIPTOR request code, the program comprising sending a request to the USB device for a device-specific request code, receiving a device-specific request code from the USB device in response to the request, wherein the device-specific request code corresponds m the USB device to a host-specific device request; and subsequently sending the host-specific device request to the USB device by specifying the returned device-specific request code.
20. One or more computer-readable media as recited in claim 19, the program further comprising: indicating, in the host-specific device request, one of a plurality of descriptors that is to be returned in response to the host-specific device request.
21. One or more computer-readable media as recited in claim 19, the program further comprising: receiving a signature in response to sending request; and checking the signature to confirm validity of the returned device-specific request code before subsequently sending the host-specific device request to the USB device.
22. One or more computer-readable media as recited in claim 19, wherein the device-specific request code is returned in a host-specific request descriptor comprising: a length field; a type field; a signature field containing a signature, the signature confirming the validity of the host-specific request descriptor; and a request code field indicating the device-specific request code .
23. One or mere computer-readable media as recited in claim 19, wherein the host-specific device request is in a format comprising: a request type field indicating that the device request is a device-specific type of request; a request code field containing the returned device-specific request code; a value field indicating an interface number and an extended descriptor size; an index field that specifies a particular one of a plurality of available descriptors available through the host-specific device request; and a length field indicating the length of data to be returned in response to the host-specific device request.
24. A computer comprising one or more computer-readable media as recited in claim 19.
25. A USB device that responds to device requests from a host, the device requests including USB-specific device requests with corresponding USB- specified request codes and device-specific device requests with corresponding device-specified request codes, the USB-specific device requests including a GET DESCRIPTOR device request with a corresponding GET DESCRIPTOR request code, the USB device comprising: a USB interface; control logic that communicates with a host through the USB interface; non-volatile memory accessible by the control logic; a plurality of feature descriptors stored in the non-volatile memory; the control logic being configured to perform acts comprising: in response to receiving a GET DESCRIPTOR device request that specifies a predetermined index, returning a device-specific request code that corresponds in the USB device to a host-specific device request; and returning one of the plurality of feature descriptors in response to receiving the host-specific device request, wherein the host-specific device request specifies said one of the plurality of feature descriptors,.
26. A USB device as recited in claim 25, wherein the device-specific request code is returned in a host-specific request descriptor comprising: a length field; a type field; a signature field containing a signature, the signature confirming the validity of the host-specific request descriptor; and a request code field indicating the device-specific request code.
27. A USB device as recited in claim 25. wherein the host-specific device request is received in a format that comprises: a request type field indicating that the device request is a device-specific type of request; a request code field containing the returned device-specific request code; a value field indicating an interface number and an extended descriptor size; an index field that specifies said one of the plurality of feature descriptors; and a length field indicating the length of data to be returned in response to the host-specific device request.
28. A USB device as recited in claim 25, the control logic being configured to perfoπn a farther action comprising: in response to receiving the host-specific device request, returning a signature with the device-specific request code, the signature confirming the validity of the device-specific request code.
PCT/US2001/001801 2000-02-04 2001-01-17 Host-specified usb device requests WO2001057679A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001236480A AU2001236480A1 (en) 2000-02-04 2001-01-17 Host-specified usb device requests

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/498,056 2000-02-04
US09/498,056 US6484219B1 (en) 2000-02-04 2000-02-04 Host-specified USB device requests

Publications (2)

Publication Number Publication Date
WO2001057679A2 true WO2001057679A2 (en) 2001-08-09
WO2001057679A3 WO2001057679A3 (en) 2001-12-13

Family

ID=23979426

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/001801 WO2001057679A2 (en) 2000-02-04 2001-01-17 Host-specified usb device requests

Country Status (3)

Country Link
US (1) US6484219B1 (en)
AU (1) AU2001236480A1 (en)
WO (1) WO2001057679A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484219B1 (en) * 2000-02-04 2002-11-19 Microsoft Corporation Host-specified USB device requests
US6816590B2 (en) 2001-09-27 2004-11-09 Alcatel Canada Inc. System and method of configuring a network element
WO2016018753A1 (en) * 2014-07-28 2016-02-04 Qualcomm Incorporated Apparatuses, methods, and systems for enabling higher current charging of universal serial bus (usb) specification revision 2.0 (usb 2.0) portable electronic devices from usb 3.x hosts

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1269754A4 (en) 2000-03-14 2009-03-11 Joseph Robert Marchese Digital video system using networked cameras
US6754811B1 (en) * 2000-06-16 2004-06-22 International Business Machines Corporation Operating system device centric agent
US7805720B2 (en) 2003-04-11 2010-09-28 Flexiworld Technologies, Inc. Autorun for integrated circuit memory component
US11467856B2 (en) 2002-12-12 2022-10-11 Flexiworld Technologies, Inc. Portable USB device for internet access service
US7127678B2 (en) * 2000-12-21 2006-10-24 Microsoft Corporation System and method to specify device specific user interface information in the firmware of a USB device
US6832273B2 (en) 2000-12-21 2004-12-14 Microsoft Corporation System and method to specify extended configuration descriptor information in USB devices
US6718423B2 (en) * 2000-12-29 2004-04-06 Gateway, Inc. Bus hub with a selectable number of ports
US6981080B2 (en) * 2001-01-31 2005-12-27 Hewlett-Packard Development Company, L.P. Look-up table based USB identification
US6961790B2 (en) * 2001-06-29 2005-11-01 Motorola, Inc. Self-extracting re-configurable interface used in modular electronic architecture
US7159065B1 (en) * 2002-06-20 2007-01-02 Cypress Semiconductor Corporation Method for issuing vendor specific requests for accessing ASIC configuration and descriptor memory while still using a mass storage class driver
WO2004055638A2 (en) 2002-12-12 2004-07-01 Flexiworld Technologies, Inc. Wireless communication between computing devices
WO2004086363A2 (en) * 2003-03-27 2004-10-07 M-Systems Flash Disk Pioneers Ltd. Data storage device with full access by all users
US7424312B2 (en) * 2003-09-23 2008-09-09 Motorola, Inc. Interface system for an accessory and a communication device
US20090024757A1 (en) * 2004-07-30 2009-01-22 Proctor David W Automatic Protocol Determination For Portable Devices Supporting Multiple Protocols
US7536486B2 (en) * 2004-07-30 2009-05-19 Microsoft Corporation Automatic protocol determination for portable devices supporting multiple protocols
CA2597487A1 (en) * 2005-02-11 2006-08-17 M-Systems Flash Disk Pioneers Ltd. Appliance with communication protocol emulation
US20060285559A1 (en) * 2005-06-16 2006-12-21 Chih-Hung Cheng Method for controlling host from device coupled thereto using universal serial bus and system thereof
US20070136501A1 (en) * 2005-12-08 2007-06-14 Chang Robert C Media card command pass through methods
US8078788B2 (en) 2005-12-08 2011-12-13 Sandisk Technologies Inc. Media card command pass through methods
US20070168668A1 (en) * 2005-12-08 2007-07-19 Chang Robert C Media card with command pass through mechanism
US20070204089A1 (en) * 2006-02-27 2007-08-30 Microsoft Corporation Multi-protocol removable storage device
US9166883B2 (en) 2006-04-05 2015-10-20 Joseph Robert Marchese Network device detection, identification, and management
US20080276009A1 (en) * 2007-05-04 2008-11-06 Joe Mesa Enabling Efficient Communication Between a Host and Multiple USB Devices
US7853725B2 (en) 2007-06-19 2010-12-14 Micron Technology, Inc. USB device communication apparatus, systems, and methods
US8812970B2 (en) * 2008-02-27 2014-08-19 Microsoft Corporation Dynamic device state representation in a user interface
US8631284B2 (en) 2010-04-30 2014-01-14 Western Digital Technologies, Inc. Method for providing asynchronous event notification in systems
US8762682B1 (en) 2010-07-02 2014-06-24 Western Digital Technologies, Inc. Data storage apparatus providing host full duplex operations using half duplex storage devices

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000059594A1 (en) * 1999-04-06 2000-10-12 Microsoft Corporation Game control device having genre data

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835791A (en) * 1996-03-26 1998-11-10 Vlsi Technology, Inc. Versatile connection of a first keyboard/mouse interface and a second keyboard/mouse interface to a host computer
US6219736B1 (en) * 1997-04-24 2001-04-17 Edwin E. Klingman Universal serial bus (USB) RAM architecture for use with microcomputers via an interface optimized for integrated services device network (ISDN)
US6233640B1 (en) * 1999-03-19 2001-05-15 In-System Design, Inc. Universal serial bus peripheral bridge with sequencer
US6260084B1 (en) * 1998-05-18 2001-07-10 3Com Corporation Modem apparatus and method for serial command and data multiplexing
US6256687B1 (en) * 1998-08-04 2001-07-03 Intel Corporation Managing data flow between a serial bus device and a parallel port
US6389495B1 (en) * 1999-01-16 2002-05-14 Cypress Semiconductor Corp. Dedicated circuit and method for enumerating and operating a peripheral device on a universal serial bus
US6389560B1 (en) * 1999-01-19 2002-05-14 Sun Microsystems, Inc. Universal serial bus interpreter
US6343260B1 (en) * 1999-01-19 2002-01-29 Sun Microsystems, Inc. Universal serial bus test system
US6484219B1 (en) * 2000-02-04 2002-11-19 Microsoft Corporation Host-specified USB device requests

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000059594A1 (en) * 1999-04-06 2000-10-12 Microsoft Corporation Game control device having genre data

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
UNIVERSAL SERIAL BUS IMPLEMENTERS FORUM: "Universal Serial Bus Specification - Revision 1.1" [Online] 23 September 1998 (1998-09-23) , UNIVERSAL SERIAL BUS IMPLEMENTERS FORUM XP002170962 Retrieved from the Internet: <URL: www.usb.org> [retrieved on 2001-07-02] page 175 -page 206 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484219B1 (en) * 2000-02-04 2002-11-19 Microsoft Corporation Host-specified USB device requests
US6816590B2 (en) 2001-09-27 2004-11-09 Alcatel Canada Inc. System and method of configuring a network element
WO2016018753A1 (en) * 2014-07-28 2016-02-04 Qualcomm Incorporated Apparatuses, methods, and systems for enabling higher current charging of universal serial bus (usb) specification revision 2.0 (usb 2.0) portable electronic devices from usb 3.x hosts
US10199848B2 (en) 2014-07-28 2019-02-05 Qualcomm Incorporated Apparatuses, methods, and systems for enabling higher current charging of Universal Serial Bus (USB) specification revision 2.0 (USB 2.0) portable electronic devices from USB 3.X hosts

Also Published As

Publication number Publication date
WO2001057679A3 (en) 2001-12-13
AU2001236480A1 (en) 2001-08-14
US6484219B1 (en) 2002-11-19

Similar Documents

Publication Publication Date Title
US6484219B1 (en) Host-specified USB device requests
US7093031B2 (en) Specifying extended configuration descriptor information in a USB device
US7676752B2 (en) System and method to specify device specific user interface information in the firmware of a USB device
TW418361B (en) Configurable universal serial bus node
US20080276012A1 (en) Driver Loading via a PnP Device
EP1031931B1 (en) Universal serial bus interpreter
JP4544188B2 (en) Drive configuration program
US6601119B1 (en) Method and apparatus for varying target behavior in a SCSI environment
US20050283549A1 (en) Reconfigurable USB I/O device persona
US20040003135A1 (en) Technique for driver installation
WO2006121251A1 (en) Data structure of flash memory having system area with variable size in which data can be updated, usb memory device having the flash memory, and method of controlling the system area
JP2006195975A (en) Device and method for managing a plurality of kinds of storage devices
JP2008539484A (en) Universal serial bus function delegation
KR20170043993A (en) Electronic system with interface control mechanism and method of operation thereof
US9569375B2 (en) Unifying class device interface with one host interface by using embedded controller
US6748459B1 (en) Method and apparatus for address mapping
US20040148446A1 (en) Communication protocol for serial peripheral devices
JP2000112666A (en) Disk controller
EP1552404A1 (en) Deferred tuple space programming of expansion modules
US7424580B2 (en) Data transfer control device, electronic instrument, program and method of fabricating electronic instrument
CN117480498A (en) Dynamically provisioning PCIe devices for bare metal servers at run-time
US7103686B1 (en) Method and apparatus for device discovery
US7114020B1 (en) Software mechanism for unique identification of SCSI device
CN112181753A (en) Debugging method, system and readable storage medium
CN113205838B (en) Processor for configuring subsystems while other processors remain reset

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
AK Designated states

Kind code of ref document: A3

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP