当前位置: 首页 > ai >正文

从ellisys空口分析蓝牙耳机回连手机失败案例

问题背景:

前两天同事发现我们现在做的项目,耳机在跟某些特定类型安卓手机(尤其是比较新的手机)回连会失败,然后我帮他分析了一些log,记录如下:
回连失败所做步骤如下:

  1. 手机和耳机进行正常的蓝牙配对连接,手机蓝牙界面能看到配对连接成功的设备。
  2. 耳机入盒,手机和耳机断开蓝牙连接,手机蓝牙界面看到设备断开。
  3. 耳机出盒发起回连,发现手机最终会把耳机在蓝牙界面删除,并且报“authentication failure”错误。

我让同事帮忙抓了一份ellisys空口,打开分析一下发生了什么:

问题分析:

手机主动发起连接配对:

在这里插入图片描述
如上图所示:

  • 手机会主动发起paging (ID packet),此时手机作为主设备会设置FHS。
  • 手机和耳机分别进行:
    LMP Version Exchange (Central: 5.4 › Peripheral: 5.4) ,
    LMP Features Exchange (45 Features › 45 Features),
    LMP Extended Features Exchange (SSP Host, LE Host, SC Host › SSP Host, LE Host, SC Host),
    LMP Extended Features Exchange (SC Controller, Ping › SC Controller, Ping),
    注意此时手机和耳机都是支持SC(Secure Connection)的。
  • 接着就会建立LMP连接:LMP Host Connection (Accepted),LMP Setup Complete

在这里插入图片描述
如上图,接下来会交互:

  • 手机会enable AFH:
    LMP Set AFH (Ch=43, 0x0F5E33A, as CLK[27-0]: 0x1EBC674, AFH enabled)
    LMP Channel Classification Request (AFH Reporting Enabled)
  • 手机获取耳机时钟精度:LMP Timing Accuracy Transaction (250 ppm, Jitter=0 us)
  • 耳机告诉手机最大传输slot 为5:LMP Max Slot (5 slots = 3.125 ms)
  • 手机设置包类型:LMP Packet Type Table (2/3Mbps › Accepted)
  • 手机告诉耳机最大传输slot为5:LMP Max Slot (5 slots = 3.125 ms)
  • 手机设置传输速率:
    LMP Preferred Rate (BR=No FEC, Size=Use 5-slot packets, EDR=Use 2 Mbps packets, Size=Use 1-slot packets)。
    LMP Preferred Rate (BR=FEC, Size=Use 1-slot packets, EDR=Use 2 Mbps packets, Size=Use 5-slot packets)
  • 手机设置链路超时时间为5s:LMP Supervision Timeout (8’000 slots = 5.000 s (5.000 s))
  • 耳机获取手机的时钟精度:
    LMP Timing Accuracy Request
    LMP Timing Accuracy Response (45 ppm, Jitter=0 us)

在这里插入图片描述
如上图所示,接下来会进行:

  • 手机和耳机进行IO Capability交互:
    LMP IO Capability Request (DisplayYesNo, No OOB Authentication, MITM Protection Required – Dedicated Bonding)
  • 手机和耳机的公钥交互:LMP Encapsulated P-256 Public Key
  • 手机和耳机第一阶段相互随机数验证:LMP Simple Pairing Confirmation (A6 23 E8 6E C3 7B CD C3 7A EE 04 47 CF E5 94 6E)
  • 手机和耳机相互DHKEY Check:LMP DH Key Check (91 7F 69 33 47 CA 76 3E B3 69 74 B4 8E 70 8F 1E)
  • 手机和耳机进行第二阶段的随机数校验:LMP Secure Authentication Transaction (0x0A67C2A9)
  • 手机请求进入加密模式:LMP Encryption Mode Request (Encryption)
  • 手机发起加密:LMP Start Encryption Request (ED 52 7E 99 B2 28 C8 87 27 85 B4 99 68 84 ED 4C)

在这里插入图片描述
如上图,接下来会进行:

  • SMP OVER BREDR:通过CTKD方式生成LE连接的
    LTK SMP Pairing Feature Exchange (Display Only, No Bonding › Display Only, Bonding, SC)。
    SMP Transport Specific Key Distribution
  • 进行SDP查询。
  • 各种Profile的建立,比如A2DP, HFP等等。

耳机关盒断开连接

在这里插入图片描述
如上图,耳机会发送一个LMP Detach (Remote User Terminated Connection)来告诉手机链路断开。

耳机发起回连

在这里插入图片描述
如上图,耳机发起回连,这个时候耳机会主动发起Paging ID,并且耳机发起FHS决定时钟。注意红色框里面耳机发起的LMP Extended Features Request (SSP Host, LE Host) ,和手机回复的:LMP Extended Features Response (SSP Host, LE Host, SC Host)。这里耳机请求里SC Host不见了。
在这里插入图片描述
如上图,接下来手机主动发起:LMP Extended Features Request (SSP Host, LE Host, SC Host),然而耳机依旧回复:LMP Extended Features Response (SSP Host, LE Host)。至此手机跟耳机无法达成一致的加密方法,手机只能主动断开连接:LMP Detach (Authentication Failure)。

至此整个问题的分析结束。

http://www.xdnf.cn/news/4610.html

相关文章:

  • 正则表达式(Regular Expression)详解
  • 关于ubuntu下交叉编译arrch64下的gtsam报错问题,boost中boost_regex.so中连接libicui18n.so.55报错的问题
  • 【Python 字符串】
  • Java常用API:深度解析与实践应用
  • 【Spring Boot 多模块项目】@MapperScan失效、MapperScannerConfigurer 报错终极解决方案
  • 安装 Docker
  • ZC706开发板教程:windows下编译ADRV9009
  • vue 中如何使用region?
  • PyTorch 实战:从 0 开始搭建 Transformer
  • 解决word里插入公式后打不开的问题
  • Linux-openeuler更换yum镜像源
  • uniapp + vue3 + 京东Nut动作面板组件:实现登录弹框组件(含代码、案例、小程序截图)
  • 村田与RohdeSchwarz联合开发用于测量Digital ET省电效果的RF系统
  • 网络化:DevOps 工程的必要基础(Networking: The Essential Foundation for DevOps Engineering)
  • 幂等的几种解决方案以及实践
  • STM32G070xx将Flash页分块方式存储,固定数据块存储,实现一次擦除多次写入
  • 【C语言】文件操作(续)
  • 一个用C#开发的记事本Notepads开源编辑器
  • Python实现中文数字与阿拉伯数字映射生成器(支持0-9999)
  • WebFlux与HttpStreamable关系解析
  • HuggingFace与自然语言处理(从框架学习到经典项目实践)[ 01 API操作 ]
  • 极简远程革命:节点小宝 — 无公网IP的极速内网穿透远程解决方案
  • 《开源先锋Apache软件基金会:历史沿革、顶级项目与行业影响》
  • 新能源汽车赛道变局:传统车企子品牌私有化背后的战略逻辑
  • java 破解aspose.words 18.6 使用
  • 如何使用 QuickAPI 推动医院数据共享 —— 基于数据仓库场景的实践
  • 学习笔记:数据库——事务
  • 启智平台调试 qwen3 4b ms-swift
  • 基于Kubernetes的Apache Pulsar云原生架构解析与集群部署指南(下)
  • IEEE出版|2025年通信网络与智能系统工程国际会议(CNSE2025)