blob: 4b70bc1dd8ad7be299fb3965d3b89516dac6c776 [file] [log] [blame]
<html devsite>
<head>
<title>USB-C-to-Analog Audio Adapter</title>
<meta name="project_path" value="/_project.yaml" />
<meta name="book_path" value="/_book.yaml" />
</head>
<body>
<!--
Copyright 2018 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>
While some new Android phones are being produced without a 3.5 mm jack, users
may still own 3.5 mm headsets that they want to use with those devices. To
facilitate that, this article specifies a USB-C-to-analog audio adapter spec to
plug
<a href="/devices/accessories/headset/plug-headset-spec.html">3.5 mm headsets</a>
into devices that only have a
<a href="/devices/accessories/headset/usb-device">USB-C port</a>.</p>
<p>
This documentation specifies the minimum requirements: accessory manufacturers
are encouraged to add features while keeping these requirements in mind.
</p>
<h2 id="adapter-type">Adapter type</h2>
<p>
Only digital-to-analog adapters are allowed. Analog-only adapters following
<a href="http://www.usb.org/">USB.org's</a> "USB Type-C Cable and Connector
Specification, Release 1.2, Appendix A" are not supported.
</p>
<h2 id="functional-overview">Functional overview</h2>
<p>
The adapter allows users to plug their existing 3.5mm accessories into devices
with USB-C ports. To do this, the adapter supports:
</p>
<ul>
<li>Stereo analog devices with and without microphones</li>
<li>Digital to analog conversion of 2 output channels</li>
<li>Analog to digital conversion of 1 input channel</li>
<li>Detection of analog device insertion</li>
<li>Detection of headset microphone</li>
<li>Detection of output impedance</li>
<li>Translation of headset button events to HID events</li>
</ul>
<h2 id="analog-interface">Analog interface</h2>
<p>
The adapter shall not present any UAC interface, playback, or capture endpoints
to the USB host until a device is inserted and properly identified. Depending on
the type of device detected, the following UAC terminal types must be reported:
</p>
<ul>
<li><strong>Headphones</strong>. Low impedance transducers, &lt; 1 kiloohm, no
microphone: 0x0302</li>
<li><strong>Headset</strong>. Low impedance transducers with microphone: 0x0402</li>
<li><strong>Line in</strong>. High impedance input: 0x603</li>
<li><strong>Line out</strong>. High impedance output: 0x604</li>
<li><strong>Line in and Line out</strong> or <strong>Line in and Mic</strong>:
0x400</li>
</ul>
<h2 id="button-functions">Button functions</h2>
<p>
The adapter shall convert button events received from the analog interface and
conforming to the Android
<a href="/devices/accessories/headset/plug-headset-spec">analog headset
specification</a> to the following HID events: </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>
</body></html>