Cannot speak to front microphone with ordinary 3-pin headset jack inserted?

xaueious

Administrator
Staff member
Jul 9, 2010
3,483
436
I use the S7 as a phone, but when I plug any 3.5mm 3pin plug into my S7, I find that I cannot speak through the front microphone.

Or is there a workaround?
 

vferrari

Senior Member
Dec 4, 2010
359
25
So you're saying any normal stereo headset plug (3-pin) vs. a stereo phone-headset (4-pin with built-in mic) is cutting out the S7's built in mic? My only suggestion if you must absolutely use the onboard mic would be to use a mono (1 or 2-speaker) headset without mic and see if that works. Otherwise your only option is just using a stereo phone headset and use the headset's built-in mic or a bluetooth headset.
 

xaueious

Administrator
Staff member
Jul 9, 2010
3,483
436
I don't have a mono headset. I doubt it will make a difference here though...

With all my other cellphones, it detects when I have a 4-pin jack plugged in and reroutes audio to the headset, and doesn't do that for the 3-pin.

Can someone confirm this behavior / bug?
 

lemmyslender

Senior Member
Jan 10, 2011
95
9
I believe I've run into this before as well using a regular cheapo set of headphones. Just one time when I was playing around with voice search.
 

joenilan

Senior Member
Feb 4, 2011
208
60
i'm pretty sure it's like that for most of these types of phones that you would try to use a regular pair of headphones with, thats why they come with those kinds of headsets in the box, though they suck, they do have a microphone on them, and inserting regular headphones into the phone defeats the purpose of a microphone because it's not made to work with regular headphones, my suggestion either buy a nice set of headphones with a microphone or a pair of wrap around bluetooth headphones, but to my knowledge it's like that with every phone because they are meant to be used as that, a phone. i have the HTC HD2 w/ Android on it and same problem there if you try regular headphones, reads as a headset but obviously no way of speaking.
 

pa49

Senior Member
Nov 29, 2010
365
38
Manufacturers sometimes used differing 4 band 3.5mm configurations and they often don't work with other devices. When you plug in, the internal mic connect is re routed to the headset. Get inside the S7, hot wire the mic connect and cut your headset mic cable and you're there. But drastic though!
 

xaueious

Administrator
Staff member
Jul 9, 2010
3,483
436
Pretty sure that is not how cellphones work. At least for my Acer Liquid E and HTC Dream (G1). Also tried the Galaxy S.

It only routes the microphone with a 4-pin plug. With a 3-pin, itis supposed to retain the speakerphone microphone on the device.

The problem is that the Huawei defaults as if there were no speakerphone mode, so they screwed up some coding there.
 

pa49

Senior Member
Nov 29, 2010
365
38
Well, I have a Nokia that won't work with anything but Nokia headsets!
 

xaueious

Administrator
Staff member
Jul 9, 2010
3,483
436
The 4 band configuration is not really working with my Shure i2c, so you were spot on with that. I haven't investigated this in detail, but that was going to be my other option. I'll revisit this again later...
 

JDubTrey

Member
Feb 20, 2011
67
0
I'm trying to use a 3.5 motorola headset (with mic; 4 pin?) that works with a bunch of other devices. When I use it with the S7, it immediately hangs up the call. If I start the call with the headset in the jack, it hangs up after connecting. If I put it in the jack in after the call has connected, it hangs up right after inserting it.
 

xaueious

Administrator
Staff member
Jul 9, 2010
3,483
436
Finally bothered to logcat this issue.

With an ordinary 3-pin adapter (cheap headphones) plugged into the headphone jack:

Code:
V/HeadsetObserver( 1120): Headset UEVENT: {SUBSYSTEM=switch, SWITCH_STATE=1, DEVPATH=/devices/virtual/switch/h2w, SEQNUM=2403, ACTION=change, SWITCH_NAME=Headset}
V/HeadsetObserver( 1120): Intent.ACTION_HEADSET_PLUG: state: 1 name: Headset[B] mic: 1[/B]
...

Relevant source code: android.git.kernel.org Git - platform/frameworks/base.git/blob - services/java/com/android/server/HeadsetObserver.java

Referencing FM Radio on 2.x ROMs - An Idea - xda-developers
The value of /sys/class/switch/h2w/state when the 3-pin is plugged is '1' regardless of type.

Maybe this is a kernel side issue with the headset file?

Comparing to the way acer modified the headset, it seems that Huawei didn't touch the way it handles headsets without microphones, as evidenced by the largely unmodified https://github.com/razor950/huawei_s7_kernel/blob/master/arch/arm/mach-msm/rpc_server_handset.c used.

I guess there's this for reference?

I doubt Huawei is fixing this for their 2.2 release. I'll move this to development...
 

xaueious

Administrator
Staff member
Jul 9, 2010
3,483
436
Under rpc_server_handset.c

You can force the value of /sys/class/switch/h2w/state always to 2 during a headset trigger. This is equivalent of headset no mic, and as a result never disables your S7's front microphone if plugged in. Android framework deals with this built-in, even though Huawei didn't or couldn't implement this in the kernel/hardware.

The problem with this is that it is a kernel workaround right now, and I do not know how to fix it in other ways.


So now you can use a 3-pin audio jack into your car stereo and still be able to speak into your S7.
 
Top