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.

CCS/CC2640R2F: CC2640R2 - IPHONE 7 issue with 3rd connection

Part Number: CC2640R2F


Tool/software: Code Composer Studio

Hi All,

I am using CC2640R2F module with Host-test application with 1.30.00 stack version.

CC2640R2F module will act as peripheral mode. We are trying to connect 3No's iphone 6 with this module as Central. It is working fine.

When we are trying to connect with 3No's iphone 7 with CC2640R2 module, we are able to connect with only 2 iphone 7. But 3rd one send the connection request and not asking for any MTU size exchange/ service UUID. So the connection is not proper.

I need to know the process which i am missing between iphone 6 and iphone 7.

Reply asap. Thanks in advance.

  • Hi Shri,

    Can you use the Heap Manager to check the heap status when the connection fails? software-dl.ti.com/.../
  • Hi Marie,

    Thanks for the reply..

    As per the discussion with TI support team, we have compiled latest production stack V1.50.00.58 - Multi Role project. In that also we are facing the same issue. I will check the heap manager and ping you asap.

    Why we cant able to connect with more than 2 - IPHONE7 But we are able to connect with 4 - IPHONE6.

    Do we need to change any parameter for this ?

    Could you able to tell me what will be the exact problem ?

    Thanks,
  • Hi Shri,

    While you are checking on the heap usage as requested by Marie, please see this section of our BLE SW User Guide:
    "RAM Considerations when using DLE"
    software-dl.ti.com/.../data-length-extensions.html

    It's possible your heap is getting consumed by the iPhone 7's DLE request. You can disable the DLE feature by following the procedure in the aforementioned user guide.

    Looking forward to your heap usage report.

    Best wishes
  • Hi,

    I have enabled HEAPMGR_METRICS macro, as mentioned in the document. We flashed and trying to connect with the same 3 IPHONE-7 NRF tool.

    One phone is getting connected without any problem. But the second IPHONE-7 are sending the Establish link request and connection is done but its not asking for any MTU_SIZE_EXCHANGE and not asking for service UUID.

    When we are continuously trying to connect this case. Some time the Second IPHONE-7 will get the SUUID and get connected after (4 to 5) seconds. But Third IPHONE-7 is not asking for the MTU_SIZE_EXCHANGE / SUUID.

    Did i need to enable anything else for the heap manager ?

    Thanks for your support. We are in final stage of production. Kindly support us asap.
  • Hi Shri,

    You have to enable the HEAPMGR_METRICS predefine in the predefined compiler symbols. (Project -> Properties -> Build -> ARM Compiler -> Predefined Symbols.)

    If you want to disable DLE in your device you can use HCI_EXT_SetLocalSupportedFeaturesCmd():

    // featSet is an array of bytes representing features supported
    // of the Device. Clear DLE Feature bit
    CLR_FEATURE_FLAG( featSet[0], LL_FEATURE_DATA_PACKET_LENGTH_EXTENSION );
    HCI_EXT_SetLocalSupportedFeaturesCmd( featSet );

  • Hi Marie,

    I have checked the app code of Multi-Role and found that, This sections are already defined (as USE_LL_CONN_PARAM_UPDATE macro is not defined).

    switch (command_complete->cmdOpcode)
    {
    case HCI_LE_READ_LOCAL_SUPPORTED_FEATURES:
    {
    if (pktStatus == SUCCESS)
    {
    uint8_t featSet[8];

    // get current feature set from received event (bits 1-9 of
    // the returned data
    memcpy( featSet, &command_complete->pReturnParam[1], 8 );

    // Clear bit 1 of byte 0 of feature set to disable LL
    // Connection Parameter Updates
    CLR_FEATURE_FLAG( featSet[0], LL_FEATURE_CONN_PARAMS_REQ );

    // Update controller with modified features
    HCI_EXT_SetLocalSupportedFeaturesCmd( featSet );
    }
    }
    break;

    default:
    //do nothing
    break;
    }
    ----------------------------------------------------------X--------------------------------------------------------------------X------------------------------------------

    You have to enable the HEAPMGR_METRICS predefine in the predefined compiler symbols. (Project -> Properties -> Build -> ARM Compiler -> Predefined Symbols.)

    YES, this also done.

    Still we cant able to connect with 3rd IPHONE-7.

    Thanks,
  • Hi Shri,

    Out of curiosity, did you try disabling the DLE by fixing the TX & RX sizes @ 27 bytes as per the procedure I posted in the link above?

    Best wishes
  • Hi JSX,

    We tried to connecct with disabled DLE as you suggested.
    Still the third connection is showing the same scenario...
    DLE disable: Is it required to be configured for each connection or once at device initialization is enough?

    FYI:
    stack in use: simplelink_cc2640r2_sdk_1_50_00_58

    We are using default HostTest project with following Predefined Symbols added/modified in App project:
    MAX_PDU_SIZE=60
    MAX_NUM_PDU=20
    GATT_DB_OFF_CHIP
    MAX_NUM_BLE_CONN=5
    CC2640R2_LAUNCHXL // Custom target board chipset is CC2640R2FRSM, tried same with Launchpad XL. Hope, it doesn't matter.
    xPOWER_SAVING // in stack project also this is redefined to disable POWER_SAVING feature.


    Please reply...
  • Hello Arun,

    Please provide or confirm the code addition to disable DLE follows our documented procedure in the BLE User Guide:

    If you are still having issues,  please capture and attach a BLE air sniffer log showing the non-paired iPhone 7 connection.

    Best wishes

  • Hello ,

    Thanks, it really helped a lot.
    Earlier we added the DLE feature disable only.
    Now we modified DLE disable with TX-RX octet count and related timing also as you suggested.
    Now the connection seems stable, we are able to connect 3 iPhone 7 devices.
    Data transfer reliability and increase the connections (to 5) testing is in-progress.
    We will update you asap once it completes.

    Could you please clarify this: If we disable DLE, is it possible to use more than 20bytes data transfer via NOTIFY method?

  • Hi Arun,

    With the NOTIFY method, the concept is to transmit several packets in one connection event to transmit more data per connection event/interval. Using this method you can transmit more than 20 bytes per connection event, but still only 20 bytes per packet.

    (Note that iPhone limits the number of packets per connection event, which undermines this method.)
  • Hello Arun,

    Thank you for the update and confirming likewise that DLE is truly disabled.

    You can send ATT_MTU-3 bytes in a Notification. By default ATT_MTU is 23, but can be negotiated to a larger value using the Exchange MTU GATT procedure. Please see the "Configuring for Larger MTU Values" section in the BLE SW User's Guide for more details.

    Best wishes