我尝试让 Raspberry Pi 3B+ 充当 BLE 外围设备。
我在这里下载了 bluez 堆栈的最新版本 (5.50):https://git.kernel.org/pub/scm/bluetooth/bluez.git. 我在 /test/ 目录中执行提供的示例。
当我使用 python 2.7 或 python 3.5 在 root 下同时运行“example-advertisement”和“example-gatt-server”时,我可以在 Linux Mint、Win10、IOS 和 Android 设备上看到新的 BLE 外围设备。但是,尽管 Linux、IOS 和 Win10 成功连接并检索服务和特性列表,但 Android(4.4、5.1 或 7.0,使用 5 种不同品牌的智能手机和平板电脑进行测试)无法连接到该设备。
我看到了这个话题:https://raspberrypi.stackexchange.com/questions/90696/bluetooth-low-energy-gatt-services-not-found-on-android但目前我没有使用自己的应用程序。即使在 Play Store 上可以找到的各种 BLE 扫描应用程序也无法连接并检索服务列表。
这似乎与 Raspberry Pi 特定的硬件或软件无关,因为我还尝试使用另一台单板计算机(Variscite DART-6UL,https://www.variscite.com/product/system-on-module-som/cortex-a7/dart-6ul-freescale-imx-6ul) 我得到了完全相同的行为。
有人有想法吗?
谢谢。
答案1
经过大量研究后,我放弃了。“nRF Connect”应用程序成功连接到我的设备并检索特性列表,但并非总是如此: - 在某些 Android 设备上,我只需要单击“连接” - 在其他一些设备上,我需要单击 3 点子菜单中的“自动连接”。
但是许多其他应用程序根本无法连接,包括我的应用程序,无论有没有自动连接。
添加一些延迟(外围设备发现和连接之间 100 毫秒以及连接状态和服务发现之间 100 毫秒)使得一些设备能够成功连接,但不是全部。