Public bug reported: [ Impact ] When a remote device connects AVRCP before AVDTP, the AVRCP target volume is left uninitialised. This causes the target to reject the remote controller's registration for EVENT_VOLUME_CHANGED, breaking all subsequent volume control for that connection. Users see Failed to set Volume: org.bluez.Error.Failed in bluetoothctl regardless of the value set. The fix initialises the target volume to its maximum valid value when invalid, allowing EVENT_VOLUME_CHANGED registration to succeed and restoring normal volume control.
[ Test Plan ] Requirements: Ubuntu DUT as A2DP sink, iPhone as the remote (easy to reproduce with iOS devices). 1. Start playing audio in IPhone 2. Pair and connect to DUT from IPhone 3. Try to set volume from DUT bluetoothctl menu transport volume /org/bluez/hci0/xxxx/fdx 50 Before fix: command fails with Failed to set Volume: org.bluez.Error.Failed After fix: command succeeds and the iPhone reflects the volume change. [ Where problems could occur ] Unexpected initial volume: Initialising to maximum volume means the controller receives max volume as its starting point before applying its own level, which could cause a brief loud output on connection. [ Other Info ] Triggered specifically when AVRCP connects before AVDTP — reliably reproducible with iOS devices. Upstream commit: https://github.com/bluez/bluez/commit/121e5ca79be559c5374f8a54c6fb6e233e383379 No security implications; functional fix only. ** Affects: bluez (Ubuntu) Importance: Undecided Status: New ** Description changed: [ Impact ] - When a remote device connects AVRCP before AVDTP (easy to reproduce with iOS devices), the AVRCP target volume is left uninitialised. This causes the target to reject the remote controller's registration for EVENT_VOLUME_CHANGED, breaking all subsequent volume control for that connection. Users see Failed to set Volume: org.bluez.Error.Failed in bluetoothctl regardless of the value set. + When a remote device connects AVRCP before AVDTP, the AVRCP target volume is left uninitialised. This causes the target to reject the remote controller's registration for EVENT_VOLUME_CHANGED, breaking all subsequent volume control for that connection. Users see Failed to set Volume: org.bluez.Error.Failed in bluetoothctl regardless of the value set. The fix initialises the target volume to its maximum valid value when invalid, allowing EVENT_VOLUME_CHANGED registration to succeed and restoring normal volume control. [ Test Plan ] - Requirements: Ubuntu DUT as A2DP sink, iPhone as the remote (iOS reliably connects AVRCP before AVDTP). + Requirements: Ubuntu DUT as A2DP sink, iPhone as the remote (easy to reproduce with iOS devices). 1. Start playing audio in IPhone 2. Pair and connect to DUT from IPhone 3. Try to set volume from DUT bluetoothctl menu transport volume /org/bluez/hci0/xxxx/fdx 50 Before fix: command fails with Failed to set Volume: org.bluez.Error.Failed After fix: command succeeds and the iPhone reflects the volume change. - [ Where problems could occur ] Unexpected initial volume: Initialising to maximum volume means the controller receives max volume as its starting point before applying its own level, which could cause a brief loud output on connection. - [ Other Info ] Triggered specifically when AVRCP connects before AVDTP — reliably reproducible with iOS devices. Upstream commit: https://github.com/bluez/bluez/commit/121e5ca79be559c5374f8a54c6fb6e233e383379 No security implications; functional fix only. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2156488 Title: [SRU][Resolute] volume control broken when AVRCP connects before AVDTP due to uninitialised target volume To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/bluez/+bug/2156488/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
