Android: Límite de conexiones BLE simultáneas

estamos desarrollando una aplicación para Android que puede conectarse a múltiples sensores de frecuencia cardíaca simultáneamente vía Bluetooth Low Energy.

Tenemos una implementación que está funcionando bastante bien, por lo que el código no es el problema. Lo que nos vuelve locos es la limitación de las conexiones BLE paralelas que parece ser diferente de un dispositivo a otro.

Tenemos algunos dispositivos de prueba aquí: Motorola MotoE y MotoG, un Samsung Galaxy Tab A y un HTC Nexus 9. Todos ellos están ejecutando Android 5 o 6, las versiones del vendedor original. Ninguno de ellos es capaz de conectarse a más de 7 sensores BLE HR simultáneamente.

Entonces he probado con mi Samsung Galaxy S4 privado, que tiene sus raíces y tiene Cyanogen CM12 instalado. Con este dispositivo puedo conectar fácilmente a 12 sensores de HR simultáneamente que es el número que queremos alcanzar con nuestra aplicación.

He probado esto tanto con nuestra propia aplicación de aplicación y con el nórdico Semiconductor nRF Master Panel de control que creo que es una muy buena aplicación genérica BLE: https://play.google.com/store/apps/details?id=no. nordicsemi.android.mcp & hl = de

Cuando intento conectar la aplicación a un séptimo sensor BLE en cualquiera de nuestros dispositivos, la salida de ADB imprime el mensaje de error siguiente: E / BluetoothLeBasicConn: Error de cambio de estado de conexión: 133

Hice algunos bastante googling sobre todo ese problema, pero la mayoría de los resultados que he encontrado eran bastante antiguos. Algunas personas dijeron, que la limitación provenía del Chipset Bluetooth en sí, otros dijeron que era una limitación de software a través de Android.

¿Podría ayudarme a averiguar, de dónde viene la limitación?

Si es el chipset, entonces me gustaría saber qué dispositivos debemos usar para soportar tantas conexiones paralelas como sea posible. Lamentablemente es muy difícil averiguar qué chipset Bluetooth se construye en los diferentes dispositivos. Casi ninguna de las especificaciones de hardware que encontré decir nada sobre esto.

Si la limitación viene del lado del software, podemos cambiarlo de alguna manera sin necesidad de enrutar teléfonos o instalar modded OS?

¡Muchas gracias!

En caso de que usted todavía está interesado en ella. El límite viene de BTA_GATTC_CONN_MAX (hardcoded en android) Que se establece en:

  • 4 en Android 4.3 y
  • 7 en Android 4.4

Hay por cierto también un límite en la cantidad de características para las cuales usted puede activar notificaciones. (BTA_GATTC_NOTIF_REG_MAX) que es:

  • 4 en Android 4.3,
  • 7 en Android 4.4 y
  • 15 en Android 5.0
  • BluetoothDevice.ConnectGatt () con el parámetro de transporte
  • Android BLE 4.3 onDescriptorWrite devuelve el estado 128 al habilitar la notificación de características
  • Leer paquete de publicidad en Android
  • Dispositivo BLE CC2541 no escaneado con la biblioteca de balizas android
  • Análisis pasivo de Android BLE
  • Detectar si un dispositivo BLE puede conectarse en Android
  • ¿Cómo obtener respuestas más rápidas con AltBeacon?
  • ¿Por qué `ACTION_GATT_DISCONNECTED` toma tanto tiempo para actualizar el estado?
  • Android Marshmallow ScanSetting
  • Android: BLE cómo leer múltiples características?
  • ¿Cómo mejorar el rendimiento de GATT de baja energía de Bluetooth de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.