背景
连续一个月都在调试耳机的BLE AUDIO功能,这两天开始调试BLE AUDIO的CSIS功能,CSIS是coordinated Set Identity service缩写,简单理解就是识别同一个设备协调集的设备,比如最典型的就是左右蓝牙耳机就属于同一个协调设备集,当手机与主耳配对完成后,又识别了同一个协调集里的另外一个副耳,那么手机就会主动和副耳发起配对连接。
问题
- 手机与主耳配对完成
- 关闭A2DP,发起BLE AUDIO服务连接
- 播放音乐
结果发现音乐只有主耳能听到,副耳听不到。
分析
- 首先查看手机的hci log,找打副耳的耳机地址(绿色框框标识,11:…:52)和 LE Extended advertising report:
注意红色框框的Resolvable Set Identifier,这个哈希值就是用来做是否是同一个协调集的识别码,类似于BLE里可解析随机蓝牙地址,最终需要通过一个SRIK(Set Identity Resovable Key)来解析。
- 再看一下手机与主耳配对过程中,是否读取到了RSIK,查看一下hci log:
SIRK也类似于IRK,最终用来解析RSI,来判断另外一个设备是否和主耳是同一个协调集。
- 读到SIRK后,再看看手机的Logcat log,看看是否识别了副耳是同一个设备协调集:
从上面logcat log的红色框框看到手机已经识别了主耳和副耳同属于一个设备协调集。
- 按理手机都已经识别到了副耳,为啥没有去连接副耳呢,接着往下分析:
从logcat和hci log看到手机发起了对副耳的连接,但page timeout失败了。
总结
根据上面的分析,这里有两个问题
- 手机为啥发起BR连接,而不是BLE连接,我猜是双模蓝牙都是先连BR,再通过CTKD获取BLE LTK做LE 连接。
- 手机为啥会page timeout,耳机这个时候是不是page scan没有打开还是其他原因,这个需要耳机芯片原厂去分析。