Skip to content

BLE connect / configure unstable when configuring multiple (10) LED devices on Android– ~50% connections fail #1420

@sep21th03

Description

@sep21th03

Hi everyone,

I’m facing an unstable BLE connection issue on Android when configuring multiple LED driver devices (around 10 devices) sequentially.

The problem is not that the connect promise is stuck – it does reject correctly, but about half of the devices fail to connect or complete configuration during the batch process.

This issue happens consistently on Android, while iOS is much more stable.

Environment

  • Platform: Android
  • Library: react-native-ble-manager
  • React Native version: 0.77.3
  • Android version(s): Android 15
  • Device models tested: (e.g. Samsung / Xiaomi / Pixel)
  • BLE devices: LED Driver devices (custom firmware)

Expected Behavior

All LED devices (≈10) should:

  • Connect successfully
  • Retrieve services
  • Start notification
  • Complete configuration

Actual Behavior:
-When configuring ~10 LED devices:
~50% succeed
~50% fail during BleManager.connect
-The failure does trigger the .catch() block
-No promise hanging / no silent failure
-After a failure:

  • The device often needs retry or app restart
  • Sometimes other devices also become unstable

BleManager.connect(peripheral.id) .then(() => { console.log('Connect success', peripheral.id); BleManager.retrieveServices(peripheral.id) .then(() => { return BleManager.startNotification( peripheral.id, SERVICE_UUID, NOTIFY_CHAR_UUID ); }); }) .catch(error => { console.log('Connection error', error); });

Notes

-catch is executed correctly → this is NOT the known issue where the connect promise is held forever.

-Failures happen more frequently when:

-Connecting many devices in sequence

-Connections are started too close together

-Adding delays helps but does not fully solve the issue.

-Looks like Android BLE stack instability / GATT timing issue.

What I’ve Tried

-Adding delay between:

-scan → connect

-connect → retrieveServices

-Retrying failed connections

-Disconnecting before reconnect

-Ensuring notifications are not started multiple times

Still, the issue persists when scaling to many devices.

Question

-Is there a recommended pattern or limitation for connecting/configuring many BLE devices sequentially on Android?

-Are there known Android-side constraints (max concurrent GATT operations, queue limits)?

-Any best practices to improve stability for batch BLE configuration?

Thanks in advance

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions