Chipsets/Devices supporting Android 5 BLE peripheral mode

**Overview of devices known so far: Nexus 6, Nexus 9, Moto E 4G LTE, LG G4, Galaxy S6, Samsung Galaxy S5 (model SM-G900M), Nexus 5X, Sony Xperia Z5 Compact, Samsung Galaxy Tab S2 **

** Also see https://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html **

One of the new features of the Android 5 release is support for Bluetooth Low Energy peripheral mode. While it is promoted to work independent of the used device, it seems to be chipset dependent (see the isMultiAdvertisementSupported() function in BluetoothAdapter.java).

It is working for the Nexus 5, but not for the Nexus 7 (called a bug in BLE peripheral support Android-L example, but it might never work because of its chipset?). Also https://code.google.com/p/android-developer-preview/issues/detail?id=589 does not give conclusive statements.

My concern is that, as many older devices are expected to get Android 5, only the newest tablets (and relatively new phones) will support BLE peripheral mode. This might be unclear to the end-user of apps relying on this new Android 5 feature.

For me it is very unclear which chipsets/devices, that will eventually get Android 5, will support the BLE peripheral mode. Anyone who can give me any insights on this? Which chipsets will support the BLE peripheral mode? More specifically, as many of our customers have a Nexus 7 (2013), will the Nexus 7 ever get supported?

Edit 19-2-2015: Since December 2014 it is not supported anymore for the Nexus 5, only Nexus 6 and 9 seem to have support for BLE Peripheral Mode/ Advertising. Hope the number of devices supporting this will significantly increase in the near future.

More information and discussion here: https://code.google.com/p/android-developer-preview/issues/detail?id=1570

Edit 6-3-2015: Added overview for quick reference

Edit 17-2-2016: Added some devices that I've checked myself but were not in any of the other lists


Solution 1:

The Android 5.0.X will only allow you to use the new API for BLE. This new API comes with a new feature, which you mentioned in your question: The possibility of advertising, from your own Android device, using it in Peripheral mode. However, the disadvantaged of this new feature is that it is hardware dependent. For example, before you start any BLE you need to:

First: Check to see if the BLE is supported, which you can do by adding this line in your manifest: <uses-feature android:name="android.hardware.bluetooth_le" android:required:"true"/>

Second: You need to check if your chipset has support for it, using the following methods:

bluetoothAdapter.isMultipleAdvertisementSupported();
bluetoothAdapter.isOffloadedFilteringSupported();
bluetoothAdapter.isOffloadedScanBatchingSupported();

Also notice that for both of the above methods, the API documentation clearly states that:

"Return true if the multi advertisement is supported by the chipset"

"true if chipset supports on-chip filtering"

"true if chipset supports on-chip scan batching"

That being said, it brings us to the question:

"Which hardware devices are going to support this feature ?"

Well, the answer to that is a little bit more complicated since this is not a mandatory feature for the bluetooth hardware/protocol and it will probably vary from manufacture to manufacture. But for now, the only currently devices that officially are supporting the technology, without major issues, are the Nexus 6 and Nexus 9, since their hardware already comes with the support. The best that you can do it, is not rely solely on the technology for now and try to explore other possible solutions, if any.