【问题标题】:iOS Bluetooth LE: Code=6 "The connection has timed out unexpectedly."iOS 蓝牙 LE:代码 = 6“连接已意外超时。”
【发布时间】:2015-09-15 14:11:34
【问题描述】:

我有一个 BLE 外围设备(我控制它的固件)和两个充当中心的移动应用程序,一个在 Android 上,另一个在 iOS 8.1 上。

Android 应用运行良好。 iOS 没有。连接一段时间后它会自发断开连接。错误是:

Code=6 "连接意外超时。"

连接和断开之间的时间是随机的。我从 40s 测量到 4m30s。

所有与 BLE 连接相关的外围设备正在将一些固件日志消息写入移动应用程序 UI。每隔几分钟就快速连续地对该特征进行几次写入。外围设备固件没有错误。

如何找到断线的原因?

【问题讨论】:

    标签: ios bluetooth-lowenergy


    【解决方案1】:

    在外围设备上的 BLE 模块制造商 Nordic Semiconductor 的广泛支持后,我们非常确定这是因为 iPhone 5C BLE 模块上的时钟不准确。也就是说,它不如连接请求中所述的准确。这是我在北欧论坛上的问题:

    https://devzone.nordicsemi.com/question/51258/ios-8-disconnection-code6-the-connection-has-timed-out-unexpectedly/

    【讨论】:

    • 那么你最终做了什么?您是否在iOS 端或 BLE 模块端进行了更改?我目前面临同样的问题...
    • 我减少了外围设备请求的最小和最大连接间隔,直到它停止发生。请注意,在我的设备固件中,这是在外围设备方面。如果您只是在 iOS 应用程序中编写,那将无济于事,但您也可以在那里指定连接间隔。我忘记了你对 iOS 的控制程度。
    【解决方案2】:

    所以我在使用 Microchip BM78 蓝牙模块与 iOS 通信时遇到了这个问题。我发现这个技术说明非常有帮助: https://developer.apple.com/library/archive/qa/qa1931/_index.html

    这些设置被刷新到 BM78 模块上。以下是上述技术说明中的 Apple“规则”:

    • 间隔最小值 ≥ 15 ms(15 ms 的倍数)
    • Interval Min + 15 ms ≤ Interval Max(允许 Interval Max == 15 ms)
    • 最大间隔 *(从属延迟 + 1)≤ 2 秒
    • 最大间隔 *(从属延迟 + 1)* 3
    • 从属延迟 ≤ 30
    • 2 秒 ≤ connSupervisionTimeout ≤ 6 秒

    我的价值观(运作良好):

    • 间隔最小值 = 15 毫秒
    • 最大间隔 = 30 毫秒
    • 从属延迟 = 4
    • 连接监督超时 =~ 5 秒

    【讨论】:

      【解决方案3】:

      我在 iOS14 上开发蓝牙时也遇到了同样的问题。我最初调整了Jim Holland提到的角色,但问题仍然存在。然后我怀疑它,因为信号的RSSI低。将测试手机靠近设备后,问题消失了!经过一些测试,我发现这个问题偶尔会在RSSI低于-90时出现。

      【讨论】:

        猜你喜欢
        • 2012-10-09
        • 1970-01-01
        • 1970-01-01
        • 2014-12-17
        • 1970-01-01
        • 1970-01-01
        • 2014-10-04
        • 1970-01-01
        • 2016-09-13
        相关资源
        最近更新 更多