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