| <html devsite> |
| <head> |
| <title>USB Headset: Accessory Specification</title> |
| <meta name="project_path" value="/_project.yaml" /> |
| <meta name="book_path" value="/_book.yaml" /> |
| </head> |
| <body> |
| <!-- |
| Copyright 2017 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| |
| |
| <p> |
| This documentation specifies some characteristics of USB headsets, so that |
| they function uniformly across the Android ecosystem. Only headsets with |
| digital USB audio interface are permitted. Purely analog headsets with |
| mechanical adaptation to USB-C are not permitted, as per USB Type-C |
| specification. |
| </p> |
| <p> |
| This documentation specifies the minimum requirements: accessory manufacturers |
| are encouraged to add features while keeping these requirements in mind. |
| </p> |
| |
| <h2 id="functional-overview">Functional overview</h2> |
| <p> |
| USB headsets can implement a variety of basic and advanced features. This |
| specification only covers mandated basic features: |
| </p> |
| <ul> |
| <li>Stereo output</li> |
| <li>Optional, but recommended, microphone</li> |
| <li>Function buttons for volume, playback, and call control</li> |
| </ul> |
| |
| <h2 id="terminal-types">USB Audio Class terminal types</h2> |
| <p> |
| Headphones and headsets must report these USB Audio Class (UAC) terminal types: |
| </p> |
| |
| <ul> |
| <li><strong>Headphones</strong>. Low impedance transducers, < 100 ohms, no |
| microphone: 0x0302</li> |
| <li><strong>Headset</strong>. Low impedance transducers with microphone: 0x0402</li> |
| </ul> |
| |
| <h2 id="control-function">Control functions</h2> |
| <p>Headsets can come with varying number of buttons to control specific |
| functions, such as volume and play/pause.<p> |
| <table> |
| <tr> |
| <th>Control function</th> |
| <th>Accessory Support</th> |
| <th>Description</th> |
| </tr> |
| <tr> |
| <td>A</td> |
| <td>Required</td> |
| <td>Play/pause (short press), launch voice command (long press), next (double |
| press)</td> |
| </tr> |
| <tr> |
| <td>B</td> |
| <td>Optional</td> |
| <td>Vol+</td> |
| </tr> |
| <tr> |
| <td>C</td> |
| <td>Optional</td> |
| <td>Vol-</td> |
| </tr> |
| <tr> |
| <td>D</td> |
| <td>Optional</td> |
| <td>Launch voice command</td> |
| </tr> |
| </table> |
| <p> |
| <strong>Assign functions to buttons as follows:</strong> |
| </p> |
| <ul> |
| <li>All one-button headsets must implement Function A.</li> |
| <li>Headsets with multiple buttons must implement functions according to the |
| following pattern: |
| <ul> |
| <li>2 functions: A and D</li> |
| <li>3 functions: A, B, C</li> |
| <li>4 functions: A, B, C, D</li> |
| </ul> |
| </li> |
| </ul> |
| <p class="note"> |
| <strong>Note</strong>: No key latching allowed. Each key press by the end user |
| must generate the corresponding "down" and "up" key event, matching the end user |
| action. In other words, the keys for functions A through D are never "latched" |
| or implemented to be used as a toggle (where the "up" event only follows "down" |
| on a second key press). |
| </p> |
| <h2 id="software-mapping">Software mapping</h2> |
| <p> |
| Compatible USB headsets are required to support the following software mappings |
| for the headset buttons. Devices match these HID mappings with the appropriate |
| Android keycode. |
| </p> |
| |
| <table> |
| <tr> |
| <th>Function</th> |
| <th>Mappings</th> |
| </tr> |
| <tr> |
| <td>A</td> |
| <td>HID usage page: 0x0C<br> |
| HID usage: 0x0CD </td> |
| </tr> |
| <tr> |
| <td>B </td> |
| <td>HID usage page: 0x0C<br> |
| HID usage: 0x0E9</td> |
| </tr> |
| <tr> |
| <td>C</td> |
| <td>HID usage page: 0x0C<br> |
| HID usage: 0x0EA</td> |
| </tr> |
| <tr> |
| <td>D </td> |
| <td>HID usage page: 0x0C<br> |
| HID usage: 0x0CF</td> |
| </tr> |
| </table> |
| |
| <p class="note">Key mappings should be declared within a HID application |
| collection. For accessories without a microphone, use Headphone (Usage |
| Page: Consumer (0x0C), Usage: Headphone (0x05)). For accesories with a |
| microphone, use Headset (Usage Page: Telephony (0x0B), Usage: Headset (0x05)).</p> |
| |
| <h2 id="output-level">Output level</h2> |
| <p> |
| The maximum sound pressure level shall comply to any regulatory requirement in |
| the country of destination. |
| </p> |
| |
| <h2 id="mechanical">Mechanical</h2> |
| <p> |
| Accessory manufacturers must follow the requirements for USB connectors |
| as specified by <a href="http://www.usb.org/">USB.org</a>. |
| </p> |
| |
| </body> |
| </html> |