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.

[参考译文] LAUNCHXL-CC2640R2:在使用 BLE-STACK 1.30.00.25版的 CC2640R2上、由于 DH 密钥检查错误、重新配对失败

Guru**** 2586165 points
Other Parts Discussed in Thread: LAUNCHXL-CC2640R2, BLE-STACK

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/588602/launchxl-cc2640r2-re-pairing-fails-with-dh-key-check-error-on-cc2640r2-with-ble-stack-ver-1-30-00-25

器件型号:LAUNCHXL-CC2640R2
Thread 中讨论的其他器件: BLE-STACK

通过 Android 手机(Samsung Galaxy S6)或 iPad Air 进行配对和绑定的快乐路径可在多个连接/断开连接和断电时正常工作、并且在 LAUNCHXL-CC2640R2开发套件上运行标准简单 BLE 外设演示代码(未修改)。

但是,如果绑定从中央设备(Android 或 iPad)中删除,并且尝试再次与设备配对,则配对失败,并显示 SMP 错误“Pairing DHKey Check”(配对 DHKey 检查)。  我可以找到从这个问题中恢复的唯一方法是重新刷写外设中的代码。

我修改了代码以添加对状态回调和 UART 消息、并可以确定错误代码报告为0x0B、SMP_Pairing_failed_DFHKEY_CHECK_FAILED)。

出现此错误时、我添加了擦除所有绑定的代码(我甚至通过单步执行代码进行检查)、但配对失败、同时出现相同的 DH 密钥检查错误。  接下来、我执行了代码来擦除当前绑定。  同样、绑定会成功擦除(通过单步执行代码进行双次检查)、但配对也会以相同的方式失败。   

尝试了另一种情形。  这次我从外设中删除了绑定。  与 Android 手机配对时、它同样失败。  iPad 失败、出现"PIN or Key Missing (PIN 或密钥丢失)"错误。  恢复的唯一方法是重新刷写外设代码。

我在这里错过了什么?  似乎是 BLE 堆栈的问题。  如何解决此问题?

TIA、

SG

SMP_Pairing_failed_DHKEY_CHECK_FAILED

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

    我已指派我们的一位专家来看看这一点。 复活节期间、请允许我们下周早些时候再次与您联系。

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

    我们将对此进行研究-很抱歉耽误您的时间。 我将在第二天或新信息出现时发布更新。

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

    我无法始终重现问题。 我发现擦除所有键合并重试引脚会起作用、问题不会再出现。 我注意到、在 Android (6.0)而不是 iPhone 7上、问题的发生频率略高。

    我不需要重新刷新器件即可进入清晰状态-

    我只需将外设的 GATT 表更改为需要加密和启用绑定。

    您能否指导我从 simple_peripheral 以及使用哪些器件重现此问题? (您更改了什么、以及如何通过应用程序或系统设置连接到设备?)

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

    你好,Rebel,

    感谢您关注此问题。

    关于您的问题:
    问1:您更改了什么?
    答:正如问题说明第一段所述,我没有修改任何代码。

    问题2:您如何通过应用程序或系统设置连接到设备?
    答:我在原始问题说明中所述的 Android 和 iOS 设备上使用了 Nordic 的 NRF Connect 应用程序。  有一个"删除绑定信息"选项(在 Android 上);在 iOS 上、我使用蓝牙选项"忘记此设备"。

    无论使用哪种客户端(Android、iOS)、这一问题始终如一地发生。

    我也有几个问题...  在您的测试中、您为客户使用了什么?  您是如何擦除所有粘结的?  您能否发布您所做相关 GATT 表更改的代码、即需要加密和启用绑定?  您的更改是否100%解决了问题?

    此致、
    SG


     

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

    您好、Sheela、

    我重新运行了测试、但 GATT 配置文件未发生任何变化-并且能够重现问题-如您所述、清除双方债券似乎没有效果。 我应该刚刚尝试在我之前的测试中读取特征5 (触发配对请求)、而不是修改 GATT 表。

    我只需将 GATT_permit_AUTHEN_READ 添加到特性中、并删除了许可读取。 但是、我不知道为什么这会产生单独的结果。 不、这完全解决了问题、我仍然不得不擦除两侧的键合、然后重试几次配对。 但最终它确实会起作用(再说一次、这是我们必须研究的内容、因为这不是应该发生的事情)

    下面是我对 simple_peripheral 所做的更改-

    /cfs-file/__key/communityserver-discussions-components-files/538/4532.simple_5F00_peripheral.c

    我们将进一步对此进行研究、希望很快为您提供解决方案、

    此致、

    反叛分子

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

    感谢您提供最新的 Rebel。  我期待早日解决问题。

    此致、
    SG

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

    我们仍在尝试了解器件在使用新密钥进行配对时遇到问题的原因、但与此同时、我通过执行以下操作、能够使用 Rebel 的简单外设代码来清除所有绑定:

    1、按照上面 Rebel 修改的文件所示对 simple_peripheral.c 进行了更改
    2.将 simplelink_cc2640r2_sdk_1_30_00_25/source/ti/blestack/common/cc26xx/board_key.c 中的 board_key.c 和 board_key.h 添加到应用文件夹
    3.添加了对 gapbondmgr.c 的修复,如 processors.wiki.ti.com/.../CC2640R2_Porting_Projects 所述

    在进行这些更改后、我通过按 LaunchPad 上的 BTN-1清除了绑定、并重新绑定到我的手机。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你 Rachel。  如果没有太多问题、您能否发布修改后的文件?  TIA。

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

    对 gapbondmgr.c 的更改非常小。 我们尝试使说明非常清晰、但如果您在遵循说明时遇到问题、请告知我、以便可以改进说明。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Sheela、

    已在 BLE-Stack 库中确定了此配对问题的根本原因。 我们能够解决此问题、解决方法将包含在下一版本中。 您是否能够在按下按钮时进行必要的修改以清除粘接信息?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Rachel 的更新。 我期待在新 SDK 发布后获得它。 您是否知道何时发布?

    我还想补充一点,我尝试了为清除所有债券而提供的修复,它运转良好。 谢谢你。