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.

[参考译文] WL1831MOD:主器件在绑定时终止 BLE 连接。

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/654564/wl1831mod-ble-connection-terminated-by-master-when-bonded

器件型号:WL1831MOD
主题中讨论的其他器件:CC2540

Linux、WL1831MODGBMOCR、使用 PM。

连接到 iPhone 5 (10.3.3)或 iPhone 5S (11.2.1)时、主器件在绑定时关闭第三个连接。  使用 Samsung S5和 S6 (操作系统版本未知)时、配对后的后续连接也会失败。

我使用的是具有以下设置的固定密钥:

pAuthRspInfo->AuthenticationAction |= DEVM_authentication_action_low_energy_operation_mask;
pAuthRspInfo->AuthenticationDataLength = sizeof (AuthenticationResponseInformation.AuthenticationData.LEIOCapCapabilities);
pAuthRspInfo->AuthenticationData.LEIOCapability。io_Capabilities = licDisplayOnly;
pAuthRspInfo->AuthenticationData.LEIOCapabilities。bonding_Type = lbtbond;
pAuthRspInfo->AuthenticationData.LEIOCapcapications.MIPTM = false;
pAuthRspInfo->AuthenticationData.LEIOCapcapizations.SC = false;
pAuthRspInfo->AuthenticationData.LEIOCapCapabilities。P256DebugMode = false;
pAuthRspInfo->AuthenticationData.LEIOCapcapications.OOB_Present = false;
pAuthRspInfo->AuthenticationData.LEIOCapcapizations.Keypress = false;

服务中的特征需要 GATM_SECURITY_PROPERTIFY_UNAUTHICATE_encryption_write 和 read。

