MTU

<\/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.

Maximum Transmission Unit -- the largest ATT payload that can be sent in a single packet (default 23 bytes, negotiable up to 512).

Also known as: Maximum Transmission Unit ATT_MTU

What Is MTU in BLE?

The Maximum Transmission Unit (MTU) defines the largest ATT Protocol Data Unit (PDU) that can be exchanged between a GATT client and server. A larger MTU means more application data per packet, fewer round trips, higher throughput, and lower power consumption per byte transferred.

Default and Negotiated Values

The BLE specification mandates a default ATT_MTU of 23 bytes. After subtracting the 3-byte ATT header (1-byte opcode + 2-byte handle), this leaves only 20 bytes of usable payload -- a severe constraint for applications transferring images, audio, or firmware. The Exchange MTU procedure, initiated by the client immediately after connection, allows both sides to agree on a larger ATT_MTU. The negotiated value is the minimum of the two proposed MTUs. Modern chips commonly support 247 or 512 bytes.

Relationship to DLE

MTU and Data Length Extension (DLE) are complementary but independent. MTU governs the ATT-layer payload size, while DLE controls the link-layer packet size. If the MTU is 247 bytes but DLE is left at the default 27 bytes, the ATT PDU must be fragmented across multiple link-layer packets (a process called L2CAP fragmentation), adding latency and overhead. For best performance, both MTU and DLE should be negotiated to their maximum supported values simultaneously.

Platform-Specific Behavior

Platform Default MTU Maximum MTU Notes
iOS 23 512 Auto-negotiates on connection
Android 23 512 App must call requestMtu() explicitly
Zephyr RTOS 23 CONFIG_BT_L2CAP_TX_MTU Set at compile time
Nordic SDK 23 NRF_SDH_BLE_GATT_MAX_MTU_SIZE RAM allocation scales with MTU

Android's requirement for explicit MTU negotiation is a common source of performance issues. If the app developer forgets to call requestMtu(), all GATT operations are constrained to 20-byte payloads.

RAM Impact

On resource-constrained SoCs, the BLE stack must allocate TX and RX buffers proportional to the configured MTU. A 512-byte MTU with support for two simultaneous connections can consume over 4 KB of RAM just for ATT buffers. Firmware developers should balance the MTU size against available memory, especially on chips with 32 KB or 64 KB of RAM.

Write and Read Segmentation

For writes exceeding MTU minus 3 bytes, ATT provides the Prepare Write / Execute Write (queued write) procedure. For reads, the Read Blob Request allows reading beyond the first MTU-3 bytes by specifying an offset. Both mechanisms introduce additional round trips, so maximizing MTU remains the most effective optimization for large transfers.

Related Terms

Frequently Asked Questions

Our glossary covers 90+ BLE technical terms organized by category. Each term includes a definition, related terms, and links to relevant chips and guides.