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

S132 v3 Exchange MTU (LE Data Packet Length Extension does't work)

Hi, I encountered some problem using the S132v3.

With the s132 v3 and sdk12, I want to extend the ble transfer size.

Now I can change the att_mtu to 100, and iphone can write more than 20bytes to the characteristic.

But!!! I found that the LL Data PDU is fragmented by 27bytes, so the pdu length is still not extended.

When I dig deeper with the sniffer, I found that nRF52 response the LL_LENGTH_REQ cmd with LL_UNKNOWN_RSP. It should be LL_LENGTH_RSP with a BLE_EVT_DATA_LENGTH_CHANGED event to the app layer.

I also use sd_ble_opt_set(BLE_GAP_OPT_EXT_LEN, &option), but no effect.

There must be something wrong with the S132 or me... I need you help or a S132 bugfix.

image description

After using the examples from Petter Myhre

GATT Client: nRF52 DK GATT Server: nRF52 DK LL_LENGTH_REQ ---- LL_LENGTH_RSP image description

GATT Client: iPhone6 iOS10 GATT Server: nRF52 DK LL_LENGTH_REQ ---- LL_UNKNOWN_RSP image description

Both the LL_LENGTH_REQ packet are the same, but the s132 doesn't response to iphone.

  • @eyeye sniffer traces you've posted show that iPhone 6 doesn't support DLE as it responds LL_UNKNOWN_RSP to nordic's LL_LENGTH_REQ. Note that GATT server/client is a different concept from central/peripheral denoted on sniffer traces master/slave. Most notably GATT server - the nRF is a slave device on sniffer.

    So not a bug in S132, maybe a bug in iPhone if Apple intended to support DLE. Also I've done some reading around and as far as user testimonials go Nexus 5x is the only device I could find confirmation of DLE.

    I also found this article: www.argenox.com/.../ denying iPhone support for DLE.

  • From what I recall from the Apple Bluetooth list when someone asked about DLE, they said it's not supported, so not a bug at Apple, and not, as expected, a bug in S132. It's going to be interesting when more products do start supporting long MTU and DLE to work out what the most efficient length to request is, it's not always the longest possible, that can cause connection events to terminate more quickly because there's not time for full-length DLE-extended packet, so sometimes a smaller link-layer packet and a bit of fragmentation does better.

  • Very appreciate for your reply and patient. now I understand where is my problem, i thought LL_LENGTH_REQ was sent by S132, it's a big mistake. It's really iPhone haven't support DLE, just mtu exchanging. Thank you for all your replies above.

  • If Keton answered your question, please accept his answer by clicking the check mark next to it. Thanks.

Related