USB-C-to-analog audio adapter

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'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

Button functions

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