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.

[参考译文] CC2642R:如何在 host_test 项目中使用 L2CAP CoC 功能和配对 SC OOB 功能

Guru**** 2540720 points
Other Parts Discussed in Thread: SYSCONFIG, CC2640

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1037085/cc2642r-how-to-use-l2cap-coc-feature-and-pairing-sc-oob-feature-in-the-host_test-project

器件型号:CC2642R
Thread 中讨论的其他器件:SysConfigCC2640

您好!

我使用的是具有 SDK 版本5.20的 CC2642芯片。 在我们的项目中、我们需要创建 L2CAP CoC 连接以交换数据、我们还需要使用配对 OOB 创建安全连接。 由于我们一直使用 host_test 项目、因此我们的目的还在于通过 HCI 命令/事件控制另一个微控制器的 L2CAP CoC 连接和 OOB 配对。

对于 OOB:

根据链接中的另一个论坛问题、CC2642 SDK 三年前不支持 SC OOB 配对。 SDK 版本5.20现在是否支持此功能?

对于 L2CAP:

根据 SDK 中提供的 User_Guide (L2CAP 部件)。 我找到了一些用于 L2CAP CoC 的示例代码、但我认为这些是 simple_center 项目的示例。 为了在我们的项目中实现该功能、我想与您澄清几点:

1.我们是否有将 L2CAP CoC 功能与 host_test 项目一起使用的示例代码和用户指南?  

2.在哪里可以找到有关"动态 PSM"的更多信息? 我是否应该在应用层(LE 主机部分)中将其管理为用户指南中提到的"动态通道"?

如何从配置为从器件的 host_test 项目发送 SDU? 因为我没有找到 HCI 命令执行此操作( 链接中 simple_center 示例项目中使用了 L2CAP_SendSDU 命令,但是,这是  VendorSpecifiGuide5.00.00 文档中的 HCI 事件)

