CoreBluetooth将两个外围设备识别为相同

时间:2015-12-28 18:36:09

标签: ios bluetooth-lowenergy core-bluetooth

我有两个BLE电路板(由我公司定制)是广告。当我扫描时,尽管它们具有不同的名称和标识符,但它们被识别为相同的CBPeripheral。这是我的控制台读取委托电话:

centralManager didDiscoverPeripheral <CBPeripheral: 0x144d26c70, identifier = E0FE60A5-FC4A-A6C5-3868-7D0EEAA580CD, name = Board A3D43, state = disconnected>
centralManager didDiscoverPeripheral <CBPeripheral: 0x144d26c70, identifier = 2209CC24-05E8-8455-3A40-3F27AE9078DB, name = Board 51EB5E, state = disconnected>

我的问题是如何通过名称或标识符区分CBPeripherals?我们的固件使用了Bluetopia,可能还有一些不完整的序列化?

1 个答案:

答案 0 :(得分:1)

正如保罗在评论中提到的那样,记忆地址并没有最终与这个问题相关。核心问题是外围设备产生相同的IRK,导致iOS错误地认为它们都是相同的外围设备。该错误源于错误的假设,即密钥多样化函数(核心BT规范中的d1,第3卷第H部分5.2.2.1)具有随机性成分,而实际上它只是一个散列函数。

我们通过查看“设置”应用程序验证了此成功 - 在更改之前,当我们连接新外围设备时,它覆盖了之前在蓝牙设置中的配对。一旦我们使IRK独一无二,我们就会看到设置应用中列出了多个设备。