This chapter outlines achievable Bluetooth® Low Energy connection throughput for Generic Attribute Protocol (GATT) procedures used to send and receive data in stated SoftDevice configurations.
The throughput numbers listed in this chapter are based on measurements in an interference-free radio environment. Maximum throughput is only achievable if the application, without delay, reads data packets as they are received and provides new data as packets are transmitted. The connection event length should be set to such a value that the entire connection event can be filled with packets. The SoftDevice may transfer as many packets as can fit within the connection event as specified by the event length for the connection. For example, in simplex communication, where data is transmitted in only one direction, more time will be available for sending packets. Therefore, there may be extra TX-RX packet pairs in connection events. Additionally, more time can be made available for a connection by extending the connection events beyond their reserved time. See Connection timing with Connection Event Length Extension for more information.
The maximum data throughput numbers given in this chapter represent the maximum amount of data that can be transferred between two applications in a given time. The maximum throughput depends on the mechanism used to transfer data. When the application utilizes ATT Handle Value Notification or ATT Write Command, the transactions are one direction only. When the application utilizes ATT Write Request, it is assumed that the peer responds with an ATT Write Response in the next connection interval. The throughput will in this case be limited to one packet every second connection interval. The amount of data in each packet is the MTU size subtracted by the ATT header size. Therefore, the throughput can be expressed as follows:
Throughput_bps = num_packets * (ATT_MTU - 3) * 8 / seconds
All data throughput values apply to packet transfers over an encrypted connection using maximum payload sizes. Maximum Link Layer (LL) payload size is 27 bytes unless noted otherwise.
The following table shows maximum data throughput at a connection interval of 7.5 ms for a single peripheral or central connection.
Protocol | ATT MTU size | Event length | Method | Maximum data throughput (LE 1M PHY) | Maximum data throughput (LE 2M PHY) |
---|---|---|---|---|---|
GATT Client | 23 | 7.5 ms | Receive Notification | 192.0 kbps | 256.0 kbps |
Send Write command | 192.0 kbps | 256.0 kbps | |||
Send Write request | 10.6 kbps | 10.6 kbps | |||
Simultaneous receive Notification and send Write command | 128.0 kbps (each direction) | 213.3 kbps (each direction) | |||
GATT Server | 23 | 7.5 ms | Send Notification | 192.0 kbps | 256.0 kbps |
Receive Write command | 192.0 kbps | 256.0 kbps | |||
Receive Write request | 10.6 kbps | 10.6 kbps | |||
Simultaneous send Notification and receive Write command | 128.0 kbps (each direction) | 213.3 kbps (each direction) | |||
GATT Server | 158 | 7.5 ms | Send Notification | 248.0 kbps | 330.6 kbps |
Receive Write command | 248.0 kbps | 330.6 kbps | |||
Receive Write request | 82.6 kbps | 82.6 kbps | |||
Simultaneous send Notification and receive Write command | 165.3 kbps (each direction) | 275.5 kbps (each direction) | |||
GATT Client | 23 | 3.75 ms | Receive Notification | 64.0 kbps | 106.6 kbps |
Send Write command | 64.0 kbps | 106.6 kbps | |||
Send Write request | 10.6 kbps | 10.6 kbps | |||
Simultaneous receive Notification and send Write command | 64.0 kbps (each direction) | 85.3 kbps (each direction) | |||
GATT Server | 23 | 3.75 ms | Send Notification | 64.0 kbps | 106.6 kbps |
Receive Write command | 64.0 kbps | 106.6 kbps | |||
Receive Write request | 10.6 kbps | 10.6 kbps | |||
Simultaneous send Notification and receive Write command | 64.0 kbps (each direction) | 85.3 kbps (each direction) | |||
GATT Client | 23 | 2.5 ms | Receive Notification | 42.6 kbps | 64.0 kbps |
Send Write command | 42.6 kbps | 64.0 kbps | |||
Send Write request | 10.6 kbps | 10.6 kbps | |||
Simultaneous receive Notification and send Write command | 21.3 kbps (each direction) | 42.6 kbps (each direction) | |||
GATT Server | 23 | 2.5 ms | Send Notification | 42.6 kbps | 64.0 kbps |
Receive Write command | 42.6 kbps | 64.0 kbps | |||
Receive Write request | 10.6 kbps | 10.6 kbps | |||
Simultaneous send Notification and receive Write command | 21.3 kbps (each direction) | 42.6 kbps (each direction) |
The following table shows the maximum data throughput for a single peripheral or central connection. The event length is equal to the connection interval.
Protocol | ATT MTU size | LL payload size1 | Connection interval | Method | Maximum data throughput (LE 1M PHY) | Maximum data throughput (LE 2M PHY) |
---|---|---|---|---|---|---|
GATT Server | 247 | 251 | 50 ms | Send Notification | 702.8 kbps | 1327.5 kbps |
Receive Write command | 702.8 kbps | 1327.5 kbps | ||||
Simultaneous send Notification and receive Write command | 390.4 kbps (each direction) | 780.8 kbps (each direction) | ||||
GATT Server | 247 | 251 | 400 ms | Send Notification | 771.1 kbps | 1376.2 kbps |
Receive Write command | 760.9 kbps | 1376.2 kbps | ||||
Simultaneous send Notification and receive Write command | 424.6 (each direction) | 800.4 kbps (each direction) | ||||
Raw LL data | N/A | 251 | 400 ms | N/A | 803 kbps | 1447.2 kbps |
A connection interval of 20 ms and an event length of 2.5 ms allows up to eight connections. The maximum throughput per connection for this case, using 23 byte ATT MTU, is shown in Data throughput for up to 8 connections.
For connections with longer event length, a longer connection interval would need to be used for each connection to prevent connection events from overlapping. See Scheduling for more information on how connections can be configured.
Throughput may be reduced if a peripheral link is running because peripheral links are not synchronized with central links. If a peripheral link is running, throughput may decrease to half for up to two central links and the peripheral link.
Protocol | Event length | Method | Maximum data throughput (LE 1M PHY) |
---|---|---|---|
GATT Client | 2.5 ms | Receive Notification | 16.0 kbps |
Send Write command | 16.0 kbps | ||
Send Write request | 4.0 kbps | ||
Simultaneous receive Notification and send Write command | 8.0 kbps (each direction) | ||
GATT Server | 2.5 ms | Send Notification | 16.0 kbps |
Receive Write command | 16.0 kbps | ||
Receive Write request | 4.0 kbps | ||
Simultaneous send Notification and receive Write command | 8.0 kbps (each direction) |