4.2.2 BLE Throughput

This section describes in detail the example of PIC32CXBZ3/WBZ35 BLE Throughput evaluation using Microchip MBD App and the factors affecting the BLE throughput.

Introduction

The purpose of this section is to demonstrate the BLE Throughput application for the PIC32CXBZ3/WBZ35. The BLE_THROUGHPUT application is designed to demonstrate several functionalities including:
  1. Connection with mobile phone via BLE.
  2. Data transmission between the PIC32CXBZ3/WBZ35 and smart phone via BLE and throughput evaluation.
  3. Data transmission from the PIC32CXBZ3/WBZ35 to smart phone via BLE and throughput evaluation.
  4. Data transmission from smart phone to the PIC32CXBZ3/WBZ35 via BLE and throughput evaluation.

Data Format for Advertising

Advertising Data

The Service Data type is used in advertising data. The data format is as illustrated below:

Figure 4-166. Advertisement Data Format
Note: 0xFEDA is a 16-bit Service UUID which is purchased by Microchip from Bluetooth SIG.

Scan Response Data

The device name is put in the scan response. the device name is set as “BLE_UART_XXXX”. (XXXX are the last two bytes of the device address.)

Supported Services and Profiles

The supported service and profile are listed in the following section.

Services
  • Transparent Service: MCHP proprietary service, see Reference [1] for the detail.
  • Device Information Service: Bluetooth SIG standard service, see Reference [3] for the detail.

Profiles

  • Transparent Profile (TRP): MCHP proprietary profile, see Reference [4] for the detail.

LED Indication

The LED indication is defined as following based on the different role and state:
  • Advertising State (No LE link existed): Green LED flashes one time every 500 ms.
  • Connected with peer device: Green LED is solid ON.
Interaction with MBD App
  • Work with iOS MBD App

Scanning and Connecting the Device

The steps to scan and connect to the device via MBD app are described as follows:

  1. Tap "BLE UART" feature in MBD App

    Figure 4-167. MBD App iOS Version
  2. Tap on the PIC32CXBZ.

    Figure 4-168. BLE UART GUI
  3. Tap on START
    Figure 4-169. PIC32CXBZ GUI
  4. Select BLE_UART_XXXX (XXXX are the last two bytes of the device address)

    Figure 4-170. “START” Scanning GUI

Firmware Version

  1. To verify firmware version, once LE is connected, tap the Setting Icon:
    Figure 4-171. Settings Icon
  2. The firmware version detail will be listed along with other Device Information as illustrated in the following figure.
    Figure 4-172. Firmware Revision in "Setting" GUI

Select Transparent Profile

There are two profiles supported by the MBD "BLE UART" App but "BLE_THROUGHPUT" firmware supports TRP only.

  1. Legacy Transparent Profile (TRP): Supported by "BLE_THROUGHPUT" firmware.

  2. Transparent Credit Based Profile (TRCBP): Not supported by "BLE_THROUGHPUT" firmware.

Select GATT Write Type

TRP profile supports both "Write with Response" and "Write without Response", which is much higher than the former.

Figure 4-173. GATT Write Type in "Setting" GUI

Demo Modes

There are two demo modes:
  • Burst Mode: is designed for the throughput evaluation via massive data transmission.
  • Text Mode: is designed for the simple text typing.
Figure 4-174. Demo Modes in "Setting" GUI

Burst Mode

There are four data transfer modes supported in the Burst mode:

  1. Checksum mode: MBD App to the device (uni-direction).

  2. Fixed Pattern mode: Device to MBD App (uni-direction).

  3. Loopback mode: MBD App → Device → MBD App (bi-direction).

  4. UART mode: MBD App → Device → UART output to PC; UART input from PC → Device → MBD App (bi-direction). This mode is not supported by "BLE THROUGHPUT" firmware.

Figure 4-175. BLE UART Mode in "Setting" GUI

B. Text Mode

There are two data transfer modes supported in the Text mode:
  1. Loopback mode: MBD App → Device → MBD App (bi-direction).
  2. UART mode: MBD App → Device → UART output. This mode is not supported by "BLE THROUGHPUT" firmware.
Figure 4-176. Text Mode "Setting" GUI

Work with Android MBD App

