如何使Android BLE连接到Bluez外围设备?(连接问题)



我正在尝试使用蓝牙低能耗将我的Nexus 5(Android 6.0.1)智能手机连接到我的台式电脑(带有BlueZ 5.36的Ubuntu 15.04 64位)。我使用一个带有CSR BC8510芯片组的BT 4.0 USB加密狗。

就在几天前,这个设置确实起了作用。然后我换了一个博通USB加密狗,它开始变得不稳定。连接变得缓慢并开始失败。尽管我换回了CSR加密狗和另一台Ubuntu机器(仍然使用相同的Android设备),但它现在根本不起作用了。然而,接收广告包并没有受到影响,仍然有效。我的项目使用安卓信标库,并不断扫描BLE广告包。

一个对我不起作用的最小设置——但在我看来应该是——如下所示:

使用以下脚本制作BlueZ广告:

# Set advertising data (AltBeacon format).
sudo hcitool -i hci0 cmd 0x08 0x0008 1F 02 01 02 1B FF 00 00 BE AC 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 BC 00
# Set advertising interval.
sudo hcitool -i hci0 cmd 0x08 0x0006 A0 00 A0 00 00 00 00 00 00 00 00 00 00 07 00
# Start advertising.
sudo hcitool -i hci0 cmd 0x08 0x000a 01
# Run Bluez example gatt server.
./test/example-gatt-server

启动BLE扫描仪,例如这个。它接收广告数据包并列出外围设备,但尝试连接失败。

到目前为止,我尝试了

  • 不同的BlueZ版本
  • 不同的Linux机器
  • 来自Google Play商店的不同BLE扫描仪应用程序
  • 拔下并重新插入加密狗
  • 重新启动Ubuntu和Android
  • 重置网络设置,甚至工厂重置Android

使用BlueZ btmon工具,我在尝试连接时没有看到HCI流量。这让我猜测问题出在我的BlueZ HCI配置中,或者安卓或安卓硬件中。我还没有尝试其他的Android设备,但我会尽快尝试。

有没有人遇到过类似的问题,或者知道如何在更深层次进行调试?非常感谢。

你幸运地解决了这个问题吗?我认为如果配置了连接参数(到目前为止,用户空间bluez不可能提供),应该能够解决问题。我可以用bluez看到,当与GATT连接时,android应用程序会立即断开连接。

我也遇到了类似的问题。以下是我在方面取得的进展

确保Android配置为仅在BLE模式下连接:

mBluetoothGatt = device.connectGatt(this, false, mGattCallback, TRANSPORT_LE);

首先尝试从非Android设备连接(这是我一直在使用的部分)

最新更新