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

Reply via email to