我正在使用 Nordic Semiconductor 的 Android-DFU-Library 来更新蓝牙低功耗 (BLE) 设备的固件。我已经在 github 上寻求帮助,但我想更多的人可以在这里看到这个问题(要么提供帮助,要么最终找到并回答)。
所以,这是我对github 问题的描述:
最近两天我一直在努力解决这个问题,我找不到任何线索。我希望这里有人能给我一个提示,我将非常感激。
我有 4 台设备:
- android 6.0下的无名平板电脑
- android 5.1下的三星galaxy tab 4
- android 7.1下的zuk z2 pro
- 安卓7.0下的小米5s
连接蓝牙设备进行更新后,我发送了一些特定的命令以进入 DFU 模式,然后在几秒钟后断开连接。一切正常到这一步。
然后,我使用 Android-DFU-Library 启动固件更新过程。它适用于 android 5.1 三星设备,但无法将 [status 133] 与其他 3 台设备连接。知道发生了什么吗?
非常感谢您的帮助。
当我在 nRF Connect 中手动执行此操作时,它可以工作。当我使用我的应用程序首先启用 DFU 模式时,它甚至可以正常工作,然后通过 nRF Connect 在稍作扫描后立即连接到设备以找到设备。
我在我的应用程序中执行此操作的方式是:启用 DFU 模式后,我扫描 10 秒以找到新的 mac 地址并确保一次只有一个设备处于 DFU 模式。然后,我使用这个库来进行实际的固件更新。
抛出 status=133 错误大约需要 30s,所以看起来是因为超时。
07-26 10:49:47.525 ... D/BluetoothGatt: connect() - device: ... , auto: false
07-26 10:50:17.543 ... D/BluetoothGatt: onClientConnectionState() - status=133 clientIf=5...
更多日志:
07-26 10:49:46.590 ... I/DfuBaseService: DFU service created. Version: 1.6.1
07-26 10:49:47.524 ... I/DfuBaseService: Connecting to the device...
07-26 10:50:17.543 ... E/DfuBaseService: Connection state change error: 133 newState: 0
07-26 10:50:17.544 ... E/DfuBaseService: Device not reachable. Check if the device with address [MAC] is in range, is advertising and is connectable
07-26 10:50:17.549 ... I/DfuBaseService: Refreshing result: true
07-26 10:50:17.549 ... I/DfuBaseService: Cleaning up...
07-26 10:50:18.186 ... I/DfuBaseService: DFU service destroyed