I'm working on an audio application for mobile phones. At this point in time I'm trying to measure audio latency of a mobile device by feeding colored noise into its microphone jack and having it play it back through the headphones, and correlating/deconvolving the two to obtain the time delay.

This all sounds great on paper, but my problem is that the phone will only accept inputs of certain impedance as microphones, or at least that's my guess. I've tried several microphones (actual transducers), and some of them worked while others didn't. As a rule of thumb, headset-like mics worked. Vocal-like dynamic mics didn't. I'm guessing there has to be enough bias current for a microphone to work. When simply taking an audio cable from the output of a computer or MP3 player and putting it into the microphone jack of the mobile phone it never works. What I mean by that is that the device does not recognize presence of an external microphone and does not switch to it as default input.

I don't know a whole lot about current biases and such, but do you suppose there's a way of building a circuit to somehow "trick" the phone into thinking that there's a microphone plugged into it when it's a line in instead?

  • \$\begingroup\$ Which phone? Some have headset inputs, some have dedicated line inputs ("enhanced USB"), etc. \$\endgroup\$
    – endolith
    Oct 10, 2011 at 19:53
  • \$\begingroup\$ @endolith It's a TRRS headset input which I'm splitting into headphone stereo and mic using a splitter. I'm testing it on iPhone4 and Nexus S. \$\endgroup\$
    – Phonon
    Oct 10, 2011 at 19:59
  • \$\begingroup\$ I've been looking for this answer too! I have a Nexus One, and I haven't found any way to connect an external source (including using purpose-built line-level-to-microphone-level attenuators). \$\endgroup\$
    – Kevin Reid
    Oct 10, 2011 at 23:39

1 Answer 1


The TRRS connectors are wired like this, in order:

  • Tip: Left output
  • Ring: Right output
  • Ring: Ground/return
  • Sleeve: Microphone input

That way the headphones will work plugged into a normal TRS jack, too.

The microphone input is meant to connect to an electret mic with a circuit like this:enter image description here

The bias voltage, resistor, and DC-blocking capacitor are all inside the phone. So just connecting a signal source like a computer's sound card to the microphone input (with ground to the ground ring) should work.

If your sound source's DC output resistance is too low (normally a good thing), the phone could be interpreting it as a continuous button press (Answer or Play/Pause), because the headset button shorts the mic line's bias resistor to ground. Does it do anything to indicate that it thinks a button is being pressed? If this is the case, just put an electrolytic capacitor in series with your source, like 10 µF to 100 µF between your source and the microphone input. This will block the DC current from the bias resistor while allowing the AC signal to pass. Larger capacitance will have better low-frequency response.

For instance, if the input impedance of the phone is 2.2 kΩ, 10 µF will have a -3 dB cutoff frequency of 7 Hz, which is plenty.

  • \$\begingroup\$ @SwiftArchitect No. Is it not working? \$\endgroup\$
    – endolith
    Feb 2, 2016 at 17:19
  • 2
    \$\begingroup\$ You need to short mic pin with ground using resistor eg. 4-10 k ohm. Most of soundcards have so high output resistance at DC that phone detects it as open circuit. Phones use resistance sensing to differentiate between headphones without mic and headsets with mic. I just made such magic cable shorting mic to ground via 10k resistor and phone detects it as "mic". Connecting line-out in parallel works as intended. I based this setup on answer from this thread: electronics.stackexchange.com/questions/95575/… \$\endgroup\$
    – Lapsio
    Dec 24, 2020 at 12:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.