BLE Throughput Optimization: Maximizing Data Transfer Speed

<\/script>\n
'; }, get iframeSnippet() { const domain = '{ SITE_DOMAIN }'; const type = '{ embed_type }'; const slug = '{ embed_slug }'; return ''; }, get activeSnippet() { return this.method === 'script' ? this.scriptSnippet : this.iframeSnippet; }, copySnippet() { navigator.clipboard.writeText(this.activeSnippet).then(() => { this.copied = true; setTimeout(() => { this.copied = false; }, 2000); }); } }" @keydown.escape.window="open = false" @click.outside="open = false">

Embed This Widget

Theme


      
    

Widget powered by . Free, no account required.

Tuning MTU, PHY, and connection events for maximum throughput

| 4 min read

BLE Throughput Optimization: Maximizing Data Transfer Speed

The theoretical maximum BLE throughput on LE 2M PHY with DLE is approximately 1.4 Mbps. Real-world applications achieve 100–800 kbps depending on PHY selection, MTU size, connection interval, and protocol overhead. This guide walks through each layer of the stack to eliminate bottlenecks.

Throughput Budget Analysis

BLE 2M PHY raw bitrate: 2 Mbps

LL overhead per packet:
  Preamble + Access Address + CI + MIC + CRC = 11 bytes × 8 bits = 88 µs
  Max LL payload (DLE): 251 bytes = 1008 µs

Max LL efficiency: 1008 / (1008 + 88) = 92%
  → 2 Mbps × 92% = 1.84 Mbps LL

GATT overhead:
  ATT header: 3 bytes (opcode + handle)
  L2CAP header: 4 bytes
  Available data per packet: 251 − 7 = 244 bytes

With 15 ms connection interval, 2 packets per event:
  244 bytes × 2 × (1000/15) ≈ 32,500 bytes/s = 260 kbps

With 7.5 ms CI, 6 packets per event (DLE + 2M PHY):
  244 × 6 × (1000/7.5) ≈ 195,200 bytes/s = 1.5 Mbps (theoretical)

Step 1: Upgrade to 2M PHY

If both devices support Bluetooth 5.0+, negotiate LE 2M PHY after connection:

// Nordic nRF Connect SDK
bt_conn_le_phy_update(conn, BT_CONN_LE_PHY_PARAM_2M);

// Callback
static void on_phy_updated(struct bt_conn *conn,
                            struct bt_conn_le_phy_info *param) {
    if (param->tx_phy == BT_GAP_LE_PHY_2M) {
        LOG_INF("PHY updated to 2M");
    }
}

LE 2M PHY doubles the bitrate at the cost of reduced range (−3 dB sensitivity). For throughput-critical applications within 10 m, always prefer 2M PHY.

Step 2: Data Length Extension (DLE)

DLE increases the LL PDU payload from 27 to 251 bytes, reducing per-packet overhead from 30% to 4%:

// Request DLE — both peers must support BT 4.2+
bt_conn_le_data_len_update(conn, BT_LE_DATA_LEN_PARAM_MAX);
// BT_LE_DATA_LEN_PARAM_MAX: TX/RX 251 bytes, 2120 µs

Without DLE, a 512-byte write requires 20 packets (27 bytes each). With DLE, it fits in 3 packets (251 bytes each) — a 6.7× reduction in air time and corresponding improvement in throughput.

Step 3: MTU Negotiation

After DLE, negotiate MTU to match the LL PDU size:

DLE Payload Optimal MTU ATT Data per Packet
27 bytes (no DLE) 23 bytes 20 bytes
251 bytes (DLE max) 247 bytes 244 bytes
// iOS — request MTU implicitly via maximumWriteValueLength
// iOS auto-negotiates MTU to 185 or 517 bytes depending on device
let chunkSize = peripheral.maximumWriteValueLength(for: .withoutResponse)

Step 4: Connection Event Optimization

Each connection event can carry multiple packets if the controller's transmit queue is full and the peer ACKs quickly. The number of packets per event is limited by connSupervisionTimeout / connInterval and the controller's max event length parameter:

// nRF: set event length budget
NRF_BLE_CONN_EVT_LEN_EXT_ENABLED = 1
ble_conn_params_t.max_conn_evt_len_extension = 5 // 5 extra packets per event

Write Without Response vs Write With Response: WWR (0x52 opcode) eliminates the ACK round-trip and can sustain 3–4× higher throughput than Write With Response — at the cost of no delivery confirmation. Use WWR for streaming sensor data; use Write With Response for critical commands.

Step 5: Connection Subrating (BT 5.3)

Connection Subrating (Core Spec 5.3, Section 4.5.18) allows the connection interval to temporarily increase without renegotiation, then snap back to a fast interval for bursts:

Base interval: 7.5 ms (high throughput mode)
Subrate factor: 100 (×100 = 750 ms during idle)
Min/max subrate: 1–500

Effect: 99% reduction in idle connection events,
        instant switch to 7.5 ms when data arrives

Throughput Benchmark Summary

Config Typical Throughput
1M PHY, no DLE, 20 ms CI 40–80 kbps
1M PHY, DLE, 15 ms CI 150–250 kbps
2M PHY, DLE, 15 ms CI 300–500 kbps
2M PHY, DLE, 7.5 ms CI, 4 pkt/event 700–900 kbps
2M PHY, DLE, 7.5 ms CI, EATT, 6 pkt/event 1.0–1.4 Mbps

Use the Power Estimator to understand the battery cost of high-throughput modes before optimizing for maximum speed. See BLE Connection Issues for debugging connectivity problems that surface during throughput testing.

Frequently Asked Questions

Yes, our guides range from beginner introductions to advanced topics. Each guide indicates its difficulty level and prerequisites so you can find the right starting point.