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**** 2520240 points
Other Parts Discussed in Thread: WL1831

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/955480/wl1831mod-slow-ble-response-times-after-second-device-is-connected

器件型号:WL1831MOD
Thread 中讨论的其他器件:WL1831

我们正在开发一个将 TI WL18xx 用作蓝牙控制器的硬件/软件项目。 该产品的主要功能之一是通过低功耗蓝牙连接与传感器硬件进行通信。 我们遇到了一个问题、我们在引脚定位方面遇到了困难、但感觉可能存在于 TI WL18xx 硬件/固件中。  间歇性地、连接第二个低功耗蓝牙器 件后、从写入和通知其中一个已连接器件的特性开始的响应时间会变得非常长。

详细信息

主机产品器件 在 TI AM4376x 处理器上运行我们自己的嵌入式 Linux 映像。 内核为 4.14.79、我们的通信堆栈位于 Bluez5之上。 WiFi/蓝牙芯片是 Jorjin WG7831-BO、运行 TIInit_11.8.32.bts 固件版本4.5。 它基于 TI WL1831。 我们连接到的传感器器件是我们自己的器件、我们 使用自定义命令协议、该协议使用两个特性来执行命令握手。 这些器件在许多其他平台上都能正常工作、包括 Mac、Windows、Linux、Chrome、 等等  

导致问题的工作流程是:

  • 用户空间应用 可让用户通过 BLE 发现传感器器件并将其连接到我们的传感器器件、BLE 每次一个器件。
  • 初始连接需要针对上述 BLE 特性进行大量命令/响应类型通信。
  • 连接后、流量会显著减少到偶尔发出新测量的通知、以及用户触发的偶尔命令/响应交换。
  • 单个器件始终看起来稳定且性能出色。
  • 当用户连接到第二个设备时、初始连接按预期进行。
  • 但是、一旦第二个器 件的连接过程完成、我们开始看到、在最初连接的器件上、命令/响应时间会延长数百倍。
  • 第二个器件通信按 预期速度继续。
  • 此问题仅在我们 遵循此工作流程的第一台设备大约50%时发生。

迹线

附件是我们的器件通信 库(前缀为"D2PIO_SDK")和显示蓝牙问题的 btmon 的完整跟踪。 下面是由跟踪日志构成的问题的简短片段、该日志是我们的库调试和 btmon 跟踪的组合。  

直到第4102行、一切看起来都很好、我们在该行看到以下内容:  

< ACL 数据 TX:处理1025个标志0x00 dlen 22                                                               #1081 [hci0] 00:12:48.654867
   ATT:写入命令(0x52) len 17
    句柄:0x0014
     数据:580fd8c71bff00204e00000000
D2PIO_SDK:GMBLNGIBLOPP.CPP (1532):发送的 Blob cmd:1bh 至 GDX -用于07100117;长度= 15;滚动计数器= 216;时间戳= 258104ms。
> HCI 事件:已完成数据包的数量(0x13) PLEN 5.                                                          #1082 [hci0] 00:12:49.387892
    数字句柄:1.
    手柄:1025
    数量:1.
> ACL Data RX:handle 1025 flags 0x02 dlen 23                                                               #1083 [hci0] 00:12:51.801225
   ATT:处理值通知(0x1b) len 18
    句柄:0x0016
     数据:9810272f1bd8ff00204e00000000
D2PIO_SDK:GMBLNGIBlobSource.CPP (1745):GetNextResponse (GDX-for 07100117)在3139=(261263-258124)毫秒后返回1bh cmd bb。

GetNextResponse()报告的大多数 CMD 的运行时间应小于30毫秒。 当我们打开并向器件 A 发送一组 cmds 时、响应时间很短
当我们打开并向器件 B 发送一组 cmds 时、响应时间仍然很短。但在随后发送到器件 A 的第一个 cmd 上、响应时间大于3秒!
此故障是可重复的、因为当它发生故障时、它会显示此模式、并且只有第一个打开的器件才会出现减速。 但是、仅在大约三分之一的测试中发生故障。
 
