Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp2631277rdb; Mon, 25 Dec 2023 22:31:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IHYoV1c2d3IGULFJCwMxa4tvwsrrhE/laiCe6eyD5AngVPkWubYGRX44ZVWyz2kw2Z39h7P X-Received: by 2002:a0d:da46:0:b0:5e7:8d32:dbd5 with SMTP id c67-20020a0dda46000000b005e78d32dbd5mr4546847ywe.41.1703572260461; Mon, 25 Dec 2023 22:31:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703572260; cv=none; d=google.com; s=arc-20160816; b=dsuueIe9WzgJyaJIOHAZV9+xez+W0m3mj2arR5krfDMg5pl2IpiZsfLTzdB7zvuEPK VlhYI4jL0VScA4kU4OeAqb6wfEuHWewvA42Tx7exO1YlTurJwuWfB+KHwOQtT1TUZAMO vpu6+JaAfa+OpA21+Kf6WrEBXXyYgvHlUjyxBvBdfeV+xhr4cNsQ2u/anPx0dtnElhcd qx3nMnOd/l3FraXuKzSyLuzSx1jlDgiIUt3PqAou2k5KDANbDFQgjrnDfwKjfUtuFr8r OOdpJzaGNfoB1vkIrEi/eGTUa7Cmkl3UOfGCPR7V9gAXq5lJoZkIJ/V3/1CUEmkGy8at 8Shw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from:dkim-signature; bh=1+wOyCxuFdRwkRbseg89dpr/73zEQYpQG6NBYdROfvY=; fh=j9qDAqT5Uf6bFj88Iqh+k9JK2G/ToXkcYSueOJUzmdc=; b=hpWf4JmlOeRQ44dwZzmd5b3a4Hvsq86Hympo6Q0nmUpFujXJ+xgQ9P5fDzTkEgQWBh pb8e09xAwsLipIy6YuJsUfGcAg7mB/3W+9HnabpyEWdoab5990RfrGv5ZNid/MPq6Dy8 tIn+pSM9ITnjYP2HKxNkej1ACdKqxOLdld7bIuT/Kfx9iVk6+l3WCyz/9P4Gc8KuO4Co gIB9jSUxah7R4ZPTPWoh0tAZ4hKitwtSMvy5eHRfOsZuzOe2UPntGOpSeDJE1zTpy36L rD8sDhc5qpAISmKdyWFZ+XXvnruEO4bwjMEp1PViD321do5oa7aAmQuUUTkId3bVEaXk xHJQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@163.com header.s=s110527 header.b=bOOD+KrU; spf=pass (google.com: domain of linux-bluetooth+bounces-746-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-746-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=163.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id q4-20020a170902dac400b001ce5b8cfe7dsi9193917plx.230.2023.12.25.22.31.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Dec 2023 22:31:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth+bounces-746-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@163.com header.s=s110527 header.b=bOOD+KrU; spf=pass (google.com: domain of linux-bluetooth+bounces-746-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-746-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=163.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id AF759282BD1 for ; Tue, 26 Dec 2023 06:30:59 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9B1514AF70; Tue, 26 Dec 2023 06:30:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="bOOD+KrU" X-Original-To: linux-bluetooth@vger.kernel.org Received: from m15.mail.163.com (m15.mail.163.com [45.254.50.220]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 355FD28361 for ; Tue, 26 Dec 2023 06:30:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=1+wOy CxuFdRwkRbseg89dpr/73zEQYpQG6NBYdROfvY=; b=bOOD+KrUlstkg133Z87Tl 1nCzu0PHrTxr0v+SkFqt9wr12/hZCQ96amloIvi79kXWPSOrdzhZ8uAfDYBjwGvD a7W2za9/b08imAWtCQ2XUoAOZh9oalY631SgfPYxf+kjsrFGxwu/W5URB9ysGSFD SFSZaPTWsxESGSFsUpXzLg= Received: from WH-D-007635B.QUECTEL.COM (unknown [223.76.229.213]) by zwqz-smtp-mta-g2-4 (Coremail) with SMTP id _____wD3_xIFc4plKn8gAQ--.50646S2; Tue, 26 Dec 2023 14:30:30 +0800 (CST) From: clancy_shang@163.com To: linux-bluetooth@vger.kernel.org Cc: zhongjun.yu@quectel.com, Clancy Shang Subject: [PATCH] [BlueZ] adapter: Fix airpod device pair fail Date: Tue, 26 Dec 2023 14:30:28 +0800 Message-Id: <20231226063028.2457072-1-clancy_shang@163.com> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID:_____wD3_xIFc4plKn8gAQ--.50646S2 X-Coremail-Antispam: 1Uf129KBjvJXoW7ZF47Kw4UtFykWF1rCFykKrg_yoW8WrWrpr Z8Ka95Gr4jg3W2gw13Wa47Wr13Cw4kury0qFWSy3ZYkFW7XrWkX3y3tw18ta1UJF9rXa47 JF1DX3WDGw4UKaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jQNVkUUUUU= X-CM-SenderInfo: xfod0ux1bvxtlqj6il2tof0z/xtbBzQxSuGVOBDA1LgAAsv From: Clancy Shang Airpod is performing inquiry scans in BR/EDR and advertising in an unconnectable mode with the same public address at the same time. with this feature, when found airpod device, set the bredr support, fix it pairs fail bug. Signed-off-by: Clancy Shang --- src/adapter.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/adapter.c b/src/adapter.c index 022390f0d..71f7ed86d 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -7066,6 +7066,24 @@ static void adapter_msd_notify(struct btd_adapter *adapter, } } +#define APPLE_INC_VENDOR_ID 0x004c + +static bool eir_msd_is_apple_inc(GSList *msd_list) +{ + GSList *msd_l, *msd_next; + + for (msd_l = msd_list; msd_l != NULL; msd_l = msd_next) { + const struct eir_msd *msd = msd_l->data; + + msd_next = g_slist_next(msd_l); + + if (msd->company == APPLE_INC_VENDOR_ID) + return true; + } + + return false; +} + static bool is_filter_match(GSList *discovery_filter, struct eir_data *eir_data, int8_t rssi) { @@ -7281,6 +7299,13 @@ void btd_adapter_device_found(struct btd_adapter *adapter, device_update_last_seen(dev, BDADDR_BREDR, !not_connectable); } + if (eir_msd_is_apple_inc(eir_data.msd_list) && + (not_connectable == true) && + (bdaddr_type == BDADDR_LE_PUBLIC)) { + device_set_bredr_support(dev); + device_update_last_seen(dev, BDADDR_BREDR, true); + } + if (eir_data.name != NULL && eir_data.name_complete) device_store_cached_name(dev, eir_data.name); -- 2.25.1