img

HOST层:此部分就是蓝牙协议栈

1)HCI(HOST CONTROLLER INTERFACE):

主机控制层接口,主要负责透过transport把协议栈的数据发送给蓝牙芯片,并且接受来自蓝牙芯片的数据,数据主要分为

HCI COMMAND(HOST->CONTROLLER),

HCI EVENT(HOST<-CONTROLLER),

HCI ACL(HOST<->CONTROLLER),

HCI SCO(HOST<->CONTROLLER),

HCI ISO(HOST<->CONTROLLER),

2)L2CAP(Logical Link Control and Adaptation Protocol):

逻辑链路控制与适配协议,将ACL数据分组交换为便于高层应用的数据分组格式,并提供协议复用和服务质量交换等功能。通过协议多路复用、分段重组操作和组概念,向高层提供面向连接的和无连接的数据服务,L2CAP还屏蔽了低层传输协议中的很多特性,使得高层协议应用开发人员可以不必了解基层协议而进行开发。 3)SDP(SERVICE DISCOVERY PROTOCOL):

服务发现协议,服务发现协议(SDP)为应用程序提供了一种方法来发现哪些服务可用,并确定这些可用服务的特征 4)RFCOMM(Serial Port Emulation):

串口仿真协议,上层协议蓝牙电话,蓝牙透传SPP等协议都是直接走的RFCOMM 5)OBEX:对象交换协议,蓝牙电话本,蓝牙短信,文件传输等协议都是走的OBEX 6)HFP(Hands-Free):

蓝牙免提协议一共分为两个角色:AG跟HF,蓝牙耳机跟手机连接,手机的角色就是AG,蓝牙耳机的角色是HF 7)HSP:蓝牙耳机协议

8)SPP(SERIAL PORT PROFILE):蓝牙串口协议, 9)IAP:苹果的特有协议,分为IAP1/IAP2

10)PBAP(Phone Book Access):蓝牙电话本访问协议, 11)MAP(MESSAGE ACCESS PROFILE):蓝牙短信访问协议

MAP跟PBAP很像,都是在V1.2的时候架构有变化,V1.1 MAP直接走的RFCOMM,在V1.2的时候如果GOEP是V2.0版本,那么MAP是直接走的L2CAP,并且是L2CAP ERTM mode,不是basic mode 12)OPP(OBJECT PUSH PROFILE):对象推送协议, 13)AVCTP(AUDIO/VIDEO CONTROL TRANSPORT PROTOCOL):音视频控制传输协议,是AVRCP的地方, 14)AVDTP(AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL):音视频分布传输协议,是A2DP的底层15)HID(HUMAN INTERFACE DEVICE):人机接口协议 16)A2DP(Advanced Audio Distribution): 蓝牙音乐协议,手机传输音乐给蓝牙耳机,手机是A2DP source端,蓝牙耳机是A2DP sink端 17)AVRCP(AUDIO/VIDEO REMOTE CONTROL PROFILE):蓝牙音乐控制协议,手机跟蓝牙耳机举例,那么蓝牙耳机就是controller(CT),手机就是target(TG) 18)ATT:蓝牙属性协议

ATT,Attribute Protocol,用于发现、读、写对端设备的协议(针对BLE设备),ATT允许设备作为服务端提供拥有关联值的属性集 ,让作为客户端的设备来发现、读、写这些属性;同时服务端能主动通知客户端。

在ATT中属性分为3个内容:

属性类型(attribute type),用UUID的形式来表现 属性句柄(attribute handle),用于标识一个属性 属性权限(permissions), 控制是否该Attribute可读、可写、属性值是否通过加密链路发送! ATT分为两个角色:Server/Client

19)GATT:蓝牙通用属性协议

GATT(Generic Attribute Profile),描述了一种使用ATT的服务框架 ,该框架定义了服务(Server)和服务属性(characteristic)的过程(Procedure)及格式 。 Procedure定义了characteristic的发现、读、写、通知(Notifing)、指示(Indicating)及配置characteristic的广播。

GATT可以被Application或其他Profile使用,其协议栈如下图 20)SM: 蓝牙BLE安全管理协议

二. 蓝牙Host(蓝牙协议栈)跟蓝牙Controller(蓝牙芯片)交互格式

蓝牙协议栈跟蓝牙芯片都是使用统一的数据来交互的,由SIG规定(备注:部分芯片有HCI vendor命令),一般交互的有以下几种类型

1) HCI command,由蓝牙协议栈给蓝牙芯片发送命令,来控制芯片行为

2)HCI event,由蓝牙芯片上报事件给蓝牙协议栈的事件

3)HCI acl数据,蓝牙协议栈跟蓝牙芯片双向交互的L2CAP以及上层数据

4)HCI sco,蓝牙协议栈跟蓝牙芯片交互的SCO音频是数据

5)HCI iso,蓝牙协议栈跟蓝牙芯片交互的BLE audio的数据

Wireshark日志过滤查看

着色名称Wireshark 过滤表达式协议含义 & 调试用途
AVRCPbtavrcpAVRCP 音视频遥控协议(切歌、暂停、音量控制指令),底层基于 AVCTP
AVCTPbtavctpAVCTP 传输层,承载 AVRCP 控制信令
VDPbtvdp视频分发协议(较少使用)
A2DPbta2dpA2DP 高级音频分发 Profile,上层音频业务入口
AVDTPbtavdtpAVDTP 音视频传输协议,A2DP 底层,区分信令包 / 媒体 RTP 音频包
HCRPbthcrp硬拷贝线缆替代(蓝牙打印)
BNEPbtbnep蓝牙网络封装协议(PAN 蓝牙局域网)
HIDbthidHID 人机设备协议(经典蓝牙键鼠)
OBEXobex对象交换(文件传输、电话本 PBAP、短信 MAP)
SAPbtsapSIM 卡访问协议
HFPbthfpHFP 免提通话协议(车载 / 耳机通话)
HSPbthsp老式耳机通话协议
DUNbtdun拨号网络
GNSSbtgnss蓝牙 GNSS 定位
RFCOMMbtrfcomm串口仿真协议(SPP 透传、HFP 信令、OBEX 承载)
MCAPbtmcap医疗设备协议
SDPbtsdp服务发现协议,蓝牙建链必查(查询 A2DP/AVRCP 信道 PSM)
ATTbtattBLE ATT 属性协议(GATT 底层,读写特征、Notify 通知)
AMPbtamp高速 AMP 射频协议
SMPbtsmpBLE 安全管理协议(BLE 配对、LTK/IRK 密钥协商)
L2CAPbtl2capL2CAP 逻辑链路适配层,所有上层蓝牙协议的底座
SCObthci_scoHCI SCO 数据包:通话语音数据(HFP 语音通道,和 A2DP 音乐 ACL 分离)
HCI_EVTbthci_evtHCI Event:蓝牙芯片 → Host 上报事件(广播、连接完成、加密完成)
HCI_CMDbthci_cmdHCI Command:Host → 蓝牙芯片下发指令(扫描、创建连接、开启广播)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