Bluez в режиме периферийного устройства BLE: Android не может получить список служб, нормально с iPhone и Win10

Bluez в режиме периферийного устройства BLE: Android не может получить список служб, нормально с iPhone и Win10

Я пытаюсь заставить 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 мс между состоянием подключения и обнаружением служб) позволяет некоторым устройствам успешно подключаться, но не всем.

Связанный контент