这些日志似乎表明由于密钥交换过程中发生的 MIC 故障而终止连接。  为什么会发生这种情况?  我是否配置不正确?

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

    e2e.ti.com/.../wilink8_5F00_connectionfailure_5F00_when_5F00_bonded.zip

    e2e.ti.com/.../pm.log

    e2e.ti.com/.../1121.BTSnoop_5F00_3rdConnectionIssue.log

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

    日志中的哪个跟踪准确表示 MIC 故障?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    BTSnoop_3rdConnectionIssue.log 帧#275

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

    Andrew、

    断开连接的"由于 MIC 故障(0x3D)而终止连接"原因将在以下任一条件下发生。

    -如果远程设备发送 LL_TERMINATE_IND,并将 MIC 故障作为原因代码。

    -如果在加密事务挂起时存在链路层(LL)事务冲突。

    从描述和 btssnoop 日志中可以看出,此错误主要是由于上述冲突造成的。 为了进一步确认和调试此问题、我们需要使用 BT Logger 工具(用户指南)从 BT_UART_DBG 引脚获取 WL183x FW 日志。

    此致、

    Vihang

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

    以下是 logs.e2e.ti.com/.../0763.logs.zip

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

    尊敬的 Andrew:

    我在0763.logs.zip 文件中未看到断开连接事件、该事件将"由于 MIC 故障而终止连接"(0x3D)显示为错误代码。 您在捕获这些日志时是否观察到原始问题?

    此外、固件日志(*。lgr)仅包含来自"BT Logger 1"端口的信息、而不包含"HCI/LMP Viewer 1"端口的信息。 因此、我无法确认导致此错误的条件之一、因为它未覆盖整个图片。 尽管从这些布线中的有限信息来看、我看不到远程设备发送 LL_TERMINATE_IND 的指示。 因此、我们现在可以排除第一个条件。 (如果您捕获下一个实例的完整日志、我们可以得到确认)。

    关于第二个条件、请参阅 BT 规格中的以下内容。

    "如果在加密启动过程中的任何时候、主站或从站的链路层从对等链路层接收到意外的数据通道 PDU、则应立即退出连接状态、并转换到待机状态。 应通知主机链路已断开、并显示错误代码"连接因 MIC 故障而终止"(0x3D)。

    因此、在这种情况下预计会出现 MIC 故障错误。 解决方案是确保远程设备在加密连接之前不发送任何数据。

    此致、

    Vihang

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

    Vihang、您好!

    我一直在与 Andrew 合作解决此问题、并生成了他提交的上一个日志文件。

    目前、我无法让 Logger 从"HCI/LMP Viewer 1"端口捕获日志。  随附 BT Logger 和 HCI/LMP 查看器设置。 我还单击了 View -> Show All Items、但仍未在 Logger 中看到 HCI/LMP 消息。 我使用的是 WirelessTools 安装程序版本4.0.0.2中的 Logger 5.0。 Logger 是否还需要执行其他操作才能记录 HCI/LMP?

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

    您好、Hieu、

    您的记录器版本是最新版本、但 TIInit_11.8.32.ili 和 TIInit_11.8.32.xml 文件似乎已损坏。 您可以从 WL18XX-BT-SP 页面下载这些文件。

    如需参考、完整的日志将如下所示。

    此致、

    Vihang

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

    Vihang、您好!

    感谢您提供指向*。ili 和*。xml 的链接。 Logger 按预期工作 now.e2e.ti.com/.../bonding_5F00_debug_5F00_20180213.zip 

    请参阅随附的、了解包含 HCI/LMP 消息的日志文件。 我将向您提供两个日志文件:一个是在使用 LightBlue iOS 应用时捕获的、另一个是使用 BTool 捕获的。 zip 文件中还包含 BTool 日志。  

    BTool 无法绑定到第三个(与 iOS 类似)。 请注意、BTool 在对链接进行加密之前不会发送任何数据。

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

    我在这些日志中看不到任何断开事件的"MIC Failure (0x3D)"错误代码。 这些日志中的所有断开连接都是由远程端终止连接导致的。 您能否确保我们仍在解决与原始帖子中提到的问题相同的问题?

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

    此帖子的原始目的是解决第三次 GAP_Bond 尝试失败导致远程设备关闭连接的问题。 请参阅我提交的 BTool 日志。

    最初、"MIC Failure (0x3D)"错误代码与此问题有关。 但是、不同的远程设备(例如不同的 iOS 设备、采用 CC2540 USB 软件狗的 BTool 等)似乎未观察到 MIC 故障错误代码、因此这可能是一个红色的错误。

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

    感谢您的澄清。 最后的两个日志都表示连接失败是由远程端终止链路层连接和引起的。 因此、我认为不会出现导致这种情况的链路层/固件问题。 可能存在配置文件/应用程序级别问题、可能导致远程端终止连接。 例如、在远程主机终止连接之前、Bonding_Debug_IOS_20180213.lgr 中的最后一个事件是 LE_Long_TERM_Key_Requested_Event。 主机将使用 HCI_LE_Long_TERM_Key_Requested_Reply 命令回复此事件。 在第3次和第4次尝试中,主机不使用此命令进行响应。 这可能会停止加密并导致远程设备终止连接。

    原始帖子提到您正在使用固定密钥。 如何使用 BluetopiaPM 实现固定密钥? 此外、您是否使用未修改的 BluetopiaPM 示例应用程序(如 LinuxGATM_CLT)尝试过相同的用例?

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

    Vihang、您好!

    我们将使用 BTPMSRVR 内部的 GAP_LE_Set_Fixed_Passkey 函数调用通过 InitializationDoneCallBack 设置固定密钥。

    根据您的建议、我在 LinuxGATM_SRV (未修改)应用程序上重复了绑定测试。 第三次尝试时加密请求仍然失败。 有关日志、请参阅随附的。 LinuxGATM_SRV 在开发硬件上运行、我将 BTool 与 CC2540 USB BLE 软件狗一起用作客户端。

    下面是我执行的步骤:

    GATM:1 1

    GATM:10 1

    GATM:RegisterAuthentication

    GATM:RegisterGATTcallback

    GATM:StartAdvertising 0x5 100

    BTool:扫描并建立连接

    BTool:发送配对请求(已选中绑定启用和 MIPTM)

    BTool:发送密钥

    BTool:将 LTK 保存到文件中

    BTool:从文件加载 LTK

    BTool:加密链接

    BTool:终止连接

    GATM:  StartAdvertising 0x5 100

    BTool:扫描并建立连接

    BTool:加密链接

    BTool:终止连接

    GATM:  StartAdvertising 0x5 100

    BTool:扫描并建立连接

    BTool:加密链接(状态为"无效事件 ID"的 GAP_Bond 失败)请注意、即使在绑定失败后、连接仍处于活动状态。

    e2e.ti.com/.../bonding_5F00_debug_5F00_20180214.zip

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

    感谢您分享详细信息。 我已就此问题通知堆栈专家。 他们目前正在研究这个问题。
    同时、如果我们可以使用 LinuxGATM_SRV 应用和远程 iOS 设备重新创建此问题、这将非常有帮助。 您是否有类似的说明供我们在 iOS 中重新创建此问题?

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

    Vihang、您好!

    在 iOS 设备上使用 LightBlue 时、iOS 设备已成功连接、但从未要求输入密钥(即 iOS 设备未发送验证请求)。  

    此致、

    Hieu

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

    对延迟答复表示歉意。 使用运行 LE 配置文件的 CC256x 器件作为客户端和未修改的 WiLink 端 LinuxGATM_SRV、我不会遇到多次断开连接和重新连接的任何问题。 除了 BTool 之外、您是否在任何其他客户端设备上看到过此问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dale、

    当我使用 iOS 或 Android 设备时、我会观察到不同的行为。 请参阅我对 Vihang 的最后一个回复、了解我在 iOS 上使用 LightBlue 应用时会发生什么情况。 当我在 Android 上使用 NRF Connect 时、绑定第一次尝试失败。 遗憾的是、我目前没有 CC256x 器件尝试重复您的实验。

    为您提供我们的 BTPM 应用程序源文件以便您尝试重现我们在 WiLink 设置中看到的问题的最佳方式(在此论坛之外)是什么?

    此致、

    Hieu

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

    我已发送友谊请求、通过 E2E 进行连接。 一旦您接受、我们就可以通过私人消息交换您希望使用的任何文件。
x 出现错误。请重试或与管理员联系。