Bluez no modo periférico BLE: o Android não consegue recuperar a lista de serviços, OK com iPhone e Win10

Bluez no modo periférico BLE: o Android não consegue recuperar a lista de serviços, OK com iPhone e Win10

Tento fazer um Raspberry Pi 3B+ funcionar como um periférico BLE.

Baixei a versão mais recente (5.50) do bluez stack aqui:https://git.kernel.org/pub/scm/bluetooth/bluez.git. Eu executo os exemplos fornecidos no diretório /test/.

Quando executo "example-advertisement" e "example-gatt-server" ao mesmo tempo na raiz com python 2.7 ou python 3.5, posso ver o novo periférico BLE com dispositivos Linux Mint, Win10, IOS e Android. Porém, embora Linux, IOS e Win10 tenham sucesso na conexão e recuperação de serviços e lista de características, o Android (4.4, 5.1 ou 7.0, testado com 5 marcas diferentes de smartphones e tablets) não consegue se conectar ao dispositivo.

Eu vi esse tópico:https://raspberrypi.stackexchange.com/questions/90696/bluetooth-low-energy-gatt-services-not-found-on-androidmas não estou usando meu próprio aplicativo no momento. Mesmo vários aplicativos de digitalização BLE que podemos encontrar na Play Store não conseguem se conectar e recuperar a lista de serviços.

Parece não estar relacionado ao hardware ou software específico do Raspberry Pi porque também tentei com outro computador de placa única (Variscite DART-6UL,https://www.variscite.com/product/system-on-module-som/cortex-a7/dart-6ul-freescale-imx-6ul) e obtenho exatamente o mesmo comportamento.

Alguém tem uma ideia?

Obrigado.

Responder1

Desisti depois de muita pesquisa. O aplicativo "nRF Connect" consegue se conectar ao meu dispositivo e recuperar a lista de características, mas não o tempo todo: - Em alguns dispositivos Android, só preciso clicar em "Conectar" - Em alguns outros, preciso clicar em "AutoConnect" no Submenu de 3 pontos.

No entanto, muitos outros aplicativos não se conectam, incluindo o meu, com ou sem Autoconnect.

Adicionar alguns atrasos (100 ms entre a descoberta de periféricos e a conexão e 100 ms entre o estado conectado e a descoberta de serviços) faz com que alguns dispositivos se conectem com êxito, mas não todos.

informação relacionada