Closed Bug 1124760 Opened 9 years ago Closed 9 years ago

[Bluetooth][Music] Speaker / Headphone basic remote control commands (play/pause/stop, etc.) do not function

Categories

(Firefox OS Graveyard :: Bluetooth, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

(blocking-b2g:2.2+, b2g-v2.2 verified, b2g-master verified)

VERIFIED FIXED
2.2 S4 (23jan)
blocking-b2g 2.2+
Tracking Status
b2g-v2.2 --- verified
b2g-master --- verified

People

(Reporter: jmitchell, Assigned: brsun)

References

Details

(Keywords: regression, smoketest, Whiteboard: [3.0-Daily-Testing])

Attachments

(4 files)

Description:
Headphone devices can connect to the test phone, and music can be heard through the headphones but the basic controls (Volume up/down, track forward/back, play/pause) do not affect the phone / music track. 


Repro Steps:
1) Update a Flame to 20150122010203
2) Enable Bluetooth and connect a headphone device
3) Open Music app and play a track / song
4) Ensure music can be heard through headphone device
5) Attempt to use controls on headphone

Actual:
Controls do not function

Expected:
Controls will function and affect the device

Environmental Variables:
Device: Flame 3.0
Build ID: 20150122010203
Gaia: 917b6c36717fddc6e71ffc1ec249633c8044c93c
Gecko: 34e2d2bd7ec4
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 38.0a1 (3.0)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0


Repro frequency: 9/9
Link to failed test case: https://moztrap.mozilla.org/manage/case/9346/
See attached: logcat

------------------------------------------------------------------------------------
This issue does NOT repro with Flame 2.2 (v18d-1) or Flame 2.2 (v18d)

Device: Flame 2.2 (KK - Nightly - Full Flash)
Build ID: 20150122002808
Gaia: e4f9b5da3751798f9cc5d95f302c30722cc11fca
Gecko: 4a90da67661e
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 37.0a2 (2.2)
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0

Device: Flame 2.2 (KK - Nightly - Full Flash)
Build ID: 20150122002808
Gaia: e4f9b5da3751798f9cc5d95f302c30722cc11fca
Gecko: 4a90da67661e
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 37.0a2 (2.2)
Firmware Version: v18D
User Agent: Mozilla/5.0 (Mobile; rv:37.0) Gecko/37.0 Firefox/37.0
QA Whiteboard: [QAnalyst-Triage?]
Flags: needinfo?(pbylenga)
This was tested with:

Device 1) Arctic p253 BT headset
Device 2) AirBand Wireless Bluetooth Headset (GG-Air)
[Blocking Requested - why for this release]:

Nominating 3.0? since this is a regression and smoke test blocker.
blocking-b2g: --- → 3.0?
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
QA Contact: ychung
Flags: needinfo?(pbylenga)
b2g-inbound Regression Window:

Last Working Environmental Variables:
Device: Flame 3.0
BuildID: 20150120001341
Gaia: 90e1a2525d3cded5945cfaee277ac8d6075beb8c
Gecko: f0d42391b5fd
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 38.0a1 (3.0) 
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0

First Broken Environmental Variables:
Device: Flame 3.0
BuildID: 20150120011239
Gaia: a47ec54a7040d6f689c3eabd2f23bb510c78c0cd
Gecko: fc9006e38f20
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 38.0a1 (3.0) 
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0

Last Working Gaia First Broken Gecko: Issue DOES reproduce 
Gaia: 90e1a2525d3cded5945cfaee277ac8d6075beb8c
Gecko: fc9006e38f20

First Broken Gaia Last Working Gecko: Issue DOES NOT reproduce
Gaia: a47ec54a7040d6f689c3eabd2f23bb510c78c0cd
Gecko: f0d42391b5fd

http://hg.mozilla.org/integration/b2g-inbound/pushloghtml?fromchange=f0d42391b5fd&tochange=fc9006e38f20

