We are using the CC2460R2F with the provided "simple_np" example. We have created several services and characteristics on our AP which work fine for apps which do not attempt to negotiate MTU size. All characteristics but one are 20 bytes in size, while the last characteristic's size can be adjusted dynamically based on the exchanged MTU size, but start with size 20 bytes.
The stack indicates that the maximum supported ATT_MTU size is 247, but while fumbling through our dynamically-sized characteristic implementation, we found that only the first 20 bytes get sent (when notifications are enabled, for example), regardless of the negotiated MTU size as indicated from the SNP to our AP by way of an SNP_ATT_MTU_EVT. We tried many things with no effect, and so we started using a BLE sniffer.
During establishment of the connection, the MTU size is negotiated (between nRF Connect app on Android version 9) as follows:
Exchange MTU Request, Client Rx MTU: 517
Exchange MTU Response, Server Rx MTU: 247
LL_LENGTH_REQ, as pictured below:
LL_LENGTH_RSP, as pictured below:
Does this mean what I think? That the CC2460R2F only supports writing/notifying up to 20 bytes? If so, how can this be changed? From what I read, the TI BLE Stack supports DLE by default, with no configuration required.
Additionally, a simpler query:
Is it true that the appropriate size for a characteristic is ATT_MTU_SIZE-3, to leave 1 byte for the opcode and 2 bytes for the Attribute Handle?


