PSoC 4 BLE 4.2 Packet Size

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
StKr_1203736
Level 3
Level 3
First like received 10 replies posted 10 sign-ins

I have a system that uses BLE for communication. It is supposed to be BLE 4.2, but I cannot get it to send packets with more than 22 bytes (0x16). The packet data is truncated at 22 bytes.

I am using the Cypress BLE Dongle as a replacement for the system master, which will eventually be a phone-thingy.

Dongle: CY8C5868L

Device: CYBLE-222014-01

These are the BLE setup screens for the Dongle. It is using BLE object 3.65. The BLE setup screens for the device are the same.

Dongle BLE Setup.JPG

 

Dongle BLE Version.JPG

This is a typical transaction that is supposed to be  28 bytes of data. It is truncated to 22 bytes (0x16).

Packet capture is with the TI RF-Sniffer, which is nominally a BLE 4.0 tool. But note that the data packet arrives with a 'length' of 0x17 - 1 byte of ATT op code + 22 bytes of data.

BLE 28 byte transfer truncated to 22 bytes.JPG

Is there something else I need to do to get longer packets?

Steve

 

0 Likes
1 Solution
Yugandhar
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 5 likes given

Hello,

If the GATT Client supports MTU size greater than the default value( Default GATT MTU size as per Bluetooth 4.2 core specification is 23 bytes), it has to invoke CyBle_GattcExchangeMtuReq() function with the desired GATT MTU size. This function should only be initiated once during a connection. This function is used to send Maximum Transmitted Unit(GATT MTU) supported by the GATT Client.

This function call results in CYBLE_EVT_GATTS_XCNHG_MTU_REQ event at the GATT Server's end in response to which the GATT Server is expected to send its GATT MTU size. The CYBLE_EVT_GATTC_XCHNG_MTU_RSP event is generated at the GATT Client's end on receiving GATT MTU response from the GATT Server.

Refer to Bluetooth 4.2 core specification, Volume 3, Part G, section 4.3.1 for more details on GATT MTU exchange operation.

Thanks,
P Yugandhar.

View solution in original post

0 Likes
1 Reply
Yugandhar
Moderator
Moderator
Moderator
500 solutions authored 1000 replies posted 5 likes given

Hello,

If the GATT Client supports MTU size greater than the default value( Default GATT MTU size as per Bluetooth 4.2 core specification is 23 bytes), it has to invoke CyBle_GattcExchangeMtuReq() function with the desired GATT MTU size. This function should only be initiated once during a connection. This function is used to send Maximum Transmitted Unit(GATT MTU) supported by the GATT Client.

This function call results in CYBLE_EVT_GATTS_XCNHG_MTU_REQ event at the GATT Server's end in response to which the GATT Server is expected to send its GATT MTU size. The CYBLE_EVT_GATTC_XCHNG_MTU_RSP event is generated at the GATT Client's end on receiving GATT MTU response from the GATT Server.

Refer to Bluetooth 4.2 core specification, Volume 3, Part G, section 4.3.1 for more details on GATT MTU exchange operation.

Thanks,
P Yugandhar.

0 Likes