Я пытаюсь заставить Raspberry Pi 3B+ работать как периферийное устройство BLE.
Я скачал последнюю версию (5.50) стека bluez здесь:https://git.kernel.org/pub/scm/bluetooth/bluez.git. Я запускаю предоставленные примеры в каталоге /test/.
Когда я запускаю "example-advertisement" и "example-gatt-server" одновременно под root с python 2.7 или python 3.5, я вижу новое периферийное устройство BLE с устройствами Linux Mint, Win10, IOS и Android. Однако, хотя 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но я не использую свое собственное приложение в данный момент. Даже различные приложения для сканирования BLE, которые мы можем найти в Play Store, не могут подключиться и получить список услуг.
Кажется, это не связано с конкретным оборудованием или программным обеспечением 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 мне просто нужно нажать «Подключиться». - На некоторых других мне нужно нажать «Автоподключение» в подменю с тремя точками.
Однако многие другие приложения, включая мое, вообще не подключаются, как с функцией Autoconnect, так и без нее.
Добавление некоторых задержек (100 мс между обнаружением периферийных устройств и подключением и 100 мс между состоянием подключения и обнаружением служб) позволяет некоторым устройствам успешно подключаться, но не всем.