【android bluetooth 案例分析 02】【CarLink 详解1 】【车机侧CarLink流程分析 】

以下是车机连接Carlink的完整流程分析,结合BLE GATT协议交互细节,归纳为六个核心步骤,并附关键日志解析:


一、车机连接Carlink全流程(基于BLE GATT)

1. 广播阶段(Advertising)

车机行为

  • 广播包含Carlink服务UUID(如2ABC...9100)和厂商标识(0xfcfb)。

  • 日志证据

在这里插入图片描述

注:广播数据中隐藏自定义UUID(这里看到UUID 为0xfcfb).
2. 设备发现与连接(Connection)

交互流程

  1. 手机扫描并识别车机广播的Carlink服务。

  2. 发起BLE连接(角色:手机=Central,车机=Peripheral)。

  • 日志证据

在这里插入图片描述

HCI LE Enhanced Connection Complete (Role=Slave, Peer=4445...)

_车机作为Slave,连接参数:Interval=30ms, Latency=0.4ms_
3. GATT服务发现(Service Discovery)

车机响应

  • 返回主服务列表(含Carlink自定义服务2ABC...9100)。

  • 日志关键点

在这里插入图片描述

在这里插入图片描述

ATT Read by Group Type Transaction (148 - Max Handle, Primary Service: 2ABC...9100)

_手机请求服务发现,车机返回服务句柄范围(0x0094-0x0098)。

2abcc85099354f8aba84123456789100

4. 特征枚举与配置(Characteristic Setup)

关键操作

  1. 发现可写特征

    ATT Read By Type Transaction (149 - Max Handle, Characteristic: Write, 150 - 2ABC…9101)

    确认车机的指令写入通道(Handle=0x0096)。
    在这里插入图片描述

  2. 启用通知
    在这里插入图片描述

    ATT Find Information Transaction (153 - Client Characteristic Configuration)

    手机写入0x0099(Descriptor)启用0x0098的Notify功能。

5. 鉴权与数据交换(Authentication)

车机主动流程

  1. 发送鉴权请求
    在这里插入图片描述

在这里插入图片描述

  • 车机界面 会生成一个鉴权数字码, 此时在手机界面中输入,后, 通过 att 传入给车机

    ATT Write Transaction (2ABC…9101: 78 22 69 64…)

    数据示例:

字段可能含义
78 22指令头(鉴权类型)
69 64 22 34设备ID或Nonce
  1. 接收手机响应
    通过0x0098的Notify通道接收加密响应(日志未捕获,但预期为签名或会话密钥)。
6. 连接维护与数据传输(Data Channel)

优化与传输

  • 调整连接参数
    在这里插入图片描述

在这里插入图片描述

HCI LE Connection Update Complete (Interval=30 ms)

_平衡功耗与实时性,适合音视频传输。_
  • 加密数据传输
    后续通信通过0x00960x0098加密交换(如Wi-Fi密码、投屏指令)。

在这里插入图片描述

二、关键协议细节归纳

1. 数据格式规范
操作类型数据格式(Hex)说明
鉴权请求[Header][Nonce][ID]Header=指令类型,Nonce=随机数
通知响应[Status][EncryptedKey]Status=0x00成功,Key=AES密钥
2. 安全机制
  • 无配对鉴权:通过动态Nonce和签名(ECDSA)验证设备合法性。

  • 会话密钥:基于ECDH派生,通过Notify通道加密传输。

3. 错误处理
  • ATT错误码:如写入失败返回0x0A(无效句柄)。

  • 超时重试:默认30秒无响应则断开连接。


三、案例分析:连接失败场景

问题现象

手机无法接收到车机的Notify数据。

根因排查
  1. 未启用通知

    • 检查0x0099描述符是否写入0x0001
  2. MTU不足

    • 确认MTU已协商为251字节(日志中ATT Exchange MTU Transaction)。

四、流程图解

+---------------------+       +---------------------+
|      车机            |       |       手机           |
+---------------------+       +---------------------+
        | 1.广播Carlink服务             |
        | -------------------------->  | 2.发现设备
        | <--------------------------  | 3.发起连接
        | 4.返回GATT服务列表             |
        | <--------------------------  | 5.请求服务发现
        | 6.确认特征权限                 |
        | <--------------------------  | 7.启用Notify
        | 8.写入鉴权数据                 |
        | -------------------------->  | 9.返回加密响应
        | 10.建立数据通道                |

五、开发者checklist

  1. 服务配置

    • 确保车机GATT服务包含2ABC...91000xfcfb(双协议兼容)。
  2. 特征权限

    • 写特征需配置Write Without Response,通知特征需绑定CCC描述符。
  3. 安全实现

    • 实现Nonce生成、ECDSA签名验证、会话密钥派生。

通过此流程,车机可高效完成Carlink连接,实际开发中需结合厂商协议文档解码具体数据字段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值