蓝牙AVRCP协议分析

AVRCP(audio vidoe remote control protocol) 协议,用于远程控制音视频设备. 底层传输基于AVCTP传输协议,在蓝牙中,主要用于蓝牙音乐的控制,比如播放/暂停/下一曲/上一曲,以及获取播放状态等。 AVRCP分为CT(contorl devices),TG(target devices).

CT通过指令控制TG播放音乐,比如蓝牙耳机时CT,而手机可以作为TG.

1. 总体报文结构

这里用蓝牙中比较常见的Pass THROUGH command来说明,其他command也有同样的结构.

Ctype : 指令类型(command type),目前主要有control, status , NOTIFY,ACCEPTED,REJECTED, CHANGED,INTERIM,

IMPLEMENTED / STABLE等。

Subunit_type: 子单元类型,一个设备可能包含多个功能模块,在蓝牙协议里,只用到了PANEL,

subunit_id :子单元ID,现在一般为0

Opcode : 操作码,我们主要用到PASS THROUGH/ VENDOR-DEPENDENT,

operation_id :操作ID, 如play,pause,等等.

蓝牙AVRCP协议分析

 

2. 常见command 结构

2.1 pass through指令

蓝牙AVRCP协议分析

蓝牙音乐主要用到的operation id 为 play, pause,stop,forware,backward.

比如CT发送上一曲操作,CT/TG交互如下:

 

蓝牙AVRCP协议分析

2.2 VENDOR-DEPENDENT

厂商独立的指令,可以所以设备实现组织自定义. 比如蓝牙设备的company id 固定为"Bluetooth SIG".

蓝牙AVRCP协议分析

常见的PDU 有:GetCapabilities/GetElementAttributes/GetPlayStatus/RegisterNotification/