OS X 10.11 El Capitan 上的蓝牙低功耗延迟/延迟

Posted

技术标签:

【中文标题】OS X 10.11 El Capitan 上的蓝牙低功耗延迟/延迟【英文标题】:Bluetooth Low Energy Lag / Latency on OS 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 左右,以查看是否存在明显的延迟。

非常感谢任何帮助!

【问题讨论】:

【参考方案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)。

【讨论】:

以上是关于OS X 10.11 El Capitan 上的蓝牙低功耗延迟/延迟的主要内容,如果未能解决你的问题,请参考以下文章

Mac OS X El Capitan10.11 系统安装教程

ThinkPad X220 完美黑苹果 Hackintosh OS X 10.11 El Capitan

Mac OS X El Capitan(10.11)显示隐藏文件命令失效解决方法

os x el capitan 10.11 懒人版安装镜像怎么安装

在 OS X 10.11 El Capitan、macOS 10.12 Sierra、macOS 10.13 High Sierra (< 10.13.3) 上安装 pecl 和 pear

在 Win 7或8 下使用 VirtualBOX 虚拟机安装 OS X 10.11 El Capitan 及 Xcode 7.0