Close
This blog has the details of benchmark test performed for BLE GATT Throughput between Cypress BT SoC CYW20820/CYW20721 and different Android and iPhones.
The firmware used to perform the measurement is available on GitHub as a Code Example. Go through the Readme file associated with the code example to get a quick understanding of BLE throughput and the parameters used to tune it. Using this code example, you can easily perform the throughput measurement on your own with just a BT SoC based Cypress kit and your phone!
Let’s get started by checking out how the benchmarking is done.
Test Setup
To conduct this activity, CYW920820EVB-02/CYW920721EVB-02 were used as BLE GAP Peripheral and GATT Server with custom throughput measurement service. The iPhones and the Android Phones listed below were used as a BLE GAP Central and GATT Client:
The measurements were done for both 1M and 2M PHY. An MTU size of 515 was exchanged between both the devices and DLE(Data Length Extension) was enabled. The BT SoC is programmed to send a request for connection interval of 26.25 ms, but the interval chosen depends on the Central device. Ellisys Bluetooth Sniffer was used to collect BLE air logs for all measurements.
The data traffic is only one way, i.e., GATT notifications from the BT SoC (Tx) to the smartphone (Rx). But the code example can operate for two more modes of data traffic; First mode is where, the data traffic from smartphone (Tx) to BT SoC (Rx) and the second mode mode is where, the both the Tx and Rx operation of data happen simultaneously on both the devices. For these two modes, we need a custom feature in Android/iOS CySmart app which can send frequent, automated GATT write/notifications. The android/iOS apps currently available on Playstore/Appstore do not have this feature. So, the values presented here are for GATT notifications from BT SoC to smartphone.
Throughput rates for 2M PHY
The below table summarizes the results obtained for 2M PHY:
Test ID |
BT SoC -> Phone |
MTU |
Connection Interval |
BLE GATT Throughput |
1. |
CYW20721 -> iPhone 11 |
515 |
26.25 ms |
311 kbps |
2. |
CYW20721 -> iPhone 11 Pro |
515 |
26.25 ms |
365 kbps |
3. |
CYW20820 -> iPhone X |
515 |
26.25 ms |
340 kbps |
4. |
CYW20721 -> Google Pixel 3 |
515 |
45.00 ms |
1236 kbps |
5. |
CYW20721 -> Samsung Galaxy S10 Plus |
515 |
26.25 ms |
1222 kbps |
6. |
CYW20820 -> iPhone X |
247 |
26.25 ms |
362 kbps |
7. |
CYW20820 -> Google Pixel 3A |
247 |
45.00 ms |
1303 kbps |
8. |
CYW20820 -> Samsung Galaxy S8 |
247 |
26.25 ms |
1320 kbps |
Note: The throughput values are averaged for 15 readings.
By now, you might have observed that with the iPhone, we get a lesser throughput (with the same parameters exchanged) compared to Android. This is because, iPhone which is the LL master in the connection, is terminating the connection event length in a connection interval. Let us compare one connection interval captured by the sniffer for both Android and iPhone to understand this:
One connection interval (26.25 ms) for Android: Samsung Galaxy S10 Plus
One connection interval (26.25 ms) for iPhone: iPhone 11
Notice that, in case of Android, most of the interval (25 ms) is utilized for data transfer, whereas, in case of iPhone, the connection event is terminated by Central after 7 ms from start of the interval.
This means, the remaining air time is wasted and not utilized for data transfer. This is the reason, for lesser throughput in case of iPhone for the negotiated parameters.
Throughput rates for 1M PHY
The below table summarizes the results obtained for 1M PHY:
Test ID |
BT SoC -> Phone |
MTU |
Connection Interval |
BLE GATT Throughput |
1. |
CYW20721 -> iPhone 11 |
515 |
26.25 ms |
130 kbps |
2. |
CYW20721 -> iPhone 11 Pro |
515 |
26.25 ms |
82 kbps |
3. |
CYW20820 -> iPhone X |
515 |
30.00 ms |
160 kbps |
4. |
CYW20721 -> Google Pixel 3 |
515 |
45.00 ms |
527 kbps |
5. |
CYW20721 -> Samsung Galaxy S10 Plus |
515 |
26.25 ms |
222 kbps |
Note: The throughput values are averaged for 15 readings.
Ellisys Sniffer Logs
A look into the Instant Throughput graph of entire data traffic captured by Ellisys Sniffer:
CYW20721 -> Google Pixel 3
Three Ellisys log files are attached with this blog for reference:
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.