Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp7034246rdb; Wed, 3 Jan 2024 02:14:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IH1uE4F7MbinvMnzDTbJlNxfjsCaQiPdATt8242HbL8MUBU5ClvkwdC2fNVEdOuZWd5x/mL X-Received: by 2002:a05:6a00:1b4a:b0:6d9:a908:2659 with SMTP id o10-20020a056a001b4a00b006d9a9082659mr7820667pfv.62.1704276852353; Wed, 03 Jan 2024 02:14:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704276852; cv=none; d=google.com; s=arc-20160816; b=JCNEoUfQdRoxgxM51Wie8BemCxnLlHLtsnkLOqVszfehAXbeS2eznzBrJtPeywBdYS IDE90wFM+hkpmFWJtyBBSV41al0kEhuDoLVCUYufhtfinMCv5CtFMdN5phGnH8KDakbD YdiCAhNk7ePhg19ZV1cp4LVMXYo9B+EMsovJ9dqvaI3aUPAaoomF/UNQDBqaCj1YjBF8 4nswwSSc2dr6G+sRq96gokpQTKcvz0ECoT/iEnaT5BhYth8HMUDhBmoc+YCcwTsBLZqL FJwzGpgO/skWe/r3tDewtG65dTpzViCb9VvTwUOTBBeAx2PvrZG8RmoBbfhVw5sM8L3L S9BQ== 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=kGmyFvaqUEfksPOiWS6mp+pAS360wiX9XPeeplFwU7pa/U4jHLlbLzEQz/M9MGEppU c3OxNkSgUwFLvz1pnBTjuuMb2vtD4Fe1RBdWnnIUtQlFRKnNOsOvtgjzriu7C3MOizZj GhAmZNRJ2rfwTqaIXyOw6fdz3zLuaEJzxIK8Rv/0vCEcFOYOI4Ez+YryyuSKaVMyd+gp NoqTGcuNF+OqDw/XSV5NHEhKkxkMYqKoJXsWL8ReDd/VbvPaR41cWKx62yuzAKPiXihE H2gdgV6ucYwLhANwg3IcJj9tl2HLDU73MEsDtnjowA0Bn8Dcz5CChNhrE82eDtdcp0yO aUbA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@163.com header.s=s110527 header.b=XdRakjkP; spf=pass (google.com: domain of linux-bluetooth+bounces-848-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-848-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=163.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id g66-20020a636b45000000b005cdb499acc4si21229770pgc.169.2024.01.03.02.14.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jan 2024 02:14:12 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth+bounces-848-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@163.com header.s=s110527 header.b=XdRakjkP; spf=pass (google.com: domain of linux-bluetooth+bounces-848-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-848-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 sy.mirrors.kernel.org (Postfix) with ESMTPS id B5873B22CE1 for ; Wed, 3 Jan 2024 10:14:07 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 477B518659; Wed, 3 Jan 2024 10:14:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="XdRakjkP" 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 963051864E for ; Wed, 3 Jan 2024 10:13:58 +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=XdRakjkPhmg2o8AavgH0Y Vg3NuNGfstwsF84xmWwfydFCNtK+ybR38d9vqFzlBOauINwbpOxOwp42nNpIgr5a 9iuHCaF0Lad87QOOUimgY8Aeram0gfJ3AZkmhybZzwN9u80TRAPgKvVH8LpuW/iN aS+s/jNrEhTL2JwUjHuvxE= Received: from WH-D-007635B.QUECTEL.COM (unknown [223.76.229.213]) by zwqz-smtp-mta-g1-0 (Coremail) with SMTP id _____wD3f8BKM5VlEtudAA--.40145S2; Wed, 03 Jan 2024 18:13:31 +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: Wed, 3 Jan 2024 18:13:28 +0800 Message-Id: <20240103101328.1812899-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:_____wD3f8BKM5VlEtudAA--.40145S2 X-Coremail-Antispam: 1Uf129KBjvJXoW7ZF47Kw4UtFykWF1rCFykKrg_yoW8WrWrpr Z8Ka95Gr4jg3W2gw13Wa47Wr13Cw4kury0qFWSy3ZYkFW7XrWkX3y3tw18ta1UJF9rXa47 JF1DX3WDGw4UKaDanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jyT5dUUUUU= X-CM-SenderInfo: xfod0ux1bvxtlqj6il2tof0z/1tbisRFauGVOA17rbgAAsx 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