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.

[参考译文] CC2652R:SDK 2_30_00_34中的 simple_peripheral 无法与 Windows 10配对

Guru**** 2771175 points

Other Parts Discussed in Thread: CC2652R, CC2640R2F

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/743586/cc2652r-simple_peripheral-from-sdk-2_30_00_34-fails-to-pair-with-windows-10

器件型号:CC2652R
主题中讨论的其他器件: CC2640R2F

您好!

我采用了 CC26x2 SDK 2.30.00.34并使用 IAR Workbench 8.22.2.15996编译了示例“simple_peripheral”(FlashROM_Release),并将其与 Launchpad CC2652R1配合使用(根据贴纸 Rev 1.0.1)。

示例固件已启动并正在运行、并在串行控制台上显示正确的消息。

广播工作正常(请参阅 Frontline 捕获)、Windows 10 (版本1803)找到 simple_peripheral 并与其连接、但配对始终失败、因此连接将立即终止。

SMP 错误为“Pairing Failed”(配对失败)、“Invalid Parameters”(无效参数)(请参阅随附的屏幕截图和 Frontline capture)。

欢迎提供任何反馈。

此致........... 托比亚斯

一线捕获文件: https://www.zeta-uploader.com/2059676674

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

    您链接监听器日志的网站被我们的网络阻止。 您可以通过转到回复框并单击插入代码、附加文件等来附加文件、以便为我们提供下载日志的链接吗? 我们需要一些时间来检查日志。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Evan、

    感谢您的回复。

    我压缩并连接了 Frontline CFA。

    此致。。 托比亚斯

    e2e.ti.com/.../simplePeripheral_5F00_2_5F00_30_5F00_00_5F00_34_5F005F00_pairingFailed_2D002D00_attempt2.zip

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

    您是否正在使用开箱即用示例或是否对简单外设示例进行了任何更改?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jessica:

    我采用了 SDK 并使用 IAR Workbench 编译了示例。 对源代码或设置完全没有更改。

    我们也使用了 Lubundu 和 BlueZ 5.48进行了测试:所有测试都正常、没有问题。 似乎只有 Windows 10才会出现此问题。

    我提出了两个意见:

    Windows 设置 AuthReq CT2 H7支持位(请参见附图)。 这会导致问题吗?

    当配对失败时、CC2652R 的回复包含公共配对调试密钥

    Frontline 捕获不显示配对密钥交换、因为 DLE 可以在该点处于活动状态、Frontline BPA 无法捕获 DLE。 但是、根据激活 DLE 的时间、配对密钥会与链路层碎片数据包交换、这些数据包可以被捕获和解码。 为了完全确保我们也使用支持 DLE 的 Ellisys 蓝牙跟踪器捕获到了这些数据:)

    因此、我可以说、在 主控器回复"配对失败"、"无效参数"之前、始终交换配对公钥(尽管我之前的 Frontline 文件未显示配对密钥交换)。

    您认为什么、主设备是否以"配对失败"进行回复、因为 CC2652R 正在发送公共配对调试密钥?

    谢谢。。 托比亚斯

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

    您好 Tobias、

    您能给我们发送您的 Ellisys 文件吗? 如我们 "%20title="BLE5%20User's%20Guide">的用户指南%20Guide"title="BLE5-Stack 用户指南">BLE5-Stack 用户指南中所述,该器件使用公共配对调试密钥,因此您可以在启用了 LE Secure Connections 的情况下解密无线监听器日志,因此这不应成为原因。  AuthReq CT2位是 BLE5的新位、这就是为什么它被保留在 BLE4.2核心规范中。 我们已经能够与设置 CT2的其他器件配对、但我们可以通过 Ellisys 日志对此进行进一步研究。 我想指出、我们可以在这方面提供一般支持、但如果 Microsoft 的 BLE 堆栈存在类似问题、我建议您也联系 Microsoft 解决此问题。

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

    尊敬的 Jessica:

    您对 Windows 10和最新的 BT5 SDK for CC2652R 有何体验?

    Ellisys 文件已附加。 相关的访问地址为0xEE1C7885、错误出现在 CE #10中。 主器件的 BD 地址为00:28:F8:5F:F1:21。

    e2e.ti.com/.../20181108_2D00_tibt5stack_5F00_windows_5F00_01.zip

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

    您好 Tobias、

    我还在研究这个问题、并检查您的 Ellisys 文件。 我还没有听说过任何有关 Windows 10和用于 CC2652R 的最新 BT5 SDK 的特定报告。 请问您的 Windows 10计算机上运行的是哪个版本的 BT 吗?

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

    您能为我提供一些重现此问题的步骤吗? 您在 Windows 10上使用什么来连接 CC2652R? 您是否正在使用 BLE Scanner 应用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jessica:

    抱歉、我是 ooo……

    据我所知、Windows 10具有 HCI 版本8.256和 LMP 版本8.256、即蓝牙4.2。

    我使用 Windows 10系统控制"蓝牙和其他设备"来配对 SimplePeripheral。

    请在下面找到屏幕截图:1)启用 BT、2)添加新器件3)出现"SimplePeripheral"时、请单击它

    谢谢。。。 托比亚斯

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

    很抱歉耽误你的回答、我现在是 ooo。 我的一位队友告诉我、他们能够与您重现此问题。 我们将努力找出这种情况的根本原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Tobias、

    您可以尝试使用 Windows 10 BLE 应用测试此功能吗? 在搜索监听器日志并在我们的末尾进行调试后、我们决定使用 BLE 应用对其进行测试、该应用允许您读取/写入特征。 我们使用了低功耗蓝牙资源管理器、它工作正常。 我们假设导致这种情况的原因是 Windows 10计算机断开连接、因为它没有对设备执行任何操作。

    我们的 Ellisys 日志也不匹配。 我们的器件能够在断开连接之前进行配对、而您提供的器件却没有这么远。 您是否对代码进行了任何修改? 尝试与设备配对时、您是否能够在配对失败之前输入密码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Tobias、

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

    尊敬的 Jessica:

    很抱歉我的回答延迟。

    我对不同的 SDK、芯片和 Windows 版本进行了多次测试。

    所有测试显示的结果与我们在奥斯陆与 Sean 一起看到的结果相同。

    如果未使用 BLE 服务、Windows 10 1803将断开连接-这是正确的。 这对1703也有效、但对1507这样的文件夹旧版本无效。

    这些较早版本的 Windows 10即使在不使用 BLE 服务的情况下也能保持 BLE 连接。

    第二个区别是 SC_HOST_DEBUG 特性/定义。

    如果在堆栈配置中启用了 SC_HOST_DEBUG、则无法与任何版本的 Windows 10配对-不能与1803配对、不能与1703配对、也不能与1507配对。

    2.如果删除/停用 SC_HOST_DEBUG、它将能够与任何版本的 Windows 配对。 根据 Windows 10的版本、连接将在几秒钟后终止或不终止。

    对于具有 BT4.2和 BT5的 CC2640R2 SDK 2.30.00.28以及针对 SDK 2.10.00.44和 SDK 2.30.00.34的 CC2642/CC2652、SC_HOST_DEBUG 的这种行为是相同的。

    请查找随附的 Ellisys 文件、这些文件用于具有和不具有 SC_HOST_DEBUG 的不同 SDK。

    Sean 在 Oslo 中提到、如果使用了 SC_HOST_DEBUG、堆栈的行为会有所不同。 也许这种不同的实现会导致问题...?

    谢谢。。 托比亚斯

    e2e.ti.com/.../cc2652r1_5F00_bt5_2D00_secure_2D00_conn_5F00_debug_2D00_keys_5F00_sdk_5F00_2_5F00_10_5F00_00_5F00_44.zip

    e2e.ti.com/.../cc2652r1_5F00_bt5_2D00_secure_2D00_conn_5F00_debug_2D00_keys_5F00_sdk_5F00_2_5F00_10_5F00_00_5F00_44_2D002D00_attempt2.zip

    e2e.ti.com/.../cc2652r1_5F00_bt5_2D00_secure_2D00_conn_5F00_debug_2D00_keys_5F00_sdk_5F00_2_5F00_30_5F00_00_5F00_34.zip

    e2e.ti.com/.../cc2652r1_5F00_bt5_2D00_secure_2D00_conn_5F00_sdk_5F00_2_5F00_10_5F00_00_5F00_44.zip

    e2e.ti.com/.../cc2652r1_5F00_bt5_2D00_secure_2D00_conn_5F00_sdk_5F00_2_5F00_30_5F00_00_5F00_34.zip

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

    弹出这里一个位。 我相信、看到不同器件的不同运行能力时、这会让您感到有点沮丧。

    1) 1) Windows 似乎已向其 BLE Stack 添加功能、即当不使用服务时、它将终止连接。 这不是我们的芯片可以控制的。 如果您想保持连接、您唯一可以做的就是偶尔在 Windows 笔记本电脑上 ping 一个服务、但我们没有关于他们实施的超时方案的信息。

    2) 2)奇怪的是、当使用 SC_HOST_DEBUG 密钥时、Windows 笔记本电脑不会配对。 我的直觉反应是 Windows 笔记本电脑/堆栈有错误或不允许使用调试密钥作为安全功能的概念。

    在这两种情况下、我们建议联系 Microsoft 以了解其 BLE Stack 的实现。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果需要、您可以随时向 Sean、Jessica 或 I.提出更多问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Evan、

    1不是一件事。 在开始对 SC_HOST_DEBUG 进行调查时、有一点掩盖了实际发生的情况。 但最终没有关系。

    但我们认为#2不是来自 Windows。
    我的第一个想法是、Windows 会检测调试密钥、然后出于安全原因拒绝这些密钥。 因此、我更改了 debugs 密钥(可以在 hex 文件以及 gapbondmgr.c 中执行此操作)、以便 Windows 不再看到调试密钥、因此无法拒绝这些密钥。
    但是、即使使用这些非调试密钥、也会出现相同的问题。

    预处理器定义 SC_HOST_DEBUG 启用/禁用的代码块有多个。
    当没有生成 ECC 密钥时、堆栈的内部流程和处理可能与生成新 ECC 密钥时的情况不同。
    这种差异是否会导致配对问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Evan、

    我使用 CC2652R1和 SDK 2.30.00.34进行了额外测试、并对 SimplePeripheral 示例进行了细微修改。

    SC_HOST_DEBUG 不是(!) 已定义。

    以下代码已添加到 SimplePeripheral.c 中:

    静态 gapBondEccKeys_t my_gapBond_eccKeys =
    {
    {0x7B、0x21、0xDF、0x4A、0x51、 0x3F、0x10、0xA2、0xEB、0x13、 0x29、0x73、
    0x8B、0x22、0x8F、0x11、0xD0、 0x2E、0x1A、0x7B、0xB4、0x32、 0xE2、0x2F、
    0x4C、0xBE、0x97、0xE2、0xD2、 0x03、0xA0、0x20
    }、
    
    {0x36、0x9D、 0x35、0x7E、0x46、0x51、0x13、 0x2C、0x0B、0x2D、0xF4、0xFC、
    0xBF、0x12、0x3C、0xDD、0xA6、 0xB8、0x99、0x58、0x99、0x57、 0x42、0xEB、
    0x38、0x13、0x12、0xA3、0xD4、 0xF6、0x49、0x3F
    }、
    
    {
    0x11、0x91、0x34、0xEF、0x19、 0xA5、0xE9、0xE9、0xF7、0x85、 0x2C、0x5E、
    0xC2、0x45、0x63、0x72、0x52、 0x14、0x5F、0x5F、0xBA、0x2A、 0x32、0x63、
    0x6D、0xEB、0x2A、0x15、0x49、 0x3C、0x80、0xFC
    }
    }; 

    并将其用于中  

    SimplePeripheral_init() 
    GAPBondMgr_SetParameter (GAPBOND_ECC_keys、sizeof (gapBondEccKeys_t)、&my_gapBond_eccKeys); 

    使用与调试密钥不同的固定密钥。

    Frontline AIR TRACE 准确地显示了我在 C 代码中放置的密钥,因此 GAPBondMgr_SetParameter()工作正常。

    问题是相同的。 无法与 Windows 配对。

    我旁边没有 Ellisys、所以我不得不使用 Frontline。 希望您可以打开它。

    对我来说、这看起来像是 CC26xx 堆栈中的问题、而不是 Windows 中的问题。

    e2e.ti.com/.../cc26x2r1_5F00_2_5F00_30_5F00_00_5F00_34_5F005F00_without_2D00_SC_5F00_HOST_5F00_DEBUG_5F005F00_customized_2D00_ECC_2D00_keys.zip

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

    我确实同意,我们需要研究这一点。 我将在下周初尽力调查这件事、并在周末作出回应、但在假期中、我们的部分员工人数有限、因此有机会在假期中流失。 您是否有严格的时间表?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Evan、

    没有严格的时间表、本主题也不是一个重要问题。
    我们正在等待新 ROM 的新样片、然后我们希望在2019年第1季度完成 CC2640R2F 第一个应用的移植。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的更新。 我想快速更新您、因为我们的假期人手不足、支持速度减慢。 不过,我会尽快研究,但可能不会等到假期后才会研究。 快乐的假期!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嘿、也只是为了外部目的更新这个线程。

    这项调查已经内部进行、并已确认在使用固定 ECC 密钥时、堆栈中似乎存在错误、这会导致我们的器件两次发送公钥。