Closed Bug 1074177 Opened 5 years ago Closed 5 years ago

DTMF tone are not coming on Bluetooth headset

Categories

(Core :: WebRTC: Audio/Video, defect)

ARM
Gonk (Firefox OS)
defect
Not set

Tracking

()

VERIFIED FIXED
mozilla36
blocking-b2g 2.1+
Tracking Status
firefox34 --- wontfix
firefox35 --- wontfix
firefox36 --- fixed
b2g-v2.0 --- unaffected
b2g-v2.1 --- verified
b2g-v2.2 --- verified

People

(Reporter: poojas, Assigned: rlin)

References

Details

(Keywords: regression, Whiteboard: [caf priority: p2][CR 727989])

Attachments

(1 file, 1 obsolete file)

STR:
1. Pair and Connect BT headset with DUT
2. Make a call and receive the call at other end.
3. Now verify DTMF tone by pressing number on keypad

Expected bhavior:
 The DTMF tone should be audible at BT headset.

Actual behavior:
 DTMF tones are not coming on BT headset

Gaia Gecko details:

Gaia: 93a99bea0b40d81bd063f7d8b1964dc1ba35ba7b
Gecko: c896bc5d04b8c08dcddd78195901503a3578a08f
[Blocking Requested - why for this release]:
blocking-b2g: --- → 2.1?
Whiteboard: [CR 725755] → [caf priority: p2][CR 725755]
qawanted to confirm this is a regression in 2.1 and test across branches and we can take it from there for engg to investigate..
Keywords: qawanted
Whiteboard: [caf priority: p2][CR 725755] → [caf priority: p2][CR 727989]
We need to check both audio and keypad part. Since this issue needs to play DTMF tone during in-call mode and mix into SCO link.
Triage: blocking.
Assignee: nobody → echou
blocking-b2g: 2.1? → 2.1+
Issue occurs on Flame 2.2 KK and Flame 2.1 KK.

Actual results: Tones come out of the phone not the bluetooth headset.

Environmental Variables:
Device: Flame 2.2
BuildID: 20140930061521
Gaia: 77ef35f5429bc3dfe9ca192b9aacc3c0bf8857de
Gecko: 2ae57957e4bb
Version: 35.0a1 (2.2) 
Firmware Version: L1TC10011800
User Agent: Mozilla/5.0 (Mobile; rv:35.0) Gecko/35.0 Firefox/35.0


Environmental Variables:
Device: Flame 2.1
BuildID: 20140930093624
Gaia: 89a13e9325948488fd4ae777a97f489189a7ed26
Gecko: 9550de0111d4
Version: 34.0a2 (2.1) 
Firmware Version: L1TC10011800
User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0


Issue does not occur on Flame 2.0 KK and the Flame KK v180 2.0 base.

Actual Results: Tones do come out of the bluetooth headset.

Environmental Variables:
Device: Flame 2.0
BuildID: 20140930095020
Gaia: 5c2303ec4e367da060aa1b807d541a6549b3d72a
Gecko: f19f4e07010a
Version: 32.0 (2.0) 
Firmware Version: L1TC10011800
User Agent: Mozilla/5.0 (Mobile; rv:32.0) Gecko/32.0 Firefox/32.0
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(jmitchell)
Keywords: qawantedregression
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(jmitchell)
QA Contact: jmercado
I can reproduce on

  Flame KK(v180) + latest mozilla-aurora + latest gaia:v2.1

, but I couldn't reproduce on 

  Flame KK(v180) + latest gecko/gaia v2.0

(just like Jayme mentioned in comment 6)

The scenario was that SCO connection had been established when a call was created. During the call I tried to make the keypad appear. After pressing some keys, DTMF tone could be heard from the remote side so I was sure that the SCO connection was still alive, however the sound didn't come out from the connected bluetooth headset.

I also checked related Gaia code in order to make sure that the DTMF tone was truly played. In function _playDtmfTone() which is located in shared/js/dialer/keypad.js, |this._dtmfTone.play()| was executed without any problem.

I believe this is not a Bluetooth issue, I'll find someone to investigate more tomorrow.
Target Milestone: --- → 2.1 S6 (10oct)
Bug 848954 seems to be the cause for this issue.

Mozilla-inbound Regression Window

Last Working 
Environmental Variables:
Device: Flame 2.1
BuildID: 20140826202129
Gaia: 6e804a42ab90f4251c7fe8c68731dc1c6abd8006
Gecko: fff4d503ad88
Version: 34.0a1 (2.1) 
Firmware Version: L1TC00011230
User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0

