Android (mostly 7) is misbehaving on BLE connect


our BLE device has a hard current limit around 1mA. This is no problem as long as the BLE central behaves as "intended", e.g. iPhones use mostly connection intervals of 30ms which will respect the 1mA current limit. Also most Android devices obey to the peripheral connection parameter suggestions, although they use odd numbers. So no problem here.

But other Android (7?) devices behave differently: they do a connect with harmless parameters, but after a while (1s or so), out of the blue they switch to a fast connection for around 500ms. Connection interval in this case is always 7.5ms. Those 500ms are Android device dependent and also seem to depend on mood of the Android device.  Needless to say, that this breaks our current limit.

I've already tweaked with local slave latency, tuned TX power down, checked here, checked there. To no avail... :-(

Does anybody has any suggestions how to reduce the actual power consumption of the nRF5x peripheral device? Would be great, if (local) slave latency would work, or if there would be an API to set the minimum allowed connection interval.
Or is there a way to use the Timeslot API to suppress BLE intervals?

Thanks for help


PS: googling around showed this:, especially "Android temporarily changes connection interval to 7.5 ms during the GATT service discovery".  Don't know if this is correct.  But if yes, how to slow down the nRF side?