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.

CC2640R2F-Q1: An error when connecting Multi Peripherals

Part Number: CC2640R2F-Q1
Other Parts Discussed in Thread: BLE-STACK

I got an error HW_FAIL_PKT_LEN_EXCEEDS_PDU_SIZE when connecting Multi Peripherals.

Could you let me know what should we do?

My conditions are below.

- Connecting one CC2640R2F-Q1 central (simple_central_cc2640r2jp_app) and two CC2640R2F-Q1 peripherals (simple_peripheral_cc2640r2lp_app).

- Using SDKv2.40.00.32 modified below

  1. The notification (243 bytes) is send from peripherals at 1.26 sec interval.

  2. Connection one central and two peripherals using white list function

  3. After the central established the connection, Service discovery, Characteristic discovery and Notification enable(CCCD discovery, CCCD write).

Best Regards,

Satoshi Shinohara

  • Hi,

    I am not familiar with this error unfortunately. Can you give me a minimal list of changes (code and/or option changes) to the example projects so that I can reproduce it and debug?

    For example, how do you increase the PDU size, how do you you send the notification.

    Best regards,
    Aslak
  • Hi-Aslak,

    Thank you.

    Here is the projects.

    The readme file is including how to reproduce the problem.

    The development tool I'm using is:

    - CCSv8.1.0

    - ​CodegenTool v18.1.2.LTS

    If you have any question, please let me know.

    workspace_v8_multi_peripheral_problem.zip

    Best Regards,

    Satoshi Shinohara

  • How / where are you getting the HW_FAIL_PKT_LEN_EXCEEDS_PDU_SIZE error? Is this a return value, event, assert, etc?
  • HI Tim,

    HW_FAIL_PKT_LEN_EXCEEDS_PDU_SIZE is getting by SimpleCentral_processStackMsg() function in "simple_central.c"

    static void SimpleCentral_processStackMsg(ICall_Hdr *pMsg)

    {

      ..

      case HCI_BLE_HARDWARE_ERROR_EVENT_CODE:

      {

      hciEvt_HardwareError_t *pEvt = (hciEvt_HardwareError_t *)pMsg;

      Display_print1(dispHandle, 0, 0, "*** HCI_BLE_HARDWARE_ERROR_EVENT_CODE : hardwareCode = 0x%x", pEvt->hardwareCode);

      }

      ..

    }

    When HCI_BLE_HARDWARE_ERROR_EVENT_CODE event happens, "pEvt->hardwareCode" returns HW_FAIL_PKT_LEN_EXCEEDS_PDU_SIZE.

    You can get the error by the procedure described in "readme.txt".

    3. Press right-SW to connecting peripheral device 2

       You will see an error on terminal software.

         HCI_BLE_HARDWARE_ERROR_EVENT_CODE hardwareCode=0x8b

    Best Regards,

    Satoshi Shinohara

  • I will try to set this up when I have time but I don't see that happening for at least a week.
  • Hi-TIm

    Any Update?

    Best Regards,

    Satoshi Shinohara

  • Hi Satoshi Shinohara,

    We have reproduced this internally can can confirm that it is in fact an issue with the way that the BLE-Stack handles packet recombination at the link layer with multiple connections.

    I have the following suggested workarounds:

    1. Fragment the PDUs manually at the application layer before sending to GATT.
    2. Use data length extension on one or both connections so that the PDUs will not be fragmented over the LL
  • Hi Sean,

    We applied our system to workaround 2 and it is working fine.

    Thank you so much.

    And Everyone who takes part in this problem.

    Best Regards,

    Satoshi Shinohara