请注意,当经过的时间超过1毫秒时,CHR_DO 写入()报告经过的时间(以毫秒为单位)。 它基本上只调用 g_io_channel_write_chars (大约20个字节)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    除了 LE 中央角色、您是否在 WL1831器件中使用任何 BT 经典功能? 如果没有、是否也可以禁用页面和查询扫描并进行尝试? 此外、您是否可以访问 BT_DBG 引脚以获取 BT FW 日志?

    谢谢

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

    我们支持的唯一蓝牙器件是低功耗、因此我认为我们不使用蓝牙经典功能。 不确定如何 禁用页面和查询扫描。 请注意、我们正在使用嵌入式 Linux 内核、因此我们必须通过 Linux 才能访问 WL18xx 器件。

    我们可以访问 WL18xx 上的调试引脚。 我想附加几个.lgr 文件、但我看不到如何在这里附加文件?????

    我尝试插入一些使用 TI 蓝牙记录器应用程序创建的.lgr 文件、但此论坛编辑器不喜欢附件上的.lgr 扩展名。 有什么建议?

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

    尝试附加使用 TI 蓝牙记录器创建的日志文件...论坛工具拒绝扩展名为.lgr 的文件、因此我为它们提供了.png 扩展名。

      

    请注意、我正在与 Ian Honohan 一起解决此问题。

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

    从 Wireshark 获得了显示故障的有趣跟踪。 通常情况下、主机(TI WL18xx)蓝牙控制器似乎每7.5毫秒轮询一次连接的传感器。 但是、当事情发生时、主机一次无法轮询或传输任何内容数秒。 即使我们的用户空间应用程序未发送任何数据、我们也应该会每7.5毫秒看到一次轮询流量。

    错误首先显示在日志条目5317中、时间偏移为37.576。 由于日志条目5321和5324之间的延迟为2.149秒、我们的应用程序会变得不开心。 通常、该延迟应< 50毫秒。

    Wireshark 跟踪文件为 Eureka_fail.pcapng。 我似乎无法将具有该扩展名的文件插入此编辑器、因此我已将 Eureka_fail.pcapng 重命名为 Eureka_fail.jpg 并在此处插入了 jpg 文件。

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

    我共享了一个 Box 文件夹。 您可以上传至...

    谢谢

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

    很抱歉很密集,但如何访问此“Box 文件夹”?

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

    您应该已收到一个电子邮件 ID 为 swmgr@vernier.com 的邀请

    请勾选您的邮箱。

    谢谢

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

    我的经理需要将下拉框详细信息转发给我。 一旦我获得该信息、我将上传文件。

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

    Eureka_fail.pcapng 已上载到 Box 文件夹。

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

    Eureka_fail.pcapng 已上载到 Box 文件夹。

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

    日志文件已上载到 e2e_6488017_SLOW_BLE 文件夹。

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

    您好 Hari、

    我们是否可以采取任何措施来加快获取有关此方面的帮助?

    我正在插入 Wireshark 日志的屏幕图像、该图像似乎显示了事情发生的位置。 它似乎连接到 WL18XX 主器件、发送 LL_CHANNEL MAP_IND。

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

    关于禁用页面和查询扫描。 我相信、当调用 Bluez StopDiscovery 时、没有进行页面或查询扫描?

    只能使用 Bluez StartDiscovery 和 StopDiscovery 命令短暂启用发现。 启用设备发现时、不会与设备进行用户数据通信。 并且在启用设备发现时不会出现通信问题。

    btmon106.txt 文件跟踪中对此进行了说明,例如:

    ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

    @管理命令:启动服务发现(0x003a) PLEN 4{0x0001}[hci0] 00:12:11.542608
    地址类型:0x07
    BR/EDR
    Le Public
    LE 随机
    RSSI:-80dBm (0xb0)
    UUID:0

    @管理命令:停止发现(0x0024) PLEN 1{0x0001}[hci0] 00:12:18.645617
    地址类型:0x07
    BR/EDR
    Le Public
    LE 随机
    < HCI 命令:查询取消(0x01|0x0002) PLEN 0 #504 [hci0] 00:12:18.646601
    > HCI 事件:命令完成(0x0E) PLEN 4 #505 [hci0] 00:12:18.647489
    查询取消(0x01|0x0002) ncmd 1.
    状态:成功(0x00)
    μ@管理事件:发现(0x0013) PLEN 2{0x0002}[hci0] 00:12:18.647572
    地址类型:0x07
    BR/EDR
    Le Public
    LE 随机
    发现:禁用(0x00)
    μ@管理事件:发现(0x0013) PLEN 2{0x0001}[hci0] 00:12:18.647572
    地址类型:0x07
    BR/EDR
    Le Public
    LE 随机
    发现:禁用(0x00)
    μ@管理事件:命令完成(0x0001) PLEN 4{0x0001}[hci0] 00:12:18.647669
    停止发现(0x0024) PLEN 1
    状态:成功(0x00)
    地址类型:0x07
    BR/EDR
    Le Public
    LE 随机

    ===================================================================================================================================================

    一般通信模式如下:

    启用设备发现。

    查找器件 A

    禁用设备发现。

    打开(连接)至设备 A

    与器件 A 执行大量双向用户通信。通信快速、低延迟。

    启用设备发现。

    查找器件 B

    禁用设备发现。

    打开(连接)到设备 B

    与器件 B 执行大量双向用户通信。通信快速、低延迟。

    再次与设备 A 通信。 通信速度慢、延迟时间过长(> 2秒)。

    ===================================================================================================================================

    btmon106.txt 已上传到 app.box.com/.../126558953153

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

    很抱歉耽误你的时间。 似乎器件太频繁地进入 AFH 通道评估、并将更新的通道映射发送到外设。 您可以尝试禁用 AFH 通道评估(可能会有更多的重新传输)并查看行为。 您可以使用 Bluez hcitool cmd 发送'Write_AFH_Channel_Assessment_Mode'命令来禁用 AFH 评估。

    谢谢

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

    另一件事-您是否尝试禁用 WiFi 以进行测试? (ifconfig wlan0 down)

    谢谢

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

    似乎无法访问'Write_AFH_Channel_Assessment_Mode'命令。

    当我在我们的器件上运行 hcitool 时、会得到以下结果:

    hcitool - HCI 工具版本5.54
    用法:
           hcitool [选项] [命令参数]
    选项:
           帮助 显示帮助
           i dev HCI 设备
    命令:
           DEV    显示本地设备
           Inq    查询远程设备
           扫描   扫描远程设备
           名称   从远程设备获取名称
           信息   从远程设备获取信息
           Spinq  开始定期查询
           epinq  退出定期查询
           cmd    提交任意 HCI 命令
           CON    显示活动连接
           CC     创建与远程设备的连接
           直流     断开与远程设备的连接
           SR     开关主/从角色
           CPT    更改连接数据包类型
           RSSI   显示连接 RSSI
           LQ     显示链路质量
           TPL    显示发射功率级别
           AFH    显示 AFH 通道映射
           LP     设置/显示链接策略设置
           LST    置位/显示链路监控超时
           验证   请求验证
           ENC    设置连接加密
           密钥    更改连接链接密钥
           clkoff 读取时钟偏移
           时钟  读取本地或远程时钟
           Lescan 启动 LE 扫描
           leinfo 获取 LE 远程信息
           lwladd 将器件添加到 LE 白色列表
           lewlrm 从 LE 白色列表中删除器件
           lwlsz 读取 LE 白色列表的大小
           lewlclr 清除 LE 白色列表
           左添加将设备添加到 LE 解析列表
           从 LE 解析列表中删除器件
           lerlclr 清除 LE 解析列表
           Lerlsz 读取 LE 解析列表的大小
           Lerlon 启用 LE 地址解析
           lerloff 禁用 LE 地址解析
           LEC   创建 LE 连接
           ledc   断开 LE 连接
           lecup  LE 连接更新

    有关每个命令用法的更多信息、请使用:
           hcitool --帮助
    根目录@LabQuest:~# hcitool Write_AFH_Channel_Assessment_Mode --help
    未知命令-"Write_AFH_Channel_Assessment_Mode"
    根目录@LabQuest:~# hcitool read_AFH_Channel_Assessment_Mode
    未知命令-"READ_AFH_Channel_Assessment_Mode"

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

    我使用以下语法成功发送 READ_AFH_Channel_Assessment_Mode 和 Write_AFH_Channel_Assessment_Mode:

    hcitool cmd 0x03 0x0048   //读取

    hool citcmd 0x03 0x0049 0 //写入模式= 0

    在 btmon 中、我确认这是有效的:

    根目录@LabQuest:~# btmon &
    [1] 948
    root@LabQuest:~#蓝牙监视器版本5.54
    =注意:Linux 版本4.14.79-gfd8b90162f (armv7l)                                                                                   0.738550
    =注意:蓝牙子系统版本2.22                                                                                             0.738564
    =新索引:F0:C7:7F:39:9F:A1 (主索引、UART、hci0)                                                                            [hci0] 0.738568
    =打开索引:F0:C7:7F:39:9F:A1                                                                                               [hci0] 0.738570
    =索引信息:F0:C7:7F:39:9F:A1 (Texas Instruments Inc.)                                                                      [hci0] 0.738573
    @管理打开:bluetoothd (特权)版本1.14                                                                           {0x0001}0.738578
    @管理打开:btmon (特权)版本1.14                                                                                {0x0002}0.738727
    hool citcmd 0x03 0x0048
    @原始打开:hcitool (特权)版本2.22                                                                               {0x0003}6.610355
    @原始关闭:hcitool                                                                                                        {0x0003}6.610785
    @原始打开:hcitool (特权)版本2.22                                                                        {0x0003}[hci0] 6.611036
    < HCI 命令:ogf 0x03、ocf 0x0048、PLEN 0
    < HCI 命令:读取 AFH 通道评估模式(0x03|0x0048) PLEN 0                                                       #1 [hci0] 6.611489
    > HCI 事件:命令完成(0x0E) PLEN 5                                                                                #2 [hci0] 6.612108
         读取 AFH 通道评估模式(0x03|0x0048) ncmd 1
           状态:成功(0x00)
           模式:禁用(0x00)
    >HCI 事件:0x0E PLEN 5.
     01 48 0C 00 00
    @原始成交:hcitool    

    我还发送了'ifconfig wlan0 down'来关闭 wfi。

    遗憾的是、我们仍然看到 AFH_Channel_Assessment_Mode 和 WIFI 关闭时的通信缓慢问题。

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

    我将尝试在我的设置上复制此问题并返回。 您的测试的射频环境如何? 是在工作吗? 射频干扰级别..

    谢谢

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

    我们能够在家里和工作中重现问题。 WL1831在 TI AM437x Sitara 处理器上运行 Linux 的手持设备中运行。 手持设备包括一个集成的高分辨率显示器。 手持设备内部的射频级别可能是一个问题。 我们将为您提供我们的硬件。 联系我(Elliot Leonard)或 Ian Honohan 以获取我们的硬件。

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

    我认为、最好是在 AM335x/AM437x EVM 或 Beagle Bone 上重现 WL8 COM 板的问题。 这样可以消除任何硬件问题。

    谢谢