从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)。

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

相关推荐
LCG元11 小时前
ESPHome + HomeAssistant 搭建手机可控制的本地私有智能家居系统
网络·智能手机·智能家居
LCG元12 小时前
从零搭建手机可访问的本地私人AI聊天系统:基于Ollama + OpenWebUI
人工智能·智能手机
学习3人组14 小时前
IOS手机使用电脑代理 IP 作为网关/代理出口实现穿越上网
tcp/ip·ios·智能手机
mascon15 小时前
解决苹果手机在游戏中意外触发下拉菜单的方法
游戏·智能手机
Digitally15 小时前
如何轻松地将照片从安卓手机无线传输到Mac电脑
android·macos·智能手机
Digitally16 小时前
如何将数据从传音(TECNO)手机迁移到 iPhone?
ios·智能手机·iphone
sweet丶1 天前
iOS 蓝牙开发深入总结
ios·蓝牙
玫幽倩1 天前
2026FIC取证决赛wp(手机取证)
智能手机·电子取证·forensic·手机取证·fic决赛·fic·弘连
写做四月一日的四月一日1 天前
安卓手机安装龙虾openclaw接入deepseek
人工智能·智能手机
wanhengidc2 天前
服务器数据管理如何
运维·服务器·网络·游戏·智能手机