Caused by bug 1065336
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage?]
Flags: needinfo?(ktucker)
Thomas, can you take a look at this please? This might have been caused by the work done on bug 1065336
QA Whiteboard: [QAnalyst-Triage?] → [QAnalyst-Triage+]
Flags: needinfo?(ktucker) → needinfo?(tzimmermann)
:shawnjohnjr, this is a smoketest blocker. To maintain high quality on the master branch, please arrange to have the offending commit backed out.
Flags: needinfo?(shuang)
(In reply to Parul Mathur [:pragmatic] from comment #6)
> :shawnjohnjr, this is a smoketest blocker. To maintain high quality on the
> master branch, please arrange to have the offending commit backed out.

This caused by bluetoothd run as bluetooth permission, however bluedroid stack generated key event required uevent permission. When we make bluetoothd run as root permission, bluetoothd can successfully generate key event.

bug 1065336 aims to prepare environment to switch bluedroid or bluetoothd. Right now, the default backend loader is bluetoothd. I prefer to fix permission problem through init.bluetooth.rc configuration instead of backing out commit.
Flags: needinfo?(tzimmermann)
Flags: needinfo?(shuang)
I found on Nexus 5 /dev/uinput group permission is net_bt_stack
shawnjohnjr@shawnjohnjr-BM6875-BM6675-BP6375:~/mytmp$ adb shell ls -l /dev/uinput
crw-rw---- system   net_bt_stack  10, 223 1970-02-13 14:57 uinput

But on flame-kk, the group permission of /dev/uinput is bluetooth
shawnjohnjr@shawnjohnjr-BM6875-BM6675-BP6375:~/mytmp$ adb shell ls -l /dev/uinput
crw-rw---- system   bluetooth  10, 223 1970-03-22 09:35 uinput

So, for better compatibility we shall add bluetooth, net_bt_stack in group permission.
As stated on comment 8, |net_bt_stack| and |bluetooth| permissions are needed for bluetoothd.
Attachment #8553599 - Flags: review?(shuang)
Just want to thank Shawn and Bruce, who have been picking up and fixing these issues. :)
Comment on attachment 8553599 [details] [review]
https://github.com/mozilla-b2g/platform_system_bluetoothd/pull/13

NOTE: Please see https://wiki.mozilla.org/Release_Management/B2G_Landing to better understand the B2G approval process and landings.

[Approval Request Comment]
Bug caused by (feature/regressing bug #): None
User impact if declined: bluetoothd fail to send key events to /dev/uinput
Testing completed: Both flame-kk and nexus5-l shall receive AVRCP key events
Risk to taking this patch (and alternatives if risky): None. Same as Android implementation
String or UUID changes made by this patch: None
Attachment #8553599 - Flags: approval-mozilla-b2g37?
Keywords: checkin-needed
Master: https://github.com/mozilla-b2g/platform_system_bluetoothd/commit/d3e2de81952c45d6ed658cdf367a6e7283b9c3ce
Assignee: nobody → brsun
Status: NEW → RESOLVED
blocking-b2g: 3.0? → 2.2?
Closed: 9 years ago
Keywords: checkin-needed
Resolution: --- → FIXED
Target Milestone: --- → 2.2 S4 (23jan)
:ktucker, could you please verify fixed on the next available nightly build?
Flags: needinfo?(ktucker)
There is additional behavior that raises the severity of this bug with one of the particular headsets that went undocumented yesterday as well as a different one we have available for testing: triggering the 'redial last number' on a bluetooth device will crash/restart the phone. If this isn't seen to be resolved by the b2g fix from comment#10 + comment#12, I can write this up separately for better tracking.

PreReq:
With the bluetooth devices:
* Arctic p253 BT headset (AVRCP) -- locate 'Skip' Button [hold down for 'Redial last number']
* Motorola Commander (A2D2P) -- hold back power button ['Redial last call']
1) Open 'Settings' app.
2) Open 'Bluetooth'.
3) Connect/ensure above device is connected.
4) Once connected, hold specified button button.

Actual Results: 
Phone restarts.

Expected Results: 
Redial the last phone number.

Environmental Variables:
----------------------------------------------
Device: Flame 3.0
BuildID: 20150123010227
Gaia: cba2f0bf49b882e0044c3cc583de8fcf83d2ffa4
Gecko: 494632b9afed
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 38.0a1 (3.0)
Firmware: V18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0
----------------------------------------------
Repro: 5/5

Video- http://youtu.be/q2Ax50xvgqY
logcat to follow
Flags: needinfo?(pbylenga)
let's verify this bug on the next nightly and if the issue in Comment 14 still reproduces with the original issue in Comment 0 been verified we can then open a new issue to track Comment 14.
Flags: needinfo?(pbylenga)
Follow up Comment 14, bug 1125719 was opened.
Bug 1125719 - [Bluetooth] Redial from bluetooth device cause bluetoothd and gecko crash.
This issue still reproduces on today's nightly for flame 3.0 devices.
Results: Controls do not function.

