【LE Audio】CSIS精讲[2]: 服务核心运作逻辑

【LE Audio】CSIS精讲[2]: 服务核心运作逻辑

在LE Audio的技术生态中,TWS耳机、双耳助听器、多声道音箱组这类套装设备的协同体验,直接决定了产品的核心竞争力。传统蓝牙方案中,套装设备的识别与排他控制往往依赖厂商私有协议,导致兼容性差、开发成本高。而Coordinated Set Identification Service(CSIS)的出现,就像为套装设备颁发了统一的身份名片,又搭建了标准化的协同门禁,让多设备协同的识别、连接与控制变得规范且高效。


目录

一、CSIS服务的核心定位

二、CSIS服务的声明规范

三、CSIS服务的行为逻辑

四、CSIS服务特征的核心落地

五、关键信息的实战解读:开发必背的配置项

六、测试


作为LE Audio的核心基础服务,CSIS不关注设备具体的音频传输能力,只聚焦于“如何让设备被识别为套装成员”和“如何保障客户端对套装的排他访问”。本文从服务的核心声明、行为逻辑、特征落地三个维度,结合规范细节与实战视角,把CSIS的核心设计讲透,同时拆解规范中的关键配置项,让你不仅理解理论,更能落地开发。


一、CSIS服务的核心定位

在深入规范细节前,我们先明确CSIS的两个核心使命,这也是整个服务设计的出发点:

  1. 套装身份标识:让手机、平板等客户端设备,能快速识别这台耳机是某套装的左声道成员,而非孤立设备;

  2. 排他访问控制:避免多个客户端同时对同一套装设备发送控制指令(如同时调节左右耳音量),造成指令冲突。

可以把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的行为逻辑围绕“发现-识别-锁定-释放”四个阶段展开,形成一套闭环的协同控制流程:

  1. 服务发现:客户端扫描到设备后,通过0x1853 UUID发现CSIS主服务,并读取服务的所有特征;

  2. 身份验证:客户端读取Set Identity Resolving Key(SIRK)特征,结合随机数(prand)计算出套装身份哈希值,匹配同一套装的所有成员;

  3. 锁申请:客户端向Set Member Lock特征写入“Locked”,申请排他访问权限;

  4. 协同操作:客户端在锁有效期内,对套装所有成员执行同步控制(如音量调节、模式切换);

  5. 锁释放:操作完成后,客户端写入“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,则为可选实现。