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.

[参考译文] CC2650MODA:频繁断开连接、但仅在配对时

Guru**** 2541000 points
Other Parts Discussed in Thread: CC2650MODA

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/642525/cc2650moda-frequent-disconnects-but-only-when-paired

器件型号:CC2650MODA

您好、

我有一些基于 CC2650MODA 的 BLE 传感器器件。
由于传感器信息可能被视为个人信息、因此我选择了应用基于 PIN 码的配对过程、并通过将相关特性的权限设置为 GATT_Permission_AUTHEN_READ / GATT_Permission_AUTHEN_WRITE 来执行此操作。
我注意到、自从进行此更改以来、我的器件经常(随机间隔)与中央器件断开连接。

传感器应用程序在 CC2650MODA 上运行、其应用程序基于 SimpleBLEPeripheral 版本  2.01.18。
中央是一个具有内置蓝牙 BlueZ 5.47的 Raspberry Pi 3、并运行基于 Bluez D-Bus API 的应用。
当应用程序尝试读取/写入需要身份验证的特征时、Bluez 会自动启动配对过程(使用6位数的 PIN 代码)、这似乎符合预期。
器件已配对、读/写特性按预期工作、通知也正常工作、但连接会不时断开。

我最近尝试使用 ESP32作为中心、它的行为也类似。 当不需要配对时、连接会在很长的时间(几周)内保持活动状态、但在应用配对时、连接会在~80秒后消失。

我是否缺少任何其他内容、需要在 BLE 应用中进行更改才能使安全连接保持活动状态?

提前感谢、
Assaf

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

    您需要确定断开原因以进一步调查。 首先、我将捕获 BLE 空气监听器(而不是 HCI 转储)。 确保它捕获配对序列、以便在配对发生时获得解密 PDU。

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

    嘿、JXS、

    从 ESP32断开的原因是0x22、映射到"LMP Timeout (LMP 超时)"。

    我已在随附的文件中捕获 BLE 数据包。 我的环境似乎非常嘈杂、但您可以在数据包256中看到连接请求。 外设的 MAC 地址为 a0:E6:F8:D1:D1:07。 我可以看到连接按预期开始。 我的应用程序将尝试读取特定特征、如果由于需要配对而失败、则会尝试配对。 假设我正确读取了转储、则会在数据包号379+380上发生这种情况。
    我不确定当时会发生什么情况。 一些密钥被交换、但我看不到任何数据流动。 配对完成后、应用程序应尝试再次读取特征(根据我的日志、确实如此)。 然后、我等待有关上述特征的通知。 它们也按预期工作。 但是、在~80±10秒后、连接仍然断开。 即使通知仍然有效直至结束、也会发生这种情况

    我的连接参数如下:

    //
    如果启用了自动//参数更新请求
    ,则最小连接间隔(单位为1.25ms,80=100ms)#define DEFAULT_MILLED_CONN_INTERVAL 80
    
    //如果启用了自动
    //参数更新请求
    ,则最大连接间隔(单位为1.25ms,200=250ms)#define DEFAULT_REGIND_MAX_CONN_INTERVAL 200
    
    //启用自动参数更新请求时使用的从器件延迟
    #define DEFAULT_NEXT_SLAVE 3
    
    //如果
    启用了自动参数//更新请求
    #define DEFAULT_MILLED_CONN_TIMEOUT,则监控超时值(10ms、1000=10s 的单位) 1000 

    ESP32 BLE 堆栈基于 Bluedroid (不知道哪个版本)、是值得的。
    我已经看到其他论坛主题是 DLE 和 BRAD Android 堆栈实现的原因。 我的堆栈配置如下:

    /* BLE 主机构建配置*/
    -DHOST_CONFIG=PERIPLE_CFG
    /*-DHOST_CONFIG=CENTRAL */
    *-DHOST_CONFIG=观测 器_CFG */
    /*-DHOST_CONFIG=Broadcaster _CFG */
    *-DHOST_CONFIG =CONTOPLE_CFG_W/
    
    
    
    
    
    
    
    
    
    
    *-ST_CFG_OFFICEND***/******_CFG_CONFIG_CONFIG_CONST_CONST_CONFIG=ST_CONST_CONST_CONST_CONFIG=ST_CONST_CONFIG */*/*****_CONST_CONST_CONST_CONST_CONST_CONST_CONST_CONST_CONST_CONST_CONST_CONST_CONST_CONST_CONST_CONST_CONST/*****
    /*-dble_v41_features =L2CAP_COC_CFG+V41_CTRL_CFG */
    *-dble_V41_features =L2CAP_COC_CFG *
    /*-dble_V41_features =V41_CTRL_CFG *
    
    /*-dble_v4.2 *
    /*-tle_CFG_features =V42_en_secure_t_v42_en_v_v_en_v_en*
    
    
    
    
    /*
    
    
    
    
    
    

    我认为它与 DLE 无关、未启用 EXT_DATA_LEN_CFG。

    问题可能出在哪?

    提前感谢、
    Assaf

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

    忘记连接 BLE dump...e2e.ti.com/.../sniff.psd

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

    嘿、JXS、

    我已经附上了相关结果、但我不确定要做些什么。
    有什么值得您注意的东西吗?

    再次感谢、
    Assaf

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

    HelloAssaf、

    关于 sniff.psd、除了主器件停止传输导致监测超时(LSTO)外、日志不能提供对问题的任何见解。 我看不到任何未处理的控制过程、但是监听器无法对连接的加密部分进行解码。 我建议在主器件侧进一步调查、以确定它为何在连接期间停止传输。

    祝你一切顺利

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

    这确实是 ESP32 BLE 堆栈中的一个错误。

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

    感谢您确认并更新 TT。

    祝你一切顺利