First results from BLE battery consumption tests

UPDATE: After going through the results, I did notice that the Nexus 6 device I got, was indeed broken. It basically has something badly wrong with it, and even when there it nothing running it will drain its battery rather quickly, thus the results shown in this page are indeed faulty.

I was running the  BleGgOne test app for last four days to get some idea on how long battery life we could expect if we would be running BLE advertising and scanning on the devices all times.

Note that I only had one device capable of doing the BLE service advertising, thus effectively with the tests one device was advertising all times, and the other device was scanning continuously. The tests were conducted in space where we did not have other BLE devices active while the tests were running.

Nexus 6 has 3220 mAh battery and the Nexus 5 used as the client connecting to the service advertised by Nexus 6 has a 2300  mAh battery.

There was two rounds of testing. The first round was called Full Test, and with it the Nexus 6 was advertising one service. Nexus 5 then connected to the Nexus 6 and with 60 second timer, it did first read for a character that had 100 bytes of data, and then also write of 100 bytes to that same character.

Logs from tests showed that the read/write events were reported to happen once a minute from both ends during the whole testing. Also the connection was active for the whole duration of the tests, thus there were no disconnection events happening during testing.

In the second round, the client side code for connecting to the server was commented out. Meaning that there were no connection made between the devices, nor any read or write events happening. The Nexus 6 in this test was simply advertising the service, and the Nexus 5 was simply scanning and finding the service.

From logs it was also determined that with the 20 minute log period, the scanning resulted 4300 results in both tests, giving the scanner average of 3.6 Scan results for each second.

The results are summarized in following graph:

 

BLE_Battery_first

Following table shows the times when different threshold values on battery status were reached:

 Battery % / time reached N6_AdvertOnly N6_FullTest N5_ScanOnly N5_FullTest
90 3,45 3,45 5,51 5,85
80 6,86 6,52 9,63 9,97
70 9,97 9,29 13,72 14,07
60 12,71 12,36 17,83 18,17
50 15,44 14,74 20,91 21,96
40 18,17 17,50 25,37 26,41
30 20,91 20,24
20 23,34 22,99
10 26,06 25,71
0 28,45 27,76

 

Quick calculations from the values gives drop of 10% of battery charge happening with Nexus 6 after 2.8 hours, and with Nexus 5 its around 4 hours.

Surprisingly there appears to be no real difference between the device being just scanning / advertising, when compared to the battery consumption with devices that are connected and exchanging data.

As this test was only conducted with one device, we could say that the values are indicative at best, and to get clear picture of the battery consumption, we do need to make loads more testing with different devices.