The operation of Android MBD App is quite the same as the iOS version MBD App.

Throughput Evaluation

This section describes the throughput evaluation steps and a list of throughput figures tested with a list of phone models (for reference only). Additionally, the factors influencing throughput will be examined.

Hardware Requirement

Table 4-22. Hardware Requirement
ToolQty

WBZ351 Curiosity Board

1

Micro USB cable

1

Android/iOS Smartphone

1

SDK Setup

Software Requirement

Smart Phone App

  • Microchip Bluetooth Data (MBD)

Programming the Precompiled Hex File or Application Example

Programming the .hex File using MPLAB X IPE

  1. Import and program the precompiled .hex file located in "<Harmony Content Path>\wireless_apps_pic32cxbz3_wbz35\apps\ble\advanced_applications\ble_throughput\hex" folder
  2. For more details on the steps, go to Programming A Device
    Note: Ensure to choose the correct Device and Tool information.

Programming the Application using MPLAB X IDE

  1. Follow the steps mentioned in the Running a Precompiled Example section.
  2. Open and program the application example “ble_throughput.X” located in “<Harmony Content Path>\wireless_apps_pic32cxbz3_wbz35\apps\ble\advanced_applications\ble_throughput\firmware” using MPLAB X IDE

For more details on finding the Harmony content path, refer to Installing the MCC Plugin

Throughput Evaluation Steps

  1. Connect a USB cable to the WBZ351 Curiosity board
  2. Download the “BLE_THROUGHPUT” firmware
  3. Run a terminal tool like "Tera Term"

    Open the serial port connecting to the WBZ351 Curiosity board and configure the setting as below:

    Figure 4-177. Serial Port Setup
  4. Press the Reset button on the WBZ351 Curiosity board, the initialization string will be displayed as illustrated in the following figure.

    Figure 4-178. Initialization Output
  5. Using "BLE UART" feature of MBD App, connect to the WBZ351 Curiosity board
  6. Select the Burst mode
    Figure 4-179. Burst Mode
  7. Select the Demo mode in setting page. Except the UART mode, all the other modes are supported by "BLE_THROUGHPUT"
    Figure 4-180. BLE UART Mode
  8. Select Text file size in the Setting page
    Figure 4-181. Text File “Select”
  9. The TRP profile is automatically selected
    Figure 4-182. TRP Profile
  10. Select GATT Write Type

    "Write without Response" will achieve much higher throughput.

    Figure 4-183. Write Without Response
  11. Tap Done and back to the previous page
  12. Tap START

    After sending the file, the throughput is evaluated as illustrated below:

    Figure 4-184. Throughput Evaluation GUI

Throughput Test Report

The following tables describe the throughput test result with iOS and Android devices with the configuration as

  • Profile

    TRP

  • GATT Write Type

    Write without Response

  • Downlink

    Tested with "Checksum" data transfer mode

  • Uplink

    Tested "Fixed pattern" data transfer mode

  1. iOS Devices

    Table 4-23. Reference Throughput with iOS Devices
    PhonesDownlink (Kbytes/sec)Uplink (Kbytes/sec)
    iPhone 6 Plus / iOS 12.4.85.615.62
    iPhone 7 / iOS 13.5.118.6419.23
    iPhone 8 / iOS11.147.0847.62
    iPhone X / iOS 12.357.9358.82
    iPhone X MAX / iOS 14.0.155.1762.5
    iPhone 11 / iOS 14.0.160.2962.5
    iPad Air 3rd / iOS 13.358.6258.82
    iPhone 13 Pro / iOS 15.6.153.1156.89
  2. Android Devices
    Table 4-24. Reference Throughput with Android Devices
    PhonesDownlink (Kbytes/sec)Uplink (Kbytes/sec)
    Samsung S10 / Android 104665
    OPPO RENO / Andoid 93666
    Sony Xperia XZ / Android 844
    Vivo V11 / Android 93266
    Nokia 7.2 / Android 103564
    OPPO R15 / Android 94266
    OnePlus 3 / Android 93341
    Google Pixel 2 / Android 105067

Factors Affecting Throughput

