This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 具有 ble_cc26xx_2_01_01_44627加密不足问题的 CC2640

Guru**** 2560390 points
Other Parts Discussed in Thread: CC2640

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/570518/cc2640-with-ble_cc26xx_2_01_01_44627-insufficient-encryption-problem

器件型号:CC2640

工具/软件:TI-RTOS

你(们)好。

我们有一个具有 BLE_cc26xx_2_01_01_44627 BLE Stack 的 CC2640项目。 应用程序是外设、具有自定义 GATT 服务。 在服务中、有 GATT_permit_encrypt_read permit 的特征。

我有运行 iOS 10.2的 iPhone 7作为中央设备。 在 iOS 上、开始配对的一种方法是读取这些加密特征之一。 有时(1/10-15)、当我读取特征以启动配对时、我在 iOS 应用程序上看到以下错误:

错误域:CBATTErrorDomain Code=15"解密不足"

我通过以下配置启用了 MIPTM:


                       uint32_t 密钥= 0;
                       uint8_t MIPTM = true;
                       uint8_t ioCap = GAPBOND_IO_CAP_DISPLAY_ONLY;
                       uint8_t pairMode = GAPBOND_Pairing_mode_initiate;
                       uint8_t 绑定= true;
                       uint8_t syncWL = true;

                       GAPBondMgr_SetParameter (GAPBOND_DEFAULT_PASSONE、sizeof (uint32_t)、和 PASSKEY);
                       GAPBondMgr_SetParameter (GAPBOND_Pairing_mode、sizeof (uint8_t)、&pairMode);
                       GAPBondMgr_SetParameter (GAPBOND_MITM_protection、sizeof (uint8_t)、&MIPTM);
                       GAPBondMgr_SetParameter (GAPBOND_IO_Capabilities、sizeof (uint8_t)、&ioCap);
                       GAPBondMgr_SetParameter (GAPBOND_BUSIONIND_ENABLED、sizeof (uint8_t)、&bonding);
                       GAPBondMgr_SetParameter (GAPBOND_AUTO_SYNC_WL,sizeof (uint8),&syncWL);
                   

您是否有什么想法会导致此问题? 在我的监听器日志中、我可以看到 iOS 在配对操作完成之前尝试读取特征。 但是,当我转到“设置”->“蓝牙”时,我可以看到 iOS 具有 LTK (设备看起来是配对的,当我尝试断开、连接和读取特征时,我可以读取特征值)。

谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我建议您不要将 GAPBOND_Pairing_MODE_INITIATE 与 iOS 一起使用、因为当您声明时、iOS 设备应根据使用"身份验证不足"错误代码拒绝的 ATT 请求启动配对。 我建议将 GAPBOND_Pairing_mode_wait_for_Req 作为默认配对模式。

    尽管可能与此无关、但 GAPBOND_AUTO_SYNC_WL = TRUE 不适用于 iOS 设备、并且此基于 BT4.1的软件版本和 iOS 实现了 BT4.2隐私。

    除此之外、这可能只是您的 iOS 应用中的一个问题、您无需等待配对完成。

    祝你一切顺利
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、JXS、

    当然、更改 GAPBOND_Pairing_mode_wait_for_Req 会有所帮助。 现在、我对以下2个嗅探器日志感到有点困惑。 是否可以检查附件? 其中一个是 ATT 级别消息、您可以看到 iOS 在配对完成之前尝试读取加密特征(请参阅 ATT 消息窗口和 SMP 消息窗口中的帧编号)。 我认为 iOS 读取操作应该有点晚,因为当我选中“设置”->“蓝牙”时,我可以看到我的外设已配对,下次使用该应用程序时,该应用程序可以读取加密的特征。

    你认为我是对的吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    查看屏幕快照、它显示帧#1599处的"配对"完成、但直到1631后才能完成绑定。 第2个读取请求发生在1623。 是否可以将下一个读取请求延迟到绑定完成后?

    祝你一切顺利