First Broken 
Environmental Variables:
Device: Flame 2.1
BuildID: 20140826203729
Gaia: 6e804a42ab90f4251c7fe8c68731dc1c6abd8006
Gecko: a71337656d0c
Version: 34.0a1 (2.1) 
Firmware Version: L1TC00011230
User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0

Last Working gaia / First Broken gecko - Issue DOES occur
Gaia: 6e804a42ab90f4251c7fe8c68731dc1c6abd8006
Gecko: a71337656d0c

First Broken gaia / Last Working gekko - Issue does NOT occur
Gaia: 6e804a42ab90f4251c7fe8c68731dc1c6abd8006
Gecko: fff4d503ad88

Gaia Pushlog: http://hg.mozilla.org/integration/mozilla-inbound/pushloghtml?fromchange=fff4d503ad88&tochange=a71337656d0c
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(jmitchell)
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(jmitchell)
Hi Randell,

According to the result of comment 8, this issue seems to be caused by patches for bug 848954. I hope that you and Paul could give us a hand. Since Paul is on PTO, would you mind taking a look?
Flags: needinfo?(rjesup)
Sure.  I'll need some help here.

a) how is Bluetooth normally hooked into the audio chain?  
b) What determines which audio goes there versus the normal speakers
b1) and how does that change on the fly?  (device pairs, device goes away, etc)
c) How does this relate to cubeb running the content process?
d) where do the DTMF sounds come from?
d1) how are they routed/played?
Flags: needinfo?(rjesup) → needinfo?(echou)
(In reply to Randell Jesup [:jesup] from comment #10)
> Sure.  I'll need some help here.
> 
> a) how is Bluetooth normally hooked into the audio chain?  
> b) What determines which audio goes there versus the normal speakers
> b1) and how does that change on the fly?  (device pairs, device goes away,
> etc)
> c) How does this relate to cubeb running the content process?
> d) where do the DTMF sounds come from?
> d1) how are they routed/played?

Shawn is way more familiar than me with this part. I'm going to redirect these questions to him. :)
Flags: needinfo?(echou) → needinfo?(shuang)
I'm not audio guy, but will answer based on understanding
a) While Bluetooth headset connected, during the phone call, open Dialer keypad and tap numbers, DTMF tone will be played, and mixed into Bluetooth audio.
b) During the phone call session (in-call status), it shall be telephony channel type. So dialer plays DTMF tone, channel type shall be also telephony type.
b1) I don't understand the question, Star can you comment it?
c) I'm afraid I cannot answer this question, handover this question to Star
d) gaia/shared/js/dialer/keypad.js, In function _playDtmfTone() which is located in shared/js/dialer/keypad.js, |this._dtmfTone.play()|
d1) With bluetooth headset connected, in-call mode, DTMF tone channel type is telephony mode.
    Without bluetooth headset connected, in-call mode, DTMF tone channel type is normal mode.
When AudioManager.cpp under dom/system/gonk knows that Bluetooth audio connection established, it informs Android AudioSystem https://hg.mozilla.org/releases/mozilla-b2g34_v2_1/file/baaa0c3ab8fd/dom/system/gonk/AudioManager.cpp#l266
Flags: needinfo?(shuang) → needinfo?(scheng)
Delegate this issue to Randell. Please feel free to re-assign. :)
Assignee: echou → rjesup
(In reply to Shawn Huang [:shawnjohnjr] from comment #12)
> I'm not audio guy, but will answer based on understanding
> a) While Bluetooth headset connected, during the phone call, open Dialer
> keypad and tap numbers, DTMF tone will be played, and mixed into Bluetooth
> audio.
> b) During the phone call session (in-call status), it shall be telephony
> channel type. So dialer plays DTMF tone, channel type shall be also
> telephony type.
> b1) I don't understand the question, Star can you comment it?
> c) I'm afraid I cannot answer this question, handover this question to Star

  AudioSink create a named "Media Audio" audioloop thread and init audiostream: 
  AudioStream -> Cubeb_opensl -> opensl lib -> AuidoTrack/AudioFlinger -> Android HAL -> Linux

  There is a kind of audio channel type for audiostream, and the type is mapped to android stream type in CubebUtils::ConvertChannelToCubebType() function. Android HAL decide the routing path based on steam type, connection status and phone state.