--------------------------------------------------
Environmental Variables:
Device: Flame 3.0
BuildID: 20150126010231
Gaia: 0f662dffef27599443cfcd790c2b39190a2b35c8
Gecko: fa91879c8428
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 38.0a1 (3.0) 
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0
--------------------------------------------------
Results: 3/3
Flags: needinfo?(ktucker)
Resetting the flag I changed in my previous comment and adding the [failed-verification] tag to QA whiteboard.
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage+][failed-verification]
shuang, looks like the patch did not work so holding off the approval for now.
comment#18 reproducing this issue was a result of an OTA performed between Friday's build of the 23rd (before the fix) to today's build of the 26th.

Upon full flashing the build with the flame image avaliable from the pvt_builds site, the issue is NO LONGER REPRODUCING on flame 3.0 devices.
Results: User can utilize remote control commands via bluetooth headset to skip/pause/rewind tracks.

--------------------------------------------------
Environmental Variables:
Device: Flame 3.0
BuildID: 20150126010231
Gaia: 0f662dffef27599443cfcd790c2b39190a2b35c8
Gecko: fa91879c8428
Gonk: e7c90613521145db090dd24147afd5ceb5703190
Version: 38.0a1 (3.0) 
Firmware Version: v18D-1
User Agent: Mozilla/5.0 (Mobile; rv:38.0) Gecko/38.0 Firefox/38.0
--------------------------------------------------
Repro: 5/5

Verifying fix in 3.0 build and removing now invalid QA Whiteboard tag.

