在LE Audio的技术生态中,TWS耳机、双耳助听器、多声道音箱组这类套装设备的协同体验,直接决定了产品的核心竞争力。传统蓝牙方案中,套装设备的识别与排他控制往往依赖厂商私有协议,导致兼容性差、开发成本高。而Coordinated Set Identification Service(CSIS)的出现,就像为套装设备颁发了统一的身份名片,又搭建了标准化的协同门禁,让多设备协同的识别、连接与控制变得规范且高效。
目录
一、CSIS服务的核心定位
二、CSIS服务的声明规范
三、CSIS服务的行为逻辑
四、CSIS服务特征的核心落地
五、关键信息的实战解读:开发必背的配置项
六、测试
作为LE Audio的核心基础服务,CSIS不关注设备具体的音频传输能力,只聚焦于“如何让设备被识别为套装成员”和“如何保障客户端对套装的排他访问”。本文从服务的核心声明、行为逻辑、特征落地三个维度,结合规范细节与实战视角,把CSIS的核心设计讲透,同时拆解规范中的关键配置项,让你不仅理解理论,更能落地开发。
一、CSIS服务的核心定位
在深入规范细节前,我们先明确CSIS的两个核心使命,这也是整个服务设计的出发点:
套装身份标识:让手机、平板等客户端设备,能快速识别这台耳机是某套装的左声道成员,而非孤立设备;
排他访问控制:避免多个客户端同时对同一套装设备发送控制指令(如同时调节左右耳音量),造成指令冲突。
可以把CSIS比作套装设备的协同管家:身份名片是它给每个套装成员分配的唯一标识,协同门禁则是它管理的权限系统,只有拿到门禁卡的客户端,才能对套装进行操作。
CSIS作为独立的主服务,不依赖任何其他GATT服务,兼容蓝牙核心规范4.2及以上版本,这也让它能无缝适配各类LE Audio设备的开发需求。
二、CSIS服务的声明规范
规范对CSIS服务的声明做出了严格且明确的要求,这是保障不同厂商设备互联互通的基础,对应服务定义中的核心章节。
1. 主服务的强制声明
CSIS必须被实例化为主服务(PrimaryService),这是GATT服务的核心分类,意味着它是设备的核心功能模块,而非附属功能。规范中明确:The CSIS shall be instantiated as a «Primary Service»。
这一要求的底层逻辑是,套装识别是LE Audio套装设备的基础能力,必须作为顶层服务对外暴露,让客户端能在设备发现阶段就快速检测到。
2. 服务UUID的唯一标识
服务的身份由UUID唯一确定,这是规范中定义的核心配置项,也是开发中必须硬编码的参数。
CSIS的官方16-bit UUID为0x1853,对应的128-bit完整UUID遵循蓝牙SIG的标准格式:00001853-0000-1000-8000-00805F9B34FB。
在开发中,客户端设备会通过扫描广播包中的服务UUID列表,快速筛选出支持CSIS的设备。这就像酒店的会员专属楼层,客户端通过UUID这个楼层编号,能直接定位到目标设备。
3. 编码与数据格式要求
CSIS服务的所有数据传输均采用小端序(little endian),这是蓝牙GATT服务的通用规范,但在CSIS中被再次强调,尤其是在Set Identity Resolving Key(SIRK)、Set Member Rank等特征的数值传输中,小端序的错误会直接导致身份识别失败。
三、CSIS服务的行为逻辑
如果说服务声明是身份备案,那么服务行为就是门禁规则,规范定义了客户端(Set Coordinator)与套装成员(Set Member)之间的交互逻辑,核心解决如何识别和如何锁定两个问题。
1. 核心角色定义
CSIS的交互模型包含两个核心角色,这是行为逻辑的基础:
Set Coordinator(套装协调者):通常是手机、平板等资源丰富的客户端设备,负责发现套装成员、验证身份、申请排他锁;
Set Member(套装成员):TWS耳机、助听器等终端设备,运行CSIS服务端,对外暴露套装身份信息,响应客户端的锁定请求。
一个典型的场景是:手机作为协调者,扫描到左耳机后,通过CSIS服务识别出它属于某套装,进而发现右耳机,最终申请锁权限,实现对左右耳机的同步控制。
2. 核心交互流程:从发现到释放的全链路
CSIS的行为逻辑围绕“发现-识别-锁定-释放”四个阶段展开,形成一套闭环的协同控制流程:
服务发现:客户端扫描到设备后,通过0x1853 UUID发现CSIS主服务,并读取服务的所有特征;
身份验证:客户端读取Set Identity Resolving Key(SIRK)特征,结合随机数(prand)计算出套装身份哈希值,匹配同一套装的所有成员;
锁申请:客户端向Set Member Lock特征写入“Locked”,申请排他访问权限;
协同操作:客户端在锁有效期内,对套装所有成员执行同步控制(如音量调节、模式切换);
锁释放:操作完成后,客户端写入“Unlocked”释放锁,或等待锁超时自动释放。
3. 锁机制的关键规则
锁机制是CSIS行为逻辑的核心,规范对锁的申请、持有、释放做出了精细化的定义,直接影响设备的协同体验。
规范明确了锁请求的三种响应逻辑:
若设备处于解锁状态,服务端立即写入“Locked”并回复成功,同时启动锁超时定时器;
若设备已被当前客户端锁定,回复“Lock Already Granted”错误,不重置定时器;
若设备被其他客户端锁定,回复“Lock Denied”错误。
锁超时定时器(T_CSIS(lock_timeout))的推荐值为60秒,可由高层规范自定义。这一数值的设计平衡了操作连续性和设备可用性:过短会导致同步操作未完成就失去权限,过长则会让其他客户端无法及时获取控制权。
此外,规范还规定了特殊场景的处理逻辑:若客户端与服务端未绑定,且在锁定状态下断开连接,服务端会立即将锁状态重置为“Unlocked”,避免设备长期处于锁定状态。
四、CSIS服务特征的核心落地
CSIS服务的功能通过四个核心特征落地,这些特征的定义与服务的声明、行为逻辑深度绑定,也是开发中需要重点实现的部分。规范将特征分为强制、可选和条件三类,具体如下表所示:
特征名称 | 要求类型 | 核心属性 | 安全权限 | 核心功能 |
Set Identity Resolving Key | 强制(M) | 读、可选通知 | 加密必需 | 暴露套装唯一标识SIRK |
Coordinated Set Size | 可选(O) | 读、可选通知 | 加密必需 | 标识套装成员总数 |
Set Member Lock | 可选(O) | 读、写、通知 | 加密必需 | 控制套装的排他访问权限 |
Set Member Rank | 条件(C.1) | 读 | 加密必需 | 标识成员在套装中的序号 |
注:C.1表示若支持Set Member Lock,则该特征为强制,否则为可选。
1. 强制特征:Set Identity Resolving Key(SIRK)
SIRK是套装的身份证号,同一套装的所有成员必须使用相同的SIRK。规范明确:All servers that are part of the same Coordinated Set shall use the same SIRK。
SIRK为16字节的密钥,通过AES-CMAC算法计算出套装身份哈希值,客户端通过比对哈希值,就能确定不同设备是否属于同一套装。这是套装识别的核心依据,开发中必须保证同一套装的SIRK严格一致。
2. 可选特征的实战价值
Coordinated Set Size:取值范围为0x01至0xFF,0x00被禁止。比如TWS耳机的该特征值为0x02,多声道音箱组可根据声道数设置为0x05、0x07等;
Set Member Rank:取值为从0x01开始的连续整数,对应成员的序号。比如TWS左耳机为0x01,右耳机为0x02,确保客户端能区分成员角色。
五、关键信息的实战解读:开发必背的配置项
规范中定义的各类编码、错误码、UUID,是开发中必须硬编码的内容,也是调试时的关键依据,这里做重点展开。
1. 特征UUID的完整列表
特征名称 | 16-bit UUID | 128-bit UUID(标准格式) |
Set Identity Resolving Key | 0x2B23 | 00002B23-0000-1000-8000-00805F9B34FB |
Coordinated Set Size | 0x2B24 | 00002B24-0000-1000-8000-00805F9B34FB |
Set Member Lock | 0x2B25 | 00002B25-0000-1000-8000-00805F9B34FB |
Set Member Rank | 0x2B26 | 00002B26-0000-1000-8000-00805F9B34FB |
2. 核心错误码定义
锁机制相关的错误码是调试中最常遇到的,规范定义了三个核心错误码:
Lock Already Granted:0x80,锁已被当前客户端持有;
Lock Denied:0x81,锁被其他客户端持有;
Lock Release Not Allowed:0x82,客户端尝试释放非自身持有的锁。
六、测试
问题:CSIS服务中SIRK的核心作用是什么?同一套装的设备对SIRK的使用有何要求?(华为蓝牙音频开发岗,2025秋招)
答案:
SIRK是Set Identity Resolving Key的缩写,是套装的唯一身份标识,客户端通过SIRK结合随机数计算哈希值,实现对同一套装成员的识别;同一套装的所有成员设备,必须使用完全相同的SIRK,这是规范强制要求的核心点。
问题:CSIS的锁机制中,未绑定设备断开连接后,锁状态会如何变化?为什么要这样设计?(恒玄科技LE Audio开发岗,2024社招)
答案:
未绑定设备在锁定状态下断开连接,服务端会立即将锁状态重置为Unlocked;原因是未绑定设备不存在持久化的身份认证,若不立即解锁,会导致设备长期处于锁定状态,其他客户端无法获取控制权,严重影响设备的可用性。
问题:CSIS服务的Set Member Rank特征的取值要求是什么?该特征的条件性要求是如何定义的?
答案:
Set Member Rank的取值为从0x01开始的连续整数,最大值等于套装的成员总数;该特征为条件性强制(C.1),若设备支持Set Member Lock特征,则Set Member Rank为强制实现,若不支持Set Member Lock,则为可选实现。