首页 文章

如何让Android BLE连接到Bluez Peripheral? (连接问题)

提问于
浏览
1

我正在尝试使用蓝牙低功耗将我的Nexus 5(Android 6.0.1)智能手机连接到我的桌面计算机(使用BlueZ 5.36的64位Ubuntu 15.04) . 我使用带有CSR BC8510芯片组的BT 4.0 USB加密狗 .

该设置确实在几天前确实有效 . 然后我切换到Broadcom USB加密狗,它开始变得不稳定 . 连接变慢,开始失败 . 即使我切换回CSR加密狗和不同的Ubuntu机器(仍然使用相同的Android设备),它现在完全不起作用了 . 但是,接收广告包并没有受到影响,仍然有效 . 我的项目正在使用Android Beacon Library并不断扫描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扫描仪,例如this one . 它接收广告数据包并列出外围设备但尝试连接失败 .

到目前为止我试过了

  • 不同的BlueZ版本

  • 不同的Linux机器
    来自Google Play商店的

  • 种不同的BLE扫描仪应用

  • 拔出并重新插入加密狗

  • 重启Ubuntu和Android

  • 重置网络设置甚至出厂重置Android

使用BlueZ btmon 工具,我在尝试连接时看不到HCI流量 . 这让我觉得问题出在我的BlueZ HCI配置或Android或我的Android硬件中 . 我还没有尝试过不同的Android设备,但我会尽快这样做 .

有没有人有类似的问题或知道如何在更深层次调试?非常感谢你 .

2 回答

  • 0

    你有幸解决这个问题吗?我认为如果配置连接参数(目前为止不能从用户空间bluez),应该能够解决问题 . 我可以看到bluez,Android应用程序在与GATT Build 连接时立即断开连接 .

  • 0

    我有个类似的问题 . 这是我取得的进步

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

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

    首先尝试从非Android设备连接(这是我坚持的部分)

相关问题