Bluetooth Low Energy (a.k.a Bluetooth LE, BTLE, Bluetooth Smart)

Allowing multiple central devices to connect at the same time to a peripheral

23 Apr 2018

Hello,

does MBED support implementing a peripheral to be connected simultaneously to more central devices using nRF 52 hardware? Nordic says so with their SDK, but I tried MBED test program (Heart rate monitor) and it actually supports a single connection from one central device.

26 Jun 2018

My understanding is that a peripheral device stops advertising once a connection is established. I call startAdvertising() when I receive a connection callback.

27 Jun 2018

This is very interesting question! I also would like different devices/mobiles to be able to connect to one BLE device.. will try that soon and report if find anything useful :-)

18 Jul 2018

A common use case example for BLE is beacons in a museum providing information to visitors. A lot of general information could be simply broadcast, but you could see the central device connecting to a beacon to get more detailed information about a particular exhibit. You would think the beacon would need to support multiple connections to support the possibility of a crowd gathering around a popular exhibit.

18 Jul 2018

BTW, according to the Bluetooth Low Energy team's UART page:

"Presently, you cannot have more than one active connection to a BLE device. For example, if you're working with a heart-rate application and you've connected to it using nRF UART for console output, then you cannot simultaneously connect to it from another heart-rate phone app."

18 Jul 2018

Kentaro Okuda wrote:

My understanding is that a peripheral device stops advertising once a connection is established. I call startAdvertising() when I receive a connection callback.

Kentaro, have you used your technique to successfully support multiple connections?

18 Jul 2018

Hello Thor, yes, my peripheral device is connected to multiple central devices.

19 Jul 2018

That's great! Thank you, Kentaro.

25 Mar 2019

All,

For me it worked when I called startAdvertising() in the onAdvertisingEnd event:

void onAdvertisingEnd(const ble::AdvertisingEndEvent &event) { _ble.gap().startAdvertising(ble::LEGACY_ADVERTISING_HANDLE); }