In BLE_THROUGHPUT example, the WBZ351 is the GATT server while the MBD App is the GATT client. There are 7 main factors affecting the throughput. Some factors are negotiated and determined by the BLE stack of the GATT client and server. And some factors can be modified or requested by the user level application code using the APIs exposed by underneath BLE stack.

  1. ATT MTU size

    Larger MTU size achieves higher throughput. Assuming the MTU size is x, then the Max application data payload in one operation is of x minus 3 (excluding 1byte of GATT operation code and 2 bytes of the attribute handle ).

    In PIC32CX5109BZ31048 BLE stack, the Max MTU is set to 247 bytes. The final MTU used by the GATT client and server will depends on the negotiation initiated by the GATT client. For iOS, the MTU size is determined by the underneath BLE stack while the user level application can use API to learn the determined MTU. For Android, the MTU size can be requested by the user level application code using API of "requestMtu (int mtu)" and the user application code should observe the result from "onMtuChanged" callback.

  2. Operation Type

    For downlink operation, the "Write without Response" (Write Command) is always faster than the "Write with Response" (Write Request).

    For uplink operation, the Notify operation is always faster than the Indication operation which requires a confirm from peer device.

    It's the responsibility of BLE_THROUGHPUT firmware to define the property of the GATT characteristics. The property in turn defines the permitted operation type.

  3. Data Length Extension(DLE)

    Link layer data packet length by default is 27 bytes. From BLE 4.2 onward, the link layer data packet length can be extended to as long as 251bytes. This feature is called Data Length Extension (DLE).
    Note: Some phone models might not support DLE while PIC32CX5109BZ31048 BLE stack supports it
    DLE negotiation is conducted by underneath BLE stack of both the client and the server. User level application code has no API to modify the link layer data packet length.
  4. Connection Interval (CI)

    The CI defines the frequency of the Connection Event. Shorter CI causes higher frequency of the Connection Event. Certain number of data packets can be sent during one connection event. It is obvious that the shorter CI the lesser number of data packets can be sent in one Connection Event. In contrast, the longer CI the higher opportunity to send larger number of data packets in one Connection Event. The iOS device might limit the CI parameter according to the peripheral type. See reference[6] for more details.

    PIC32CX5109BZ31048 BLE stack provides API of "BLE_DM_ConnectionParameterUpdate" to update the connection parameter. The final connection parameter is decided by negotiation of both the client and the server stack.

    On Android the equivalent API is "requestConnectionPriority" while there is no such similar API available on iOS.

  5. Number of Data Packets per Connection Event

    The number varies from iOS to Android and from revision to revision. There is no direct API available on either iOS or Android to define this number. User can fine tune the CI to get ideal value and verify the result in the air log.

  6. PHY Selection

    From BLE 5.0 onward, LE 2M PHY is introduced. It is 2x faster than the former LE 1M PHY. Gradually the phone models in the market will embrace this new feature. Either the GATT client or server might request to update the PHY to LE 2M according to PHY Update Procedure defined by SIG, see reference [7] for details. WBZ351 is born to support this feature and the API of "BLE_GAP_SetPhy" is available to user level application code to change the PHY selected.
    • PHY Update Procedure

      In BLE_THROUGHPUT example, the API "BLE_GAP_SetPhy" is called on writing the handle of TRP TX characteristic CCCD (Client Characteristic Configuration Descriptor) operated by peer device illustrated as below image. For more details on TRP, see reference[1].

      Figure 4-185. PHY Update Procedure in Example Firmware

      A event of BLE_GAP_EVT_PHY_UPDATE will be generated on the completion of this procedure then the user can check the result in this event. This event is handled by APP_BleGapEvtHandler( ) of GAP handler in this example.

  7. The RF Factor

    The noisy RF environment can decrease the throughput. The well designed RF circuit can achieve higher throughput. Finally, the casing condition of the end product containing the BLE device can also affect the throughput.

4. The BLE_THROUGHPUT Example Firmware Diagram

The BLE_THROUGHPUT firmware is designed for the WBZ351 Curiosity board. The firmware is based on TRP service. There are three data transfer modes supported by the BLE_THROUGHPUT firmware, including Checksum mode, Fixed pattern mode and Loopback mode. To simplify, the UART mode is not implemented in this example. The firmware diagram below illustrates the main part of the firmware.

Figure 4-186. Example Firmware Diagram

References