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.

[参考译文] CC2540:如何与 iOS 外设配对、因为它要求在读取/写入/订阅加密特征后进行加密/配对。

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

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/703918/cc2540-how-to-pair-with-peripheral-ios-as-it-requires-encryption-pairing-to-be-after-reading-writing-subscribing-on-an-encrypted-characteristic

器件型号:CC2540

您好、TI 专家、

我有一个 CC2540 USB 软件狗作为中央和 GATT 客户端以及一个 iOS 外设工作。 外设上主服务的特征将被加密。 我发现 iOS 显示:

只有当中心设备开始读取/写入/订阅加密特征时、配对过程才会由外设启动。

首先、我不知道如何设置以下参数:

GAPBOND_Pairing_mode

GAPBOND_MITM_Protection

如果我设置 GAPBOND_Pairing_mode_wait_for_Req、则不会发生配对。 如果我设置 GAPBOND_Pairing_mode_initiate、CC2540将在特征发现之前启动配对、当我尝试写入特征时、我收到所连接的监听器日志(INSUF_authentication)中显示的错误。

其次、我不知道如何在特征发现后管理配对。 我正在关注 SimpleBLECentral 项目。

如果有任何提示/建议、或者有任何处理相同情况的示例代码/项目、我将不胜感激。 我在一个演示中处于一个受教育的状态、如果有任何帮助、我将不胜感激。

Bests、

e2e.ti.com/.../2117.sniff.psd

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

    H. Sh、

    对于您的第一个问题、在 simpleBLECentral.c 的 SimpleBLECentral_Init()中设置了 GAPBOND_Pairing_mode 和 GAPBOND_MITM_protection

    所有这些变量都设置为什么?

    uint32密钥= default_passcode;
    UINT8配对模式= DEFAULT_Pairing_mode;
    UINT8 MIPTM = DEFAULT_MITM_MODE;
    uint8 ioCap = DEFAULT_IO_Capabilities;
    uint8绑定= default_bonding_mode;
    GAPBondMgr_SetParameter( GAPBOND_DEFAULT_PASSONE,sizeof ( uint32 ),&PASSKEY );
    GAPBondMgr_SetParameter( GAPBOND_Pairing_mode,sizeof ( uint8 ),&pairMode );
    GAPBondMgr_SetParameter( GAPBOND_MITM_protection,sizeof ( uint8 ),&MIPTM );
    GAPBondMgr_SetParameter( GAPBOND_IO_Capabilities , sizeof( uint8 ),&ioCap );
    GAPBondMgr_SetParameter( GAPBOND_BLUCGE_ENABLED,sizeof ( uint8 ),&bond ); 

    该主题还很好地讨论了 CC2540上的这些参数。  

    https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/t/304055

    如果您的应用以及您为 MIPTM、IO 电容器和其他器件提供的设置不同、参考 BLE 规范也可能会有所帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这实际上是我对您的问题。 我已经尝试了这些参数的所有可能组合、但我认为在写入加密特征后应该调用一些 API。 我目前使用以下参数:

    #define Pairing_mode GAPBOND_Pairing_mode_wait_for_Req

    #define MITM_MODE 对

    //默认绑定模式,对绑定为真
    #define bonding_mode 对

    //缺省间隙键合 I/O 功能
    #define IO_Capabilities 仅限 GAPBOND_IO_CAP_KEYBOARD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    H. Sh、

    您的 CC2540是发起者还是响应者? 我假设是负责者、但如果我错了、请告诉我。

    如果是响应者、您的发起方的 MTIM、IO CAP 和 Bonding_Mode 是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    CC2540是我的中央/扫描仪(响应者?) 和 GATT 客户端。 外设为 iOS 设备。 在 iOS 中无法控制这些参数、我们应用的唯一设置是读取/写入特性的加密。  

    是否有任何 TI 示例代码/项目可与具有加密通信功能的 iOS 外设配合使用?

    谢谢。

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

    对于您的中央设备、我们建议您使用:#define Pairing_mode GAPBOND_Pairing_mode_wait_for_Req。
    与智能手机中央设备配对时、建议使用 GAPBOND_Pairing_mode_wait_for_Req、因为外设发送从机安全请求时可能会发生未定义的行为。 当访问 GATT 安全特征时、当器件以不足的身份验证错误响应进行响应时、iOS 和 Android 都将启动配对。

    您的发起方似乎是您的电话、而响应方是您的 CC2540。 我建议您参考 BLE 规范来选择配对方法。 规格4.0第3卷 H 部分第2.3节。
    www.bluetooth.com/.../archived-specifications

    我认为、在尝试确定您需要使用的内容时、研究 IO 功能部分(第2.3.2节)将对您非常有帮助。 对于 USB 软件狗、您没有任何显示功能或键盘功能、因此我假设您应该使用无输入/无输出。

    因此、MIPTM 可能为 false。

    因此、您很可能最终会使用 Just Works Unauthenticated 配对。

    这应移至第2.3.5.5节。

    如果我记得对了、在您的应用程序(如浅蓝色)中、连接中央设备并尝试读取加密服务、这将启动配对/绑定。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我还将阅读位于 BLE 1.4.2.2 SDK 文档/文件夹中 TI_Software_Developer_guide 的第5.3节"GAP 绑定管理器"、了解有关使用 GapBondMgr 的更多信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于不活动、我将关闭此帖子。 要重新打开此主题、只需发布后续问题。 否则、在从此帖子中无活动30天后、此主题将被锁定。