This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Is MTU of all BLE devices limitted to 23 bytes when using ATT protocol?

Is MTU of all BLE devices limitted to 23 bytes when using ATT protocol?

I don't know explicitly.

Some say it is possible to use MTU longer than 23 bytes.

Others say it is possible to use MTU longer than 23 bytes in softdevice(except to s132)

Is it impossible to use MTU longer than 23 bytes at Only softdevice?

does other vender implement MTU longer than 23 bytes for ATT protocol?

Parents
  • Hi JoonDong,

    Trying to answer the questions one by one:

    • "Is MTU of all BLE devices limited to 23 bytes when using ATT protocol?" - NO, 23 bytes is just default ATT_MTU size, can be negotiated higher.
    • "Is it impossible to use MTU longer than 23 bytes at Only softdevice?" - Soft Device S130 (for nRF51) and S132 (for nRF52832) support extended ATT_MTU since v2.x, S140 and others as well.
    • "does other vender implement MTU longer than 23 bytes for ATT protocol?" - Yes. Also note that you don't need to use Nordic BLE stack (Soft Device) on nRF5x, there are alternatives in open source projects such as Zephyr or Mynewt.

    Cheers Jan

  • First of all you cannot use ATT_MTU size lower than 23 bytes, that violates BT SIG Core specification and I believe Nordic stack doesn't allow it anyway. Note that this is just theoretical maximum, BLE uses smart PDU implicit sizing so the MTU/PDU you observe on radio depends on higher application data and if these are shorter then maximum there is no padding.

    When it comes to ATT_MTU negotiation then yes, you need to do some explicit step from higher level to be able to use it. However it looks differently on each platform. E.g. with Nordic's BLE stack it takes care about procedure itself (you can get event call back if you want to know that it happened), you just need to say during SD initialization what ATT stack size (including MTU) you want to use. On Android if you are a master (GAP Central + GATT Client) you need to call API to extend ATT_MTU. On iOS all is done automatically.

Reply
  • First of all you cannot use ATT_MTU size lower than 23 bytes, that violates BT SIG Core specification and I believe Nordic stack doesn't allow it anyway. Note that this is just theoretical maximum, BLE uses smart PDU implicit sizing so the MTU/PDU you observe on radio depends on higher application data and if these are shorter then maximum there is no padding.

    When it comes to ATT_MTU negotiation then yes, you need to do some explicit step from higher level to be able to use it. However it looks differently on each platform. E.g. with Nordic's BLE stack it takes care about procedure itself (you can get event call back if you want to know that it happened), you just need to say during SD initialization what ATT stack size (including MTU) you want to use. On Android if you are a master (GAP Central + GATT Client) you need to call API to extend ATT_MTU. On iOS all is done automatically.

Children
No Data
Related