page.title=3.5 mm Headset: Accessory Specification
@jd:body

<!--
    Copyright 2015 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.
-->
<div id="qv-wrapper">
  <div id="qv">
    <h2>In this document</h2>
    <ol id="auto-toc">
    </ol>
  </div>
</div>

<p>This article specifies requirements for 3.5 mm plug headsets to
function uniformly across the Android ecosystem.</p>

<p>Device manufacturers should consult the <a href="jack-headset-spec.html">3.5 mm
jack specification</a> and the
<a href="{@docRoot}compatibility/android-cdd.html">Android Compatibility Definition Document</a>
(CDD) for additional requirements.</p>

<h2 id="functions">Functions</h2>

<table style="width:50%">
 <tr>
    <th>Function</th>
    <th>Accessory Support</th>
 </tr>
 <tr>
    <td>Stereo Audio Out</td>
    <td>Required</td>
 </tr>
 <tr>
    <td>Audio in (Mic)</td>
    <td>Required</td>
 </tr>
 <tr>
    <td>Ground</td>
    <td>Required</td>
 </tr>
</table>

<h2 id="control-function_mapping">Control-function mapping</h2>

<table>
 <tr>
    <th style="width:33%">Control Function</th>
    <th style="width:33%">Accessory Support</th>
    <th style="width:33%">Description</th>
 </tr>
 <tr>
    <td>Function A</td>
    <td>Required</td>
    <td>Play/pause/hook (Short Press), Trigger Assist (Long Press), Next
    (Double Press)</td>
 </tr>
 <tr>
    <td>Function B</td>
    <td>Optional</td>
    <td>Vol+</td>
 </tr>
 <tr>
    <td>Function C</td>
    <td>Optional</td>
    <td>Vol-</td>
 </tr>
 <tr>
    <td>Function D</td>
    <td>Optional</td>
    <td>Reserved (Nexus devices use this to launch Voice Assist)
</td>
 </tr>
</table>

<p>Assign functions to buttons as follows:</p>

<ul>
  <li> All one-button headsets must implement Function A.
  <li> Headsets with multiple buttons must implement functions according to the
following pattern:
  <ul>
    <li> 2 functions: A and D
    <li> 3 functions: A, B, C
    <li> 4 functions: A, B, C, D
  </ul>
</ul>

<h2 id="mechanical">Mechanical</h2>

<table>
 <tr>
    <th style="width:33%">Function</th>
    <th style="width:33%">Accessory Support</th>
    <th style="width:33%">Notes</th>
 </tr>
 <tr>
    <td>4 conductor 3.5 mm plug</td>
    <td>Required</td>
    <td>Ref: EIAJ-RC5325A standard</td>
 </tr>
 <tr>
    <td>CTIA pinout order (LRGM)</td>
    <td>Required</td>
    <td>Except in regions with legal requirements for OMTP pinout</td>
 </tr>
 <tr>
    <td>OMTP pinout order (LRMG)</td>
    <td>Optional</td>
    <td></td>
 </tr>
 <tr>
    <td>Microphone</td>
    <td>Required</td>
    <td>Must not be obstructed when operating headset controls</td>
 </tr>
</table>

<h2 id="electrical">Electrical</h2>

<table>
 <tr>
    <th style="width:33%">Function</th>
    <th style="width:33%">Accessory Support</th>
    <th style="width:33%">Description</th>
 </tr>
 <tr>
    <td>Ear speaker impedance</td>
    <td>16 ohms or higher</td>
    <td>Recommend 32 - 300 ohms</td>
 </tr>
 <tr>
    <td>Mic DC resistance</td>
    <td>1000 ohms or higher
</td>
    <td>Mic characteristics must be compliant with section 5.4
    <em>Audio Recording</em> of the current
    <a href="{@docRoot}compatibility/android-cdd.html#5_4_audio_recording">Android CDD</a></td>
 </tr>
 <tr>
    <td rowspan="4">Control Function Equivalent impedance*</td>
    <td>0 ohm</td>
    <td>[Function A] Play/Pause/Hook</td>
 </tr>
 <tr>
    <td>240 ohm +/- 1% resistance</td>
    <td>[Function B]</td>
 </tr>
 <tr>
    <td>470 ohm +/- 1% resistance</td>
    <td>[Function C]</td>
 </tr>
 <tr>
    <td>135 ohm +/- 1% resistance</td>
    <td>[Function D]</td>
 </tr>
</table>

<p><em>*Total impedance from positive mic terminal to GND when button is
pressed with 2.2 V mic bias applied through 2.2 kOhm resistor</em></p>

<p>In the following diagrams, Button A maps to Function A, Button B to
Function B, and so on.</p>

<h2 id="reference_headsets">Reference headset test circuits</h2>

<p>The following diagram for Reference Headset Test Circuit 1 shows the CTIA
pinout for a 4-segment plug. For the OMTP pinout, switch the positions of the
MIC and GND segments.</p>

<img src="images/headset-circuit1.png" alt="Reference Headset Test Circuit 1" />
<p class="img-caption"><strong>Figure 1.</strong> Reference headset test circuit 1</p>

<p>The following diagram for Reference Headset Test Circuit 2 shows how the
actual resistor values (R1 - R4) are altered to meet this specification.</p>

<img src="images/headset-circuit2.png" alt="Reference Headset Test Circuit 2" />
<p class="img-caption"><strong>Figure 2.</strong> Reference headset test circuit 2</p>

<p>The actual resistance of the buttons parallel with the microphone (R1-R4) is
based on the microphone capsule resistance (Rmic) and the equivalent impedance
values (ReqA-ReqD). Use the following formula:</p>

<p><em>Req<sub>N</sub>=(R<sub>mic</sub>*R<sub>n</sub>)/(R<sub>mic</sub>+R<sub>n</sub>)</em></p>

<p>Where R<em>n</em> is the actual resistance of a button, Req<em>N</em> is the
equivalent impedance value of that button (provided), and Rmic is the
microphone impedance value.</p>

<p>The example above assumes a 5 kohm microphone impedance (Rmic); to achieve
an equivalent R4 impedance of 135 ohm (ReqD), the actual resistor value (R4)
must be 139 ohms.</p>

