Starting March 27, 2025, we recommend using android-latest-release
instead of aosp-main
to build and contribute to AOSP. For more information, see Changes to AOSP.
USB-C-to-analog audio adapter
Stay organized with collections
Save and categorize content based on your preferences.
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
3.5 mm headsets
into devices that only have a
USB-C port.
This documentation specifies the minimum requirements: accessory manufacturers
are encouraged to add features while keeping these requirements in mind.
Adapter type
Only digital-to-analog adapters are allowed. Analog-only adapters following
USB.org's "USB Type-C Cable and Connector
Specification, Release 1.2, Appendix A" are not supported.
Functional overview
The adapter allows users to plug their existing 3.5mm accessories into devices
with USB-C ports. To do this, the adapter supports:
- Stereo analog devices with and without microphones
- Digital to analog conversion of 2 output channels
- Analog to digital conversion of 1 input channel
- Detection of analog device insertion
- Detection of headset microphone
- Detection of output impedance
- Translation of headset button events to HID events
Analog interface
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:
- Headphones. Low impedance transducers, < 1 kiloohm, no
microphone: 0x0302
- Headset. Low impedance transducers with microphone: 0x0402
- Line in. High impedance input: 0x603
- Line out. High impedance output: 0x604
- Line in and Line out or Line in and Mic:
0x400
The adapter shall convert button events received from the analog interface and
conforming to the Android
analog headset
specification to the following HID events:
Function |
Mappings |
A |
HID usage page: 0x0C
HID usage: 0x0CD |
B |
HID usage page: 0x0C
HID usage: 0x0E9 |
C |
HID usage page: 0x0C
HID usage: 0x0EA |
D |
HID usage page: 0x0C
HID usage: 0x0CF |
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2024-08-26 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-08-26 UTC."],[],[],null,["# USB-C-to-analog audio adapter\n\nWhile some new Android phones are being produced without a 3.5 mm jack, users\nmay still own 3.5 mm headsets that they want to use with those devices. To\nfacilitate that, this article specifies a USB-C-to-analog audio adapter spec to\nplug\n[3.5 mm headsets](/docs/core/interaction/accessories/headset/plug-headset-spec)\ninto devices that only have a\n[USB-C port](/docs/core/interaction/accessories/headset/usb-device).\n\n\nThis documentation specifies the minimum requirements: accessory manufacturers\nare encouraged to add features while keeping these requirements in mind.\n\nAdapter type\n------------\n\n\nOnly digital-to-analog adapters are allowed. Analog-only adapters following\n[USB.org's](http://www.usb.org/) \"USB Type-C Cable and Connector\nSpecification, Release 1.2, Appendix A\" are not supported.\n\nFunctional overview\n-------------------\n\n\nThe adapter allows users to plug their existing 3.5mm accessories into devices\nwith USB-C ports. To do this, the adapter supports:\n\n- Stereo analog devices with and without microphones\n- Digital to analog conversion of 2 output channels\n- Analog to digital conversion of 1 input channel\n- Detection of analog device insertion\n- Detection of headset microphone\n- Detection of output impedance\n- Translation of headset button events to HID events\n\nAnalog interface\n----------------\n\n\nThe adapter shall not present any UAC interface, playback, or capture endpoints\nto the USB host until a device is inserted and properly identified. Depending on\nthe type of device detected, the following UAC terminal types must be reported:\n\n- **Headphones**. Low impedance transducers, \\\u003c 1 kiloohm, no microphone: 0x0302\n- **Headset**. Low impedance transducers with microphone: 0x0402\n- **Line in**. High impedance input: 0x603\n- **Line out**. High impedance output: 0x604\n- **Line in and Line out** or **Line in and Mic**: 0x400\n\nButton functions\n----------------\n\n\nThe adapter shall convert button events received from the analog interface and\nconforming to the Android\n[analog headset\nspecification](/docs/core/interaction/accessories/headset/plug-headset-spec) to the following HID events:\n\n| Function | Mappings |\n|----------|---------------------------------------|\n| A | HID usage page: 0x0C HID usage: 0x0CD |\n| B | HID usage page: 0x0C HID usage: 0x0E9 |\n| C | HID usage page: 0x0C HID usage: 0x0EA |\n| D | HID usage page: 0x0C HID usage: 0x0CF |"]]