蓝牙HCI剖析(一)

关键字:bluetooth 蓝牙协议  HCI剖析 HCI概述 HCI笔记 LMP L2CAP SDP RFCOMM 


作者:zhongjun

本着互相学习的目的,来分享此一系列的文章,欢迎转载,请注明作者,尊重版权,谢谢

文章有不当处请指正,共同学习


此系列目前这样打算:

LMP剖析 + 模拟源码:

蓝牙LMP剖析(一)

蓝牙LMP剖析(二)

HCI剖析 + 模拟源码:

蓝牙HCI剖析(二)

蓝牙HCI剖析(三)

L2CAP剖析 + 模拟源码(未完成)
SDP剖析 + 模拟源码(未完成)

rfcomm剖析 + 模拟源码(未完成)


------------------------------------------------------------------------------------------------------------------------------------

华丽分割线,进入正题

------------------------------------------------------------------------------------------------------------------------------------


一.HCI介绍

HCI提供了访问bluetooth control的统一接口,通俗来讲,就是定义了特定的格式来控制蓝牙芯片来做相应的动作(比如inquiry,connect,disconnect)
还有一个问题,为什么我们发送的HCI data 芯片能识别并且执行相应的动作呢?
-》很简单,蓝牙芯片中也有HCI协议代码,烧到Bluetooth chip中,所以我们发送的data可以被正确的parse,执行相应的动作后再准确的回送给我们response



二.传送过程


三.Format

一共分四种packets format,COMMAND(host->control),EVENT(host<-control),ACL(host<-->control),SCO(host<-->control)

1.COMMAND(host->control)

通俗来讲就是蓝牙协议栈发送给芯片的命令,让芯片来执行相应的动作
foramt如图所示

参数:
OCF & OGF在文章二中有介绍
Parameter Total Length:后续参数的长度
举一例:

图4

2.EVENT(host<-control)

通俗来讲就是协议栈发给芯片命令后,芯片收到或者执行返回给蓝牙协议栈的status或者结果

format如图所示


参数:
Event Code:在文章二有详细列表
Parameter Total Length:后续参数的长度

举一例:


3.ACL(host<-->control)

通俗来讲,上层协议的data(L2CAP,SDP,RFCOMM,AVDTP,AVCTP,HFP AT,A2DP,AVRCP,PBAP,MAP,BNEP,HID等)都是透过这个packets传的
format如图所示:

参数:
Handle:建立蓝牙ACL连线后会有一个handle句柄
PB flag:一张图就懂了

BC flag:一张图就懂了

Parameter Total Length:后续参数的长度
举例:


4.SCO(host<-->control)
通俗来讲,比较多的在HFP,HSP通话中传送这个data format
format如图所示:

参数::
Connection_Handle:LMP建立SCO link的时候的句柄

Packet_Status_Flag (in packets sentby the Controller):

Data_Total_Length:后续参数的长度



  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
抓取Android BTSnoop蓝牙HCI协议分析工具是一种用于捕获并分析Android设备上的蓝牙数据包的工具。蓝牙HCI协议是蓝牙设备之间进行通信所使用的一种协议,通过抓取并分析这些数据包,可以帮助开发人员或研究人员了解蓝牙设备之间的通信过程,诊断问题,甚至进行逆向工程。 要实现这一目的,可以按照以下步骤进行: 1. 安装抓包工具:首先,在Android设备上安装一个支持抓取蓝牙数据包的抓包工具。常用的工具有Wireshark和Bluetooth HCI Logger。 2. 启用抓包功能:在Android设备上,需要启用开发者选项,并开启蓝牙HCI日志记录功能。具体操作方式可能有所不同,可以通过打开设备的设置菜单,找到开发者选项,并开启蓝牙HCI日志记录选项。 3. 连接设备:将要抓取数据包的Android设备与目标蓝牙设备进行配对和连接。 4. 抓取数据包:通过打开抓包工具,选择蓝牙设备的接口,开始捕获蓝牙数据包。数据包将会被存储到本地设备的存储中。 5. 分析数据包:将抓取到的数据包导入到分析工具中进行分析。分析工具可以对数据包进行解析,并显示出数据包的内容、属性和相关信息。 通过以上步骤,我们可以获取到Android设备上的蓝牙数据包,并利用分析工具对其进行解析。这将有助于了解蓝牙通信过程中的协议细节、错误和异常情况,从而进行问题排查和优化。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wireless_Link

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值