2024-04-05 09:01:05

by Frédéric Danis

[permalink] [raw]
Subject: [PATCH BlueZ] device: Fix airpods pairing

Apple Airpods are discoverable and pairable in BREDR mode, but also
advertise in unconnectable mode in LE with the same Public address, at the
same time. As the pairing process uses the latest seen address, sometimes
it uses the LE Public address to pair, which fails.

This commit introduces the connectable state when selecting the bearer to
use for a connection. The last_seen value is used only for connectable
devices.
---
src/device.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/device.c b/src/device.c
index ac0b0e003..1d4b8ab36 100644
--- a/src/device.c
+++ b/src/device.c
@@ -2537,13 +2537,13 @@ static uint8_t select_conn_bearer(struct btd_device *dev)
if (dev->bdaddr_type == BDADDR_LE_RANDOM)
return dev->bdaddr_type;

- if (dev->bredr_state.last_seen) {
+ if (dev->bredr_state.connectable && dev->bredr_state.last_seen) {
bredr_last = current - dev->bredr_state.last_seen;
if (bredr_last > SEEN_TRESHHOLD)
bredr_last = NVAL_TIME;
}

- if (dev->le_state.last_seen) {
+ if (dev->le_state.connectable && dev->le_state.last_seen) {
le_last = current - dev->le_state.last_seen;
if (le_last > SEEN_TRESHHOLD)
le_last = NVAL_TIME;
--
2.34.1



2024-04-05 10:37:59

by bluez.test.bot

[permalink] [raw]
Subject: RE: [BlueZ] device: Fix airpods pairing

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=841718

---Test result---

Test Summary:
CheckPatch PASS 1.48 seconds
GitLint PASS 0.31 seconds
BuildEll PASS 24.53 seconds
BluezMake PASS 1617.20 seconds
MakeCheck PASS 12.91 seconds
MakeDistcheck PASS 176.72 seconds
CheckValgrind PASS 245.82 seconds
CheckSmatch PASS 349.97 seconds
bluezmakeextell PASS 119.24 seconds
IncrementalBuild PASS 1390.81 seconds
ScanBuild PASS 990.97 seconds



---
Regards,
Linux Bluetooth

2024-04-05 15:00:38

by patchwork-bot+bluetooth

[permalink] [raw]
Subject: Re: [PATCH BlueZ] device: Fix airpods pairing

Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <[email protected]>:

On Fri, 5 Apr 2024 11:00:50 +0200 you wrote:
> Apple Airpods are discoverable and pairable in BREDR mode, but also
> advertise in unconnectable mode in LE with the same Public address, at the
> same time. As the pairing process uses the latest seen address, sometimes
> it uses the LE Public address to pair, which fails.
>
> This commit introduces the connectable state when selecting the bearer to
> use for a connection. The last_seen value is used only for connectable
> devices.
>
> [...]

Here is the summary with links:
- [BlueZ] device: Fix airpods pairing
https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=98bed16d254c

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html