如下面 VendorSpecifiGuide5.00.00中所述、当收到 L2CAP_ConnParamUpdateReq 时、LE 从主机应以 CommandReject 进行响应。  但是、L2CAP_CmdReject 在文档中仅作为 HCI 事件存在。 我应该如何通过 host_test 项目管理此点?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="497088" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1037085/cc2642r-how-to-use-l2cap-coc-feature-and-pairing-sc-oob-feature-in-the-host_test-project ] 根据链接中的另一个论坛问题、CC2642 SDK 三年前不支持 SC OOB 配对。 SDK 版本5.20现在是否支持此功能?[/quot]

    是的。 它在 CC26x2 SDK 上受支持。

    [引用 userid="497088" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1037085/cc2642r-how-to-use-l2cap-coc-feature-and-pairing-sc-oob-feature-in-the-host_test-project ]1. 我们是否有将 L2CAP CoC 功能与 host_test 项目结合使用的示例代码和用户指南?  [/报价]

    [引用 userid="497088" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1037085/cc2642r-how-to-use-l2cap-coc-feature-and-pairing-sc-oob-feature-in-the-host_test-project ]2. 在哪里可以找到有关"动态 PSM"的更多信息? 我是否应该在应用层(LE 主机部分)中将其管理为用户指南中提到的"动态通道"?

    不可以、只要您遵循软件用户指南、BLE 堆栈就会为您处理此问题。

    [引用 userid="497088" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1037085/cc2642r-how-to-use-l2cap-coc-feature-and-pairing-sc-oob-feature-in-the-host_test-project ]3. 如何从配置为从器件的 host_test 项目发送 SDU? 因为我没有找到 HCI 命令执行此操作(链接中 simple_center 示例项目中使用了 L2CAP_SendSDU 命令 ,但是,这是  VendorSpecifiGuide5.00.00 文档中的 HCI 事件)

    您必须创建最终调用 L2CAP_SendSDU 的自定义命令

    [引用 userid="497088" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1037085/cc2642r-how-to-use-l2cap-coc-feature-and-pairing-sc-oob-feature-in-the-host_test-project ]4. 如下面的 VendorSpecifiGuide5.00.00中所述、当收到 L2CAP_ConnParamUpdateReq 时、LE 从机主机应以 CommandReject 进行响应。  但是、L2CAP_CmdReject 在文档中仅作为 HCI 事件存在。 如何通过 host_test 项目管理此点?

     BLE 堆栈将为您处理此问题。

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

    您好、Christin、

    感谢您的快速响应。  

    今天、SDK 5.20版中还有其他示例项目已经将 L2CAP CoC 功能集成为 RTLS_Coordinator 和 RTLS_相应 器件。  

    为了能够通过 UART 交换 HCI_Vendor_specific 命令/事件、我们是否还可以在上述两个项目中实现 iCall_HCI_tl 相关接口? 还是 HCI 相关的 CMD 和 RESP 只能由 host_test 项目等软件架构进行管理?

    此致、

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

    您好!

    我不建议将主机测试架构合并到 RTLS 项目中、因为主机测试使用传统的 NPI 格式、而 RTLS 使用统一的 NPI 格式。

    如果您看一下它、您会发现大多数有用的命令已经被整合到 RTLS 项目中。 我会感到惊讶的是、您需要为它添加更多内容。

    RTLS 示例中是否缺少项目所需的任何功能?

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

    尊敬的 Christin:

    对于我们的客户电路板、我们实际上并不需要 RTLS 功能、但我们需要 L2CAP CoC 和 OOB 功能。 当您的同事再次命令我们从 host_test 项目以外的 RTLS 开始时、我们将尝试处理这些 RTLS 项目。  

    但是、为了 执行硬件测试、我们仍然需要能够从 UART 接收"HCI_EXT_ModemTestTxCmd()、etc" API (由测试仪发送)。 对于 host_test 项目、它更简单、因为我们可以从 UART 传输任何 HCI 命令/事件、并将其处理。 测试仪将按照 HCI_Vendor_Specific.pdf 发送所需的任何命令。 但是、我不知道我们如何在 RTLS 项目中实现这一点。 可以给我一些建议吗?

    此致、

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

    您好!

    为了在 RTLS 示例中使用 PTM 模式、您必须遵循此处的指南:

    https://dev.ti.com/tirex/content/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/creating-a-custom-bluetooth-low-energy-application-cc13x2_26x2.html#production-test-mode-ptm

    并在 simple_peripheral.c 下搜索 ifdef PTM_MODE、以查看需要添加到 RTLS 项目中的内容。

    下面是在检查 simple_peripheral 的 PTM 模式时添加到 config.opt 文件的屏幕截图。

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

    尊敬的 Christin:

    很抱歉、由于回复较晚、我在这几天内根据您的回复和 E2E 交流进行了一些测试。

    正如您在之前的响应中提到的、RTLS 项目使用 uNPI、链接仅提供 simple_xxx 项目的提示。此外、该指南仅适用于 simple_xxx 项目、因为 BLE 射频堆栈配置是必需的。 RTLS 可配置不支持 PTM 模式的定制射频堆栈。 因此、我们决定继续使用 simple_xxx 项目。  

    2.根据另一个交换意见: https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/993832/cc2642r-gapbond_pairing_state_complete-is-not-notified-in-secure-connections-pairing-oob 、我还测试了您的同事在 CC26x2R1 LaunchXL 板上发送的 simple_peripheral 和 simple_central。 我已经用 CCS 编译了这些项目了(因为 SDK 5.20中提供的 IAR 环境不起作用)、很遗憾、配对从我的角度来看失败了。 L2CAP 无法始终交换 OOB 确认和随机值。 TeraTerm 上的配对失败状态为2、Ellisys 上的未指定原因如下所示:

    为了使其正常工作、我将代码更改为调用 GAPBondMgr_GenerateEccKeys ();在 GAP_DEVICE_INIT_DONE_EVENT 中、OOB 参数在 L2CAP_CHANNEL_Estaded_EVT 中进行交换。 为了确保 OOB 适用于 SC、我还将中央侧更改为使用键盘显示作为容量、并在 SysConfig 项目中启用 ECC 调试密钥、然后我会获得以下日志:

    我确实让配对 SC 与 OOB 一起工作、但是、即使使用 SC_HOST_DEBUG 功能、Ellisys 仍然无法对链接进行解密、您有什么想法吗?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="497088" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1037085/cc2642r-how-to-use-l2cap-coc-feature-and-pairing-sc-oob-feature-in-the-host_test-project/3852067 #3852067"]RTLS 配置不支持 PTM 模式的自定义射频堆栈。 因此、我们决定继续使用 simple_xxx 项目。  [/报价]

    您还可以禁用 SysConfig 并自行更新.opt 文件。

    [引用 userid="497088" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1037085/cc2642r-how-to-use-l2cap-coc-feature-and-pairing-sc-oob-feature-in-the-host_test-project/3852067 #3852067"]我确实让 SC 与 OOB 配对、但是、即使使用 SC_HOST_DEBUG 功能、Ellisys 仍然无法解密链接、您有什么想法吗?

    要使用调试密钥进行加密、您需要按照以下指南启用该密钥:

    dev.ti.com/.../gapbondmngr-cc13x2_26x2.html

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

    尊敬的 Christin:  

    我在 SysConfig 中启用了"ECC"调试密钥"、但是 Ellysis 仍然无法解密流量。  

    此致、

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

    在5.20 SDK 中、如果两个器件都使用调试密钥、则存在一个错误、不允许配对。

    请在5.10 SDK 上检查它、或者您可以等待5.30 SDK 准备就绪、大约需要1~2周。

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

    您好、Christin、

    感谢您的响应、我将在5.10 SDK 上进行测试。 并在稍后向您提供反馈。

    此致、

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

    尊敬的 Christin:

    我刚刚在 SDK 5.10上进行了测试、Ellisys 无法对流量进行解密。  

    请查找随附的我使用的应用文件、在中央侧启用"ECC"调试密钥、在外设侧启用"允许接收调试密钥"。 请在下面找到我为 Central 项目修改的 SysConfig:

    e2e.ti.com/.../4011.simple_5F00_central.ce2e.ti.com/.../4721.simple_5F00_peripheral.c

    您是否对 Ellysis 无法使用这些配置解密链接的原因有一些了解?

    此致、

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

    为了解密流量、双方都需要使用调试密钥。

    请确保在加密时中央和外设都使用调试密钥

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

    尊敬的 Christin:

    很抱歉、对于较晚的响应、我还尝试启用外设侧的调试密钥、Ellysis 仍然无法解密流量。

    请在 SysConfig 下微调外设:

    此致、

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

    启用时、是否保存了 SysConfig 并重新构建了项目?

    您能否仔细检查 ti_ble_config.c 文件的中央和外设、以确保设置了调试密钥。

    SysConfig 生成的文件可在 workspace\simple_central_CC26X2R1_LAUNCHXL_tirtos_ccs\Release\syscfg 下找到

    或者、您可以在 application_init 中手动覆盖它。  例如:

        // Set Bond Manager parameters
        setBondManagerParameters();
    
        uint8_t eccDebugKeys            =    true;
    
        // Set Secure Connection Debug Keys
        GAPBondMgr_SetParameter(GAPBOND_SC_HOST_DEBUG, sizeof(uint8_t), &eccDebugKeys);

    在使用更新的软件执行另一个测试之前、请对中央和外设执行批量擦除、并使用更新的软件对它们重新编程。

    一旦您仔细检查了调试密钥的设置、Ellysis 仍然无法解密链接、我建议您联系 Ellisys、因为我使用调试密钥时没有问题、而我的 Ellisys 能够解密流量。

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

    尊敬的 Christin:

    对于两个项目、我都具有 eccDebugKeys=true、对于每个修改、我都会进行重建。 十六进制文件由 FlashProgramr2刷写、在这里我总是擦除所有未受保护的页面。  

    如果您说 OOB 配对(L2CAP CoC 用于交换确认和随机)和 Ellisys 没有问题、您可以共享您的项目吗? 因此、我可以从我的一侧执行相同的测试、以确保真正的埃利斯问题是存在的。 或者、您能否使用我的"SC"配置进行测试、以便得出相同的结论。  

    由于我在 CC2640和 CC2640r2上与您的 BLE4合作已有多年、因此对于"SC"配对、我从未遇到过 Ellisys 解密问题(但没有 OOB、我使用 host_test 项目)。  

     感谢您的全力支持和努力。  

    此致、

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

    尊敬的 Christin:

    根据您之前的回答:"为了解密流量、双方都需要使用调试密钥。"我们应该在双方配置"ECC"调试密钥。  

    但是、 在 GAPBOND_ALLOW_DEBUG_Fkeys 的注释中、有一条注释显示"* @注意、如果两个器件都允许、并且都在发送调试密钥、则会 由于镜像攻击怀疑而失败"、这是否正常?

    此致、

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

    尊敬的 Christin:

    我确实在中央执行您上面发送的代码、但根据 Ellisys 的日志、Central 发送的公钥仍然不是调试密钥:

    根据 BLE SIG 的规定、调试密钥应如下所示:

    我有使用 CC2640R2 SDK 4.10并启用调试密钥的其他 Ellisys 日志、然后 Ellisys 可以识别调试密钥、如下所示:

    那么、您对我的 SDK 5.10为什么无法发送调试密钥有什么想法吗?

    此致、

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

    您好!

    我不知道为什么您的中心不使用调试密钥、因为我无法重现您看到的内容。

    确保您使用的是5.10 SDK、如5.20之前所述、不允许中央和外设同时使用调试密钥。

    如果需要、您可以在此处发布您的项目文件(simple_central .c 和 ti_ble_config.c)、供我查看

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

    尊敬的 Christin:

    通过在 CCS->properties->General->Product 中检查 SDK 版本,我确信我使用的是 SDK5.10,如下所示:

    请找到所需的两个附加文件:

    e2e.ti.com/.../5531.simple_5F00_central.ce2e.ti.com/.../6153.ti_5F00_ble_5F00_config.c

    此致、