From 734f130557d07f6b32cadaf07194d7eafec69fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20Hegedu=CC=88s?= Date: Fri, 24 Apr 2026 11:10:16 +0200 Subject: [PATCH 1/2] Increased BGAPI payload size --- .../resources/bgapi_max_payload_size.png | Bin 0 -> 7059 bytes .../throughput.md | 13 +++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 sld129-bluetooth-fundamentals-system-performance/resources/bgapi_max_payload_size.png diff --git a/sld129-bluetooth-fundamentals-system-performance/resources/bgapi_max_payload_size.png b/sld129-bluetooth-fundamentals-system-performance/resources/bgapi_max_payload_size.png new file mode 100644 index 0000000000000000000000000000000000000000..b19ad2acd825120898fe84ecaeb03488927ea2bb GIT binary patch literal 7059 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 EKL*_M!~g&Q literal 0 HcmV?d00001 diff --git a/sld129-bluetooth-fundamentals-system-performance/throughput.md b/sld129-bluetooth-fundamentals-system-performance/throughput.md index b858d86..15fc5c7 100644 --- a/sld129-bluetooth-fundamentals-system-performance/throughput.md +++ b/sld129-bluetooth-fundamentals-system-performance/throughput.md @@ -65,9 +65,14 @@ Maximum Transfer Unit (MTU) specifies the number of bytes that can be sent withi |1.0.x|23| |2.0.x|58| |2.1.x|126| -|2.3.x or later|250| +|2.3.x|250| +|10.0.x or later|512 or higher| -Note that the MTU size depends on both sides. For example, if the remote device supports a smaller MTU size, the smaller MTU size will be used. The higher the MTU size, the higher the throughput. Twice the MTU size doubles the throughput. +Note that the MTU size depends on both sides. For example, if the remote device supports a smaller MTU size, the smaller MTU size will be used. The higher the MTU size, the higher the throughput. Twice the MTU size doubles the throughput. In the latest SDKs, the maximum ATT MTU is -in practice- only limited by the BGAPI payload size configuration. With high enough BGAPI Payload size, the full value of the characteristics can be read/written in one operation (SL_BGAPI_MAX_PAYLOAD_SIZE - 7 bytes so a total of 520 bytes for SL_BGAPI_MAX_PAYLOAD_SIZE to achieve the full 512 bytes of length to read a characteristic). This can be configured in the projects config/sl_bgapi_config.h header file or on the User Interface for SoC/NCP projects (Software Components > Bluetooth > Bluetooth Host (Stack) > BGAPI Protocol): + +![Unacknowledged data transfer](resources/bgapi_max_payload_size.png?darkModeUrl=resources/bgapi_max_payload_size.png) + +In case of NCP setups, it is recommended to match up larger BGAPI payloads with higher UART speeds to avoid any congestion/packet loss. ### Attribute Protocol (ATT) Operation @@ -86,12 +91,12 @@ MTU size includes the GATT header, which has a variable length and means that th For acknowledged operations, the maximum throughput can be achieved with the following parameters: - Connection interval: **7.5 ms** -- MTU size: **250 bytes** +- MTU size: **513 bytes** - Attribute protocol operation used: **Read** This results in a maximum throughput of -**1000 ms / (2 * 7.5 ms) * (250 - 1) bytes = 16,600 bytes/sec = 132,800 bps** +**1000 ms / (2 * 7.5 ms) * (513 - 1) bytes = 34,133 bytes/sec = 273,066 bps** ## Throughput Calculation for Unacknowledged Data Transfer From 52141dea3af320ac1bc7ac7d4b5b6e1dda13a4ed Mon Sep 17 00:00:00 2001 From: attila-hegedus-silabs <103418158+attila-hegedus-silabs@users.noreply.github.com> Date: Tue, 28 Apr 2026 09:12:11 +0200 Subject: [PATCH 2/2] Update sld129-bluetooth-fundamentals-system-performance/throughput.md Co-authored-by: silabs-vm --- .../throughput.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sld129-bluetooth-fundamentals-system-performance/throughput.md b/sld129-bluetooth-fundamentals-system-performance/throughput.md index 15fc5c7..929dfdc 100644 --- a/sld129-bluetooth-fundamentals-system-performance/throughput.md +++ b/sld129-bluetooth-fundamentals-system-performance/throughput.md @@ -68,7 +68,11 @@ Maximum Transfer Unit (MTU) specifies the number of bytes that can be sent withi |2.3.x|250| |10.0.x or later|512 or higher| -Note that the MTU size depends on both sides. For example, if the remote device supports a smaller MTU size, the smaller MTU size will be used. The higher the MTU size, the higher the throughput. Twice the MTU size doubles the throughput. In the latest SDKs, the maximum ATT MTU is -in practice- only limited by the BGAPI payload size configuration. With high enough BGAPI Payload size, the full value of the characteristics can be read/written in one operation (SL_BGAPI_MAX_PAYLOAD_SIZE - 7 bytes so a total of 520 bytes for SL_BGAPI_MAX_PAYLOAD_SIZE to achieve the full 512 bytes of length to read a characteristic). This can be configured in the projects config/sl_bgapi_config.h header file or on the User Interface for SoC/NCP projects (Software Components > Bluetooth > Bluetooth Host (Stack) > BGAPI Protocol): +Note that the MTU size depends on the capabilities of both devices. If the remote device supports a smaller MTU size, the smaller MTU size is used. In general, a larger MTU size allows higher throughput. For example, if the MTU size is doubled, throughput may be double. In the latest SDKs, the maximum ATT MTU is, in practice, limited only by the configured BGAPI payload size. + +With a sufficiently large BGAPI payload size, the full characteristic value can be read or written in a single operation. The maximum characteristic value length that can be transferred in one operation is `SL_BGAPI_MAX_PAYLOAD_SIZE - 7` bytes. Therefore, to support the full 512‑byte length, SL_BGAPI_MAX_PAYLOAD_SIZE must be set to 520 bytes. + +This value can be configured in the project `config/sl_bgapi_config.h` header file or through the user interface for SoC/NCP projects under **Software Components > Bluetooth > Bluetooth Host (Stack) > BGAPI Protocol**: ![Unacknowledged data transfer](resources/bgapi_max_payload_size.png?darkModeUrl=resources/bgapi_max_payload_size.png)