> d) gaia/shared/js/dialer/keypad.js, In function _playDtmfTone() which is
> located in shared/js/dialer/keypad.js, |this._dtmfTone.play()|
> d1) With bluetooth headset connected, in-call mode, DTMF tone channel type
> is telephony mode.
>     Without bluetooth headset connected, in-call mode, DTMF tone channel
> type is normal mode.
> When AudioManager.cpp under dom/system/gonk knows that Bluetooth audio
> connection established, it informs Android AudioSystem
> https://hg.mozilla.org/releases/mozilla-b2g34_v2_1/file/baaa0c3ab8fd/dom/
> system/gonk/AudioManager.cpp#l266
Flags: needinfo?(scheng)
Component: Bluetooth → WebRTC: Audio/Video
Product: Firefox OS → Core
Hi Randell, any update on this? The 2.1 FC is Oct 10th and we'd like to know if this can be fixed before then. Thanks.
Flags: needinfo?(rjesup)
I talked with Steven Lee last night; he confirmed that the audio channel type is not correct.  I think he was going to update the bug, but perhaps he didn't get to it before he had to leave.

Unfortunately, I don't have a bluetooth device (I have an ancient one somewhere, but can't find it).  I'm looking over the code for setting the audio channel type, but can't find any obvious differences in result;
Flags: needinfo?(rjesup)
Update from private email from Steven: it's bluetooth only, but the audio channel type is correct.  He'll talk to the audio routing guys tomorrow.
Hi jesup,

We found that 
1. from "adb shell dumpsys", the volume of output-2 is 0
2. I flashed v184 with the latest pvt build of v2.1. DTMF tone works fine.
3. I flashed the whole image of the latest pvt build of v2.1. DTMF tone breaks.

Hi Bobby,
Please contact build team to update the correct image.

hi JMercado,
Please update to v184 and check again.

