This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LAUNCHXL-CC2640R2: Error when trying to send more than 20 bytes with ATT_MTU set to 247 bytes

Part Number: LAUNCHXL-CC2640R2
Other Parts Discussed in Thread: CC2640R2F, CC2640

Hi,

I'm using CC2640R2F connected to an external MCU through SPI bus. The firmware used is BLE5 Host Test, compiled in FlashROM_StackLibrary build without code modifications. The build_config.opt has been set to:

  • -DHOST_CONFIG=PERIPHERAL_CFG
  • -DGATT_DB_OFF_CHIP
  • -DGAP_BOND_MGR.

Additional information:

  • XDCtools: 3.51.3.28_core
  • SimpleLink CC2640R2 SDK 5.30.0.03

The following table shows my BLE service.

ConHnd Handle Uuid Uuid Description Value
0x0000 0x0001 0x2800 GATT Primary Service Declaration
0x0000 0x0002 0x2803 GATT Characteristic Declaration
0x0000 0x0003 0x0D01
0x0000 0x0004 0x2902 Client Characteristic Configuration 0x0000 (Disabled) or 0x0001 (Notif.) or 0x0002 (Ind.)
0x0000 0x0005 0x2901 Characteristic User Declaration Receive response
0x0000 0x0006 0x2803 GATT Characteristic Declaration
0x0000 0x0007 0x0D02
0x0000 0x0008 0x2901 Characteristic User Declaration Write command
0x0000 0x0009 0x2803 GATT Characteristic Declaration
0x0000 0x000A 0x0D03
0x0000 0x000B 0x2901 Characteristic User Declaration Authenticated read

I can handle a connection, basically writing a command in 0x0D02 and receiving a response, by Notification or Indication, in 0x0D01. The problem is when I'm trying to send a response with more than 20 bytes I'm receiving an error 0x1B (HCI_ERROR_CODE_SCO_OFFSET_REJ).

The following table shows the error log for Notification mode, where TX is the frame send from external MCU to CC2640 and RX is the opposite (generated when a smartphone - CENTRAL MODE - send something). The same error is received when Indication is used instead of Notification.

Direction Frame Description
RX 00 FE 0B 04 FF 08 02 05 00 00 00 02 F7 00 0A Received event to change ATT MTU to 247 bytes (max. length)
TX FE 08 01 03 FD 04 00 00 F7 00 04 Send ATT_ExchangeMTURsp with 247 bytes
RX 00 FE 09 04 FF 06 7F 06 00 03 FD 00 73 Command status: success
RX 00 FE 0F 04 FF 0C 12 05 00 00 00 06 00 00 04 00 01 00 EC Received event to enable Notification
TX FE 06 01 13 FD 02 00 00 EB Send ATT_WriteRsp
RX 00 FE 09 04 FF 06 7F 06 00 13 FD 00 63 Command status: success
RX 00 FE 19 04 FF 16 12 05 00 00 00 10 00 00 07 00 07 0A 41 42 43 44 45 46 47 48 49 4A F2 Received event - write message in handle 0x0007 (size < 20 bytes)
TX FE 06 01 13 FD 02 00 00 EB Send ATT_WriteRsp
RX 00 FE 09 04 FF 06 7F 06 00 13 FD 00 63 Command status: success
TX FE 16 01 9B FD 12 00 00 00 03 00 0A 0B 41 42 43 44 45 46 47 48 49 4A 07 6D Send notification in handle 0x0003 (size < 20 bytes)
RX 00 FE 09 04 FF 06 7F 06 00 9B FD 00 EB Command status: success
RX 00 FE 73 04 FF 70 12 05 00 00 00 6A 00 00 07 00 07 64 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 05 Received event - write message in handle 0x0007 (size > 20 bytes)
TX FE 06 01 13 FD 02 00 00 EB Send ATT_WriteRsp
RX 00 FE 09 04 FF 06 7F 06 00 13 FD 00 63 Command status: success
TX FE 70 01 9B FD 6C 00 00 00 03 00 64 E4 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 07 1B Send notification in handle 0x0003 (size > 20 bytes)
RX 00 FE 09 04 FF 06 7F 06 1B 9B FD 00 F0 Command status: error 0x1B (HCI_ERROR_CODE_SCO_OFFSET_REJ)

Can anybody help me? I didn't find anything related to this error code...

Best Regards,

Eduardo Sousa.

  • Hi,

    I have assigned an expert to comment.

    Best regards,

  • Hi Eduardo,

    If I understand this correctly, you're seeing an error when you send a 20+ byte notification from your CC2640 device to a smartphone. Is this error message coming from the smartphone to the host_test device? Or from the host_test device to the central processor? This error message seems to indicate that the central processor is sending something that is too big for the host_test device to process.

    Best,

    Nate

  • Hi Nate,

    The error message is coming from CC2640 when I'm trying to send a notification to smartphone. I can receive a 20+ byte message from smartphone correctly.

    To better illustrate, the following figure shows my setup.

    BR,

    Eduardo.

  • Thank you for the clarification and the diagram Eduardo!

    It looks like the notification you're trying to send in handle 0x0003 is too big for the memory allocated, or for some reason you're overwriting off past the end of the characteristic. If you're not sure where the problem is, I'd recommend starting by testing host_test with the BTool setup to ensure you're sending the proper commands between host_test and external processor.

  • Hi Nate,

    I solved the problem sending the command Gatt_ExchangeMTU to smartphone. Basically the smartphone will continue request the exchange of MTU generating the event ATT_ExchangeMTUReq and the CC2640 will continue answer with ATT_ExchangeMTURsp, but immediately after it, the CC2640 must send the command Gatt_ExchangeMTU.

    Thanks and you can close the topic.

    BR,

    Eduardo.