It may be worth noting that the issue mentioned in comment#14 (and being tracked in bug 1125719) is still reproducing.
Status: RESOLVED → VERIFIED
QA Whiteboard: [QAnalyst-Triage+][failed-verification] → [QAnalyst-Triage+]
shawn, so dogfooders who hit this via OTA have to do a full flash to get out of it ? No other alternative?
(In reply to bhavana bajaj [:bajaj] from comment #22)
> shawn, so dogfooders who hit this via OTA have to do a full flash to get out
> of it ? No other alternative?

init.bluetooth.rc is part of boot.img. So users have to flash boot.img. All init.rc files were placed inside ramdisk to avoid any kinds of illegal modification and that will be common rules.
Sorry, I don't see alternative here.
blocking-b2g: 2.2? → 2.2+
(In reply to Shawn Huang [:shawnjohnjr] from comment #23)
> (In reply to bhavana bajaj [:bajaj] from comment #22)
> > shawn, so dogfooders who hit this via OTA have to do a full flash to get out
> > of it ? No other alternative?
> 
> init.bluetooth.rc is part of boot.img. So users have to flash boot.img. All
> init.rc files were placed inside ramdisk to avoid any kinds of illegal
> modification and that will be common rules.
> Sorry, I don't see alternative here.

ok, might be a good time if you can help email dev-gaia/b2g about this landing and letting them know about full flash situation so folks don't run into this.Thanks!!
Attachment #8553599 - Flags: approval-mozilla-b2g37? → approval-mozilla-b2g37+
(In reply to bhavana bajaj [:bajaj] from comment #25)
> (In reply to Shawn Huang [:shawnjohnjr] from comment #23)
> > (In reply to bhavana bajaj [:bajaj] from comment #22)
> > > shawn, so dogfooders who hit this via OTA have to do a full flash to get out
> > > of it ? No other alternative?
> > 
> > init.bluetooth.rc is part of boot.img. So users have to flash boot.img. All
> > init.rc files were placed inside ramdisk to avoid any kinds of illegal
> > modification and that will be common rules.
> > Sorry, I don't see alternative here.
> 
> ok, might be a good time if you can help email dev-gaia/b2g about this
> landing and letting them know about full flash situation so folks don't run
> into this.Thanks!!

We actually did it. 	
Around 21 and 22 Jan. I guess we need to address this issue again.

https://groups.google.com/forum/#!searchin/mozilla.dev.b2g/Bluetooth$20daemon$20will$20land$20during$20January|sort:relevance/mozilla.dev.b2g/-OAzpQ7CPss/AEkIMPcsDlkJ

Bruce Sun via lists.mozilla.org 
	
22 Jan (6 days ago)
Hello everyone,

the Bluetooth team has been working on a new Bluetooth daemon for the
last couple of months. The work is almost complete and we will enable it
step-by-step during January.

We have tested our new architecture on different targets and Android
versions, but there might still be problems that we didn't notice. If
you run into a Bluetooth bug, such as build errors or broken Bluetooth
services, and you think it's related to the new Bluetooth daemon, please
report a bug that blocks bug 1005934 [1] and/or add me (:tzimmermann) to
the cc list.

Best regards
Thomas

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1005934
		
We landed the final patches for enabling the Bluetooth daemon on master
for JB and KK. L will be ready soon. If you see related problems with
Bluetooth, please make sure your local branches are up to date. If that
doesn't help, please report a bug and add me (:tzimmermann) to the cc list.

Best regards
Thomas

to Thomas, dev-bluetooth, Mozilla
Hi all,

It's worth noting that *boot.img* should be built and flashed to your
device along with gecko changes.

Generally speaking, Bluetooth daemon should work fine by building all and
flashing all onto your device. But if you would like to save time by just
building and flashing necessary components only, the following steps would
help.

step 0: Make sure your codes are updated.
 - $ git pull
 - $ ./repo sync
step 1: Build libfdio.so, bluetoothd, boot.img, and gecko.
 - $ . setup.sh
 - $ mmm system/libfdio
 - $ mmm system/bluetoothd
 - $ ./build.sh bootimage
 - $ ./build.sh gecko
step 2: Flash boot.img and gecko.
 - $ ./flash.sh boot
 - $ ./flash.sh gecko
step 3: Reboot the device. Done.
 - $ adb reboot

If you would like to try the Bluetooth daemon by flashing PVT builds,
please remember to flash boot.img and system.img both onto your device.

Best regards,
Bruce Sun.
I'll forward those emails to dev-gaia specifically. Maybe some people don't read dev-b2g.
Done:

https://groups.google.com/forum/#!topic/mozilla.dev.gaia/Hkl_CswKkGY

We got several invalid bug reports about Bluetooth. Maybe be could have communicated the change better. I expected that everyone reads dev-b2g, but that doesn't seem to be the case.
(In reply to Shawn Huang [:shawnjohnjr] from comment #23)
> (In reply to bhavana bajaj [:bajaj] from comment #22)
> > shawn, so dogfooders who hit this via OTA have to do a full flash to get out
> > of it ? No other alternative?
> 
> init.bluetooth.rc is part of boot.img. So users have to flash boot.img. All
> init.rc files were placed inside ramdisk to avoid any kinds of illegal
> modification and that will be common rules.
> Sorry, I don't see alternative here.

For the record, I opened bug 1130288 to have solution for OTA update and shallow flash. 
Bug 1130288 - Move bluetoothd from /system/bin to /system/b2g for OTA update package
Attached video verify_2.2.3gp
This bug has been verified as "pass" on latest build of Flame v2.2,Nexus5 v2.2 by the STR in comment 0.

Actually result: Controls will function and affect the device.
Reproduce rate: 0/10
See attachment: verify_2.2.3gp

Device: Flame 2.2 (pass):
Build ID               20150705162505
Gaia Revision          ea11f422b687a982f0a961c9aea7858066561707
Gaia Date              2015-07-02 23:37:50
Gecko Revision         https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/c0214b4c1ea0
Gecko Version          37.0
Device Name            flame
Firmware(Release)      4.4.2
Firmware(Incremental)  eng.cltbld.20150705.200108
Firmware Date          Sun Jul  5 20:01:20 EDT 2015
Bootloader             L1TC000118D0

Device: Nexus 5_2.2 (pass):
Build ID               20150705002505
Gaia Revision          ea11f422b687a982f0a961c9aea7858066561707
Gaia Date              2015-07-02 23:37:50
Gecko Revision         https://hg.mozilla.org/releases/mozilla-b2g37_v2_2/rev/c0214b4c1ea0
Gecko Version          37.0
Device Name            hammerhead
Firmware(Release)      5.1
Firmware(Incremental)  eng.cltbld.20150705.041046
Firmware Date          Sun Jul  5 04:11:05 EDT 2015
Bootloader             HHZ12f
QA Whiteboard: [QAnalyst-Triage+] → [QAnalyst-Triage+][MGSEI-Triage+]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: