我正在尝试使用蓝牙低功耗将我的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 btmon
工具,我在尝试连接时看不到HCI流量。
这让我觉得问题出在我的BlueZ HCI配置或Android或我的Android硬件中。
我还没有尝试使用其他Android设备,但我会尽快尝试。
是否有人遇到类似问题或者知道如何在更深层次上进行调试? 非常感谢你。
答案 0 :(得分:0)
你有幸解决这个问题吗?我认为如果配置连接参数(目前为止不能从用户空间bluez),应该能够解决问题。我可以看到bluez,安卓应用程序在与GATT建立连接时立即断开连接。
答案 1 :(得分:0)
我遇到了类似的问题。这是我所取得的进步
确保Android配置为仅在BLE模式下连接:
mBluetoothGatt = device.connectGatt(this, false, mGattCallback, TRANSPORT_LE);
首先尝试从非Android设备连接(这是我坚持使用的部分)