Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

BLE Throughput Rate Benchmark Test for Cypress BT SoCs

lock attach
Attachments are accessible only for community members.

BLE Throughput Rate Benchmark Test for Cypress BT SoCs

NidhiH_76
Employee
Employee
5 likes given 10 sign-ins 5 sign-ins

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:

  • Google Pixel 3
  • Google Pixel 3A                                
  • Samsung Galaxy S8
  • Samsung Galaxy S10 Plus
  • iPhone X
  • iPhone 11

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

Screenshot (391).png

   

   One connection interval (26.25 ms) for iPhone: iPhone 11

Screenshot (390).png

 

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

Screenshot (387).png

 

Three Ellisys log files are attached with this blog for reference:

  1. Ellisys Sniffer logs for CYW20721 -> iPhone 11 (1M)
  2. Ellisys Sniffer logs for CYW20721 -> Google Pixel 3 (2M) and Samsung Galaxy S10 Plus (2M)
2839 Views
1 Comment
vsubbiah
Level 5
Level 5
10 solutions authored 10 sign-ins First comment on KBA

This is awesome and eager to give it a spin.

I am trying to give this a spin and running into error on build make build TARGET=CYW920820EVB-02. Logs below.

 

Prior

Generated 1 source file(s)

/Users/venkat/work/pp/bt_sdk/tput_test/mtb-example-btsdk-ble-throughput/GATT_server/build/CYW920820EVB-02/generated/lib_installer.c already present, use clean if it needs updating

Building 5 file(s)

    Compiling app file tput_server_ble.c

tput_server_ble.c:50:10: fatal error: cycfg_pins.h: No such file or directory

   50 | #include "cycfg_pins.h"

      |          ^~~~~~~~~~~~~~

compilation terminated.

make[1]: *** [/Users/venkat/work/pp/bt_sdk/tput_test/mtb-example-btsdk-ble-throughput/GATT_server/build/CYW920820EVB-02/Debug/tput_server_ble.o] Error 1

make: *** [secondstage] Error 2

0 Likes
Authors