【问题标题】:Bluetooth Low Energy Lag / Latency on OS X 10.11 El CapitanOS X 10.11 El Capitan 上的蓝牙低功耗延迟/延迟
【发布时间】:2016-02-04 09:36:39
【问题描述】:

我一直在开发一个 Mac OS X 应用程序,该应用程序通过低功耗蓝牙连续向硬件设备发送命令。在 Yosemite 下,该应用程序运行良好,测量的命令传输往返延迟为 7-12 毫秒。该命令以最小 2 秒和最大 0.2 秒的稳定间隔发送到自定义 BLE 服务。

现在,我最近几个月没有进行开发(该应用还没有上线),然后升级到 El Capitan,现在同一个应用的延迟为 500-1500 毫秒,这使得整个东西绝对无法使用。我假设升级到 El Capitan 是原因,但我无法确定。

我检查了什么:

  • 我在多台运行 El Capitan 的 MacBook Pro 上进行了测试,延迟总是那么糟糕。
  • 无论将命令发送到何种服务(例如,设备信息服务),这些命令都有很高的延迟,并且随着每条发送的消息而变化很大。
  • 无论我是使用我们自己的应用程序、名为“LightBlue”的第三方应用程序来发送十六进制字符串,还是使用 Apple 自己的“Bluetooth Explorer”开发者工具(可在开发者资源中下载)都没有关系。李>

任何人都可以提示我可能导致这种情况的原因,或者只是告诉我在他们的环境中一切正常吗? 要重现,请使用您的 Mac 连接到任何支持蓝牙低功耗的设备,并向其发送十六进制数据字符串。您必须以某种方式记录它或打开一个 LED 左右,以查看是否存在明显的延迟。

非常感谢任何帮助!

【问题讨论】:

    标签: macos bluetooth osx-elcapitan latency bluetooth-lowenergy


    【解决方案1】:

    看起来 El Capitan 使用的连接参数与 Yosemite 下的连接参数不同。

    在 OS X 下,CoreBluetooth 决定给定设备使用哪些连接参数,而不考虑客户端应用程序。不幸的是,CoreBluetooth 计算参数所依赖的规则有些不透明,并且依赖于设备(暴露的服务、DIS、AD)。 El Capitan 的某些规则可能发生了变化。

    您应该开始寻找一些方向:

    • Apple Bluetooth Accessory Design Guidelines详细介绍了apple Centrals接受的连接参数的一些规则,

    • 延迟问题也可能是由于高 slaveLatency 连接参数。它有助于节省外围设备的电池寿命,但会使 Central->Peripheral 延迟有些不可预测。您可以减少设备接受的从属延迟,

    • 嗅探器日志或外围设备端调试肯定有助于了解 Yosemite 和 El Capitan 之间实际更改的参数。

    【讨论】:

    • 感谢您的提示和分析。下次我会看一下文件以便更好地准备:)
    【解决方案2】:

    最后 Apple DTS 帮我解决了这个问题。他们提示我固件中设置不正确的“首选连接参数”。

    在 Yosemite 的早期版本中,这些值无效(与 iOS 上相同),但由于某些操作系统更新,它们在 Yosemite 和 El Capitan 上被读取。根本没有设置参数解决了这个问题。

    在我的例子中,这些值是默认设置的:

    连接间隔: 最小 7.5 毫秒, 最长 50 毫秒

    从属延迟:0ms

    连接监督超时:10000

    这些值以某种方式导致了高延迟。这是我必须在 Cypress PSoC Creator 3.3 中取消勾选的设置的屏幕截图(我使用的是 PSoC 4 BLE)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 2017-04-19
      • 2015-01-09
      • 1970-01-01
      相关资源
      最近更新 更多