Thanks
Assignee: rjesup → bchien
Flags: needinfo?(jmercado)
Keywords: qawanted
PVT build is still using v180 binary files (in backup-flame folder).
(In reply to Shawn Huang [:shawnjohnjr] from comment #19)
> PVT build is still using v180 binary files (in backup-flame folder).

Please build PVT images with the latest flame-kk release v184 binary files (under "backup-flame" folder, v184 binary files can work correctly.

Randy Lin found that audio.primary.msm8610.so causes PCM volume gain is 0, this is why we cannot hear anything from Bluetooth SCO. Using v184 binary files, the audio library works correctly, we can see volume gain is 0.5. 

Since this bug raised by CAF, can Pooja help to check internally, see if there is anything wrong from audio library?
This issue does occur on the latest Master build with the v184 base.

Environmental Variables:
Device: Flame 2.2
BuildID: 20141008170004
Gaia: 7b92615bdc97e5c675cd385ec68bc5e47e0c5288
Gecko: f0bb13ef0ee4
Version: 35.0a1 (2.2) 
Firmware Version: L1TC00011840
User Agent: Mozilla/5.0 (Mobile; rv:35.0) Gecko/35.0 Firefox/35.0
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage?]
Flags: needinfo?(jmercado) → needinfo?(jmitchell)
Keywords: qawanted
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(jmitchell)
(In reply to Jayme Mercado [:JMercado] from comment #21)
> This issue does occur on the latest Master build with the v184 base.
> 
> Environmental Variables:
> Device: Flame 2.2
> BuildID: 20141008170004
> Gaia: 7b92615bdc97e5c675cd385ec68bc5e47e0c5288
> Gecko: f0bb13ef0ee4
> Version: 35.0a1 (2.2) 
> Firmware Version: L1TC00011840
> User Agent: Mozilla/5.0 (Mobile; rv:35.0) Gecko/35.0 Firefox/35.0

Is this shallow flash? Only update gecko/gaia (v2.2) based on v184, or full flash (images)?
Thought I had put that in the variables.  I had checked this with shallow flash.
(In reply to Jayme Mercado [:JMercado] from comment #23)
> Thought I had put that in the variables.  I had checked this with shallow
> flash.
We will figure out what happened on v2.2, we did not put efforts on v2.2.
But can you confirm the result after changing v184 with gecko/gaia v2.1?
Adding a qawanted tag so this will appear in my queue to work on tomorrow.
Keywords: qawanted
This issue still occurs on 2.1 Flame KK with the v184 base using both shallow flash and full flash.

Environmental Variables (full flash):
Device: Flame 2.1
BuildID: 20141010080105
Gaia: 94241841e18c0ce41943bd12ab16c338faf99257
Gecko: 0eded22bb3ed
Version: 34.0a2 (2.1) 
Firmware Version: L1TC00011840
User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0

Environmental Variables (Shallow Flash):
Device: Flame 2.1
BuildID: 20141010080105
Gaia: 94241841e18c0ce41943bd12ab16c338faf99257
Gecko: 0eded22bb3ed
Version: 34.0a2 (2.1) 
Firmware Version: L1TC00011840
User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage?]
Flags: needinfo?(jmitchell)
Keywords: qawanted
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(jmitchell)
Hi joshua_M,

I checked again. I found that my flash last week had problem. I did not notice that. We will try to figure out the problem. Sorry for the inconvenience.
Attached patch patch v1 (obsolete) — Splinter Review
Found the system stream volume on bt_sco device should be set when user adjust the system volume.
This patch can fix this issue.
Attachment #8503951 - Flags: review?(mwu)
Randy is working on this.
Assignee: nobody → rlin
Comment on attachment 8503951 [details] [diff] [review]
patch v1

Review of attachment 8503951 [details] [diff] [review]:
-----------------------------------------------------------------

Can we remove the special case handling for aStream == AUDIO_STREAM_BLUETOOTH_SCO and always set AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET?
Attachment #8503951 - Flags: review?(mwu)
Attached patch patch v1.1Splinter Review
I remove it on this patch.
Thanks.
Attachment #8503951 - Attachment is obsolete: true
Attachment #8504460 - Flags: review?(mwu)
Duplicate of this bug: 1082503
Comment on attachment 8504460 [details] [diff] [review]
patch v1.1

Review of attachment 8504460 [details] [diff] [review]:
-----------------------------------------------------------------

::: dom/system/gonk/AudioManager.cpp
@@ +836,5 @@
>                aIndex,
>                AUDIO_DEVICE_OUT_EARPIECE);
> +  // Bug:1074177  DTMF tone are not coming on Bluetooth headset in phone call.
> +  // B2G uses system stream as dtmf tone, so we also need to
> +  // update the system stream volume on bt sco devices.

I'm not sure this comment helps much.
Attachment #8504460 - Flags: review?(mwu) → review+
https://hg.mozilla.org/mozilla-central/rev/b845c0769a85
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Comment on attachment 8504460 [details] [diff] [review]
patch v1.1

Approval Request Comment
[Feature/regressing bug #]:NA
[User impact if declined]:User can't hear DTMF tone during the phone call when user try to press dtmf button.
[Describe test coverage new/current, TBPL]:Test on b2g device.
[Risks and why]: It may affect some test case.
[String/UUID change made/needed]:
Attachment #8504460 - Flags: approval-mozilla-aurora?
Comment on attachment 8504460 [details] [diff] [review]
patch v1.1

v2.1 is on b2g34 now
Attachment #8504460 - Flags: approval-mozilla-aurora? → approval-mozilla-b2g34?
Target Milestone: 2.1 S6 (10oct) → mozilla36
Attachment #8504460 - Flags: approval-mozilla-b2g34? → approval-mozilla-b2g34+
This issue is verified fixed on Flame 2.2.
The tone is heard through the BT headset.

Flame 2.2 

Device: Flame 2.2 Master (319mb)(Kitkat Base)(Full Flash)
BuildID: 20141022040201
Gaia: 4d7f051cede6544f4c83580253c743c22b0cb279
Gecko: ae4d9b4ff2ee
Gonk: 05aa7b98d3f891b334031dc710d48d0d6b82ec1d
Version: 36.0a1 (2.2)
Firmware: V188
User Agent: Mozilla/5.0 (Mobile; rv:36.0) Gecko/36.0 Firefox/36.0
=====================================
Leaving verifyme keyword to check on 2.1 in a couple days.
Status: RESOLVED → VERIFIED
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
Keywords: verifyme
This issue is verified fixed on Flame 2.1.
The tone is heard through the BT headset.

Flame 2.1 

Device: Flame 2.1 (319mb)(Kitkat Base)(Full Flash)
BuildID: 20141024001204
Gaia: 0f76e0baac733cca56d0140e954c5f446ebc061f
Gecko: 7d78ff7d25b6
Gonk: 05aa7b98d3f891b334031dc710d48d0d6b82ec1d
Version: 34.0 (2.1)
Firmware: V188
User Agent: Mozilla/5.0 (Mobile; rv:34.0) Gecko/34.0 Firefox/34.0
Keywords: verifyme
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker)
You need to log in before you can comment on or make changes to this bug.