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.

CC2564C becomes unresponsive when using a whitelist and connecting with a remote central device.

Other Parts Discussed in Thread: CC2564C, CC2564

I'm working on a project that requires BLE in dual-role with multiple peripherals.  My device can be a peripheral to a computer and central device to many peripherals.  I'm using the Bluekitchen stack and a STM32L4 processor with TI cc2564c. 

I've run into a problem where the TI chip will become unresponsive after trying to connect with a computer.  Interestingly it works the first time, but fails after disconnection and reconnecting a 2nd time.  The only way to connect again is to reboot the whole system.   

If i disable the whitelist that is managing the connections to my peripherals,  the problem does not occur.  I can reconnect multiple times without problems.   There seems to be a problem with using the whitelist in combination with connecting to a central device. 

I've tried relaxing some of the connection and advertising parameters but have not found anything that resolves this issue.

Thanks.

Note:  The filtered select for a forum when entering the bluetooth chip cc2564c was WIFI rather than Bluetooth. 

  • Hi there

    I am able to reproduce this deterministically running BTstack on macOS with the CC2564C with Init script v1.5

    Steps to reproduce: first start a connection to a non-existing device  in Central role using Whitelist. Then, enable advertising and connect from another device, e.g. smartphone or PC. Verify that the connection works fine the first time. After disconnect from the remote device and connecting from it again the controller seems to crash/hang after the connection was established. There are no further HCI events, not even a HCI Disconnected when the remove disconnects again.

    Please have a look at the attached HCI packet log for Wireshark here: https://bluekitchen-gmbh.com/files/intox/peripheral-connections-while-connect-with-whitelist.pklg

    Other observation: if we start & cancel the connect with whitelist while the CC2564C is in Peripherl role to the remote device, it works as expected. Therefore, it looks like either set-up or close of a connection in Peripheral mode while a connect with whitelist is active causes the incorrect behaviour.

    To reproduce on macOS/Linux:

    - git clone github.com/.../btstack.git

    - replace example/gatt_counter.c with the following: https://bluekitchen-gmbh.com/files/intox/gatt_counter.c

    - cd port/posix-h4

    - compile and run the modified gatt_counter example as explained in the README: https://github.com/bluekitchen/btstack/blob/master/port/posix-h4/README.md

    - connect from remote device, disconnect, connect again

    - the HCI log will be in /tmp/hci_dump.pklg

     Is this known/expected behaviour? Is there a newer init script available?

    Thanks,

     Matthias Ringwald, BlueKitchen GmbH

  • Hello,

    I will try to replicate the issue and follow back next week.

    Thanks,

    Rogelio

  • Hello,

    I was not able to recreate the issue using the bluetopia stack and using the sppledemo.

    My Test Case was using 3 cc2564c

    One was a Peripheral (0xC8DF8425643A), the other was Central/Peripheral (0xC8DF8425682B) that used whitelist, and the third a central(0xC8DF84256424).

    The series of steps went as followed.

    * Peripheral advertises 

    *Cen/Per connects to Peripheral with whitelist enabled

    *Data gets send between them

    *Cen/Per advertises

    *Central connects to Cen/Per

    *Data gets send between Cen/Per and Central

    *Data gets send between Cen/Per and Peripheral

    *Central Disconnects from Cen/Per

    *Cen/Per advertises

    *Central connects to Cen/Per

    *Data gets send between Cen/Per and Central

    *Data gets send between Cen/Per and Peripheral

    The device did not get hung up when acting as a peripheral and the central reconnected.

    I am including the UART Logs as well as the FW logs of (Cen/Per) so you can see the exact HCI commands that were sent.

    If you could send me FW logs through logger using the Debug pin we could try to find the differences.

    Bluetooth Stack ID: 1
    LOW ENERGY Support initialized.
    Device Chipset: 4.2
    BTPS Version  : 5.1.1.0
    PLAT Version  : 1.0
    App Name      : SPPLEDemo
    App Version   : 0.6
    Project Type  : 6
    FW Version    : 12.24
    Local BD_ADDR: 0xC8DF8425643A
    
    ******************************************************************
    * Command Options: Server, Client, Help                          *
    ******************************************************************
    
    SPP+LE>
    SPP+LE>
    SPP+LE>server
    
    ******************************************************************
    * Command Options General: Help, GetLocalAddress, SetBaudRate    *
    *                          Quit,                                 *
    * Command Options BR/EDR:  Inquiry, DisplayInquiryList, Pair,    *
    *                          EndPairing, PINCodeResponse,          *
    *                          PassKeyResponse,                      *
    *                          UserConfirmationResponse,             *
    *                          SetDiscoverabilityMode,               *
    *                          SetConnectabilityMode,                *
    *                          SetPairabilityMode,                   *
    *                          ChangeSimplePairingParameters,        *
    *                          GetLocalName, SetLocalName,           *
    *                          GetClassOfDevice, SetClassOfDevice,   *
    *                          GetRemoteName, SniffMode,             *
    *                          ExitSniffMode, Open, Close, Read,     *
    *                          Write, GetConfigParams,               *
    *                          SetConfigParams, GetQueueParams,      *
    *                          SetQueueParams, Loopback,             *
    *                          DisplayRawModeData, AutomaticReadMode,*
    *                          CBSend                                *
    * Command Options GAPLE:   SetDiscoverabilityMode,               *
    *                          SetConnectabilityMode,                *
    *                          SetPairabilityMode,                   *
    *                          ChangePairingParameters,              *
    *                          SetRandomAddress,                     *
    *                          ResolveRemoteAddress,                 *
    *                          AdvertiseLE, StartScanning,           *
    *                          StopScanning, ConnectLE,              *
    *                          DisconnectLE, CancelConnectLE,        *
    *                          PairLE, UnPairLE, LEPasskeyResponse,  *
    *                          QueryEncryptionMode, SetPasskey,      *
    *                          DiscoverGAPS, GetLocalName,           *
    *                          SetLocalName, GetLERemoteName,        *
    *                          LEUserConfirmationResponse,           *
    *                          EnableSCOnly,                         *
    *                          RegenerateP256LocalKeys,              *
    *                          SCGenerateOOBLocalParams,             *
    *                          SetLocalAppearance,                   *
    *                          GetLocalAppearance,                   *
    *                          GetRemoteAppearance,                  *
    * Command Options SPPLE:   DiscoverSPPLE, RegisterSPPLE, LESend, *
    *                          ConfigureSPPLE, LERead, Loopback,     *
    *                          DisplayRawModeData, AutomaticReadMode *
    ******************************************************************
    
    SPP+LE>registerspple 1
    Successfully registered SPPLE Service.
    
    SPP+LE>
    SPP+LE>advertisele 1
       GAP_LE_Advertising_Enable success.
    
    SPP+LE>
    etLE_Connection_Complete with size 16.
       Status:       0x00.
       Role:         Slave.
       Address Type: Public.
       BD_ADDR:      0xC8DF8425682B.
    
    SPP+LE>
    etGATT_Connection_Device_Connection with size 16:
       Connection ID:   1.
       Connection Type: LE.
       Remote Device:   0xC8DF8425682B.
       Connection MTU:  23.
    
    SPP+LE>
    SPP+LE>
    SPP+LE>
    Data Indication Event, Connection ID 1, Received 100 bytes.
    
    SPP+LE>leread C8DF8425682B
    Read: 100.
    0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
    
    SPP+LE>
    Data Indication Event, Connection ID 1, Received 50 bytes.
    
    SPP+LE>leread C8DF8425682B
    Read: 50.
    01234567890123456789012345678901234567890123456789
    
    SPP+LE>
    
     
    OpenStack().
    Bluetooth Stack ID: 1
    LOW ENERGY Support initialized.
    Device Chipset: 4.2
    BTPS Version  : 5.1.1.0
    PLAT Version  : 1.0
    App Name      : SPPLEDemo
    App Version   : 0.6
    Project Type  : 6
    FW Version    : 12.24
    Local BD_ADDR: 0xC8DF84256424
    
    ******************************************************************
    * Command Options: Server, Client, Help                          *
    ******************************************************************
    
    SPP+LE>
    SPP+LE>
    SPP+LE>client
    
    ******************************************************************
    * Command Options General: Help, GetLocalAddress, SetBaudRate    *
    *                          Quit,                                 *
    * Command Options BR/EDR:  Inquiry, DisplayInquiryList, Pair,    *
    *                          EndPairing, PINCodeResponse,          *
    *                          PassKeyResponse,                      *
    *                          UserConfirmationResponse,             *
    *                          SetDiscoverabilityMode,               *
    *                          SetConnectabilityMode,                *
    *                          SetPairabilityMode,                   *
    *                          ChangeSimplePairingParameters,        *
    *                          GetLocalName, SetLocalName,           *
    *                          GetClassOfDevice, SetClassOfDevice,   *
    *                          GetRemoteName, SniffMode,             *
    *                          ExitSniffMode, Open, Close, Read,     *
    *                          Write, GetConfigParams,               *
    *                          SetConfigParams, GetQueueParams,      *
    *                          DisplayRawModeData, AutomaticReadMode,*
    *                          SetQueueParams, Loopback,             *
    *                          CBSend                                *
    * Command Options GAPLE:   SetDiscoverabilityMode,               *
    *                          SetConnectabilityMode,                *
    *                          SetPairabilityMode,                   *
    *                          ChangePairingParameters,              *
    *                          SetRandomAddress,                     *
    *                          ResolveRemoteAddress,                 *
    *                          AdvertiseLE, StartScanning,           *
    *                          StopScanning, ConnectLE,              *
    *                          DisconnectLE, CancelConnectLE,        *
    *                          PairLE, UnPairLE, LEPasskeyResponse,  *
    *                          QueryEncryptionMode, SetPasskey,      *
    *                          DiscoverGAPS, GetLocalName,           *
    *                          SetLocalName, GetLERemoteName,        *
    *                          LEUserConfirmationResponse,           *
    *                          EnableSCOnly,                         *
    *                          RegenerateP256LocalKeys,              *
    *                          SCGenerateOOBLocalParams,             *
    *                          SetLocalAppearance,                   *
    *                          GetLocalAppearance,                   *
    *                          GetRemoteAppearance,                  *
    * Command Options SPPLE:   DiscoverSPPLE, RegisterSPPLE, LESend, *
    *                          ConfigureSPPLE, LERead, Loopback,     *
    *                          DisplayRawModeData, AutomaticReadMode *
    ******************************************************************
    
    SPP+LE>connectle C8DF8425682B
    Connection Request successful.
    
    SPP+LE>
    etLE_Connection_Complete with size 16.
       Status:       0x00.
       Role:         Master.
       Address Type: Public.
       BD_ADDR:      0xC8DF8425682B.
    
    SPP+LE>
    etGATT_Connection_Device_Connection with size 16:
       Connection ID:   1.
       Connection Type: LE.
       Remote Device:   0xC8DF8425682B.
       Connection MTU:  23.
    
    SPP+LE>
    Exchange MTU Response.
    Connection ID:   1.
    Transaction ID:  1.
    Connection Type: LE.
    BD_ADDR:         0xC8DF8425682B.
    MTU:             131.
    
    SPP+LE>
    SPP+LE>
    SPP+LE>discoverspple C8DF8425682B
    GATT_Start_Service_Discovery success.
    
    SPP+LE>
    Service 0x000C - 0x0016, UUID: 14839AC47D7E415C9A42167340CF2339.
    
    
    SPP+LE>
    Service Discovery Operation Complete, Status 0x00.
    
    SPP+LE>configurespple C8DF8425682B
    SPPLE Service found on remote device, attempting to read Transmit Credits, and configured CCCDs.
    
    SPP+LE>
    Write Response.
    Connection ID:   1.
    Transaction ID:  10.
    Connection Type: LE.
    BD_ADDR:         0xC8DF8425682B.
    Bytes Written:   2.
    
    SPP+LE>
    Write Response.
    Connection ID:   1.
    Transaction ID:  11.
    Connection Type: LE.
    BD_ADDR:         0xC8DF8425682B.
    Bytes Written:   2.
    
    SPP+LE>write
    Usage: Write [SerialPortID].
    .
    Function Error.
    
    SPP+LE>lewrite C8DF8425682B 100
    Invalid Command: LEWRITE.
    
    SPP+LE>lesend C8DF8425682B 100
    
    Send Complete, Sent 100.
    
    SPP+LE>
    SPP+LE>disconnectle C8DF8425682B
    Disconnect Request successful.
    
    SPP+LE>
    etGATT_Connection_Device_Disconnection with size 12:
       Connection ID:   1.
       Connection Type: LE.
       Remote Device:   0xC8DF8425682B.
    
    SPP+LE>
    etLE_Disconnection_Complete with size 9.
       Status: 0x00.
       Reason: 0x16.
       BD_ADDR: 0xC8DF8425682B.
    
    SPP+LE>coonne
    Invalid Command: COONNE.
    
    SPP+LE>connectle C8DF8425682B
    Connection Request successful.
    
    SPP+LE>
    etLE_Connection_Complete with size 16.
       Status:       0x00.
       Role:         Master.
       Address Type: Public.
       BD_ADDR:      0xC8DF8425682B.
    
    SPP+LE>
    etGATT_Connection_Device_Connection with size 16:
       Connection ID:   2.
       Connection Type: LE.
       Remote Device:   0xC8DF8425682B.
       Connection MTU:  23.
    
    SPP+LE>
    Exchange MTU Response.
    Connection ID:   2.
    Transaction ID:  12.
    Connection Type: LE.
    BD_ADDR:         0xC8DF8425682B.
    MTU:             131.
    
    SPP+LE>
    SPP+LE>
    SPP+LE>discoverspple C8DF8425682B
    GATT_Start_Service_Discovery success.
    
    SPP+LE>
    Service 0x000C - 0x0016, UUID: 14839AC47D7E415C9A42167340CF2339.
    
    
    SPP+LE>
    Service Discovery Operation Complete, Status 0x00.
    
    SPP+LE>configurespple C8DF8425682B
    SPPLE Service found on remote device, attempting to read Transmit Credits, and configured CCCDs.
    
    SPP+LE>
    Write Response.
    Connection ID:   2.
    Transaction ID:  21.
    Connection Type: LE.
    BD_ADDR:         0xC8DF8425682B.
    Bytes Written:   2.
    
    SPP+LE>
    Write Response.
    Connection ID:   2.
    Transaction ID:  22.
    Connection Type: LE.
    BD_ADDR:         0xC8DF8425682B.
    Bytes Written:   2.
    
    SPP+LE>le se
    Invalid Command: LE.
    
    SPP+LE>lesend C8DF8425682B 25
    
    Send Complete, Sent 25.
    
    SPP+LE>
    SPP+LE>
    Data Indication Event, Connection ID 2, Received 50 bytes.
    
    SPP+LE>leread C8DF8425682B
    Read: 50.
    01234567890123456789012345678901234567890123456789
    
    SPP+LE>
    
    OpenStack().
    Bluetooth Stack ID: 1
    LOW ENERGY Support initialized.
    Device Chipset: 4.2
    BTPS Version  : 5.1.1.0
    PLAT Version  : 1.0
    App Name      : SPPLEDemo
    App Version   : 0.6
    Project Type  : 6
    FW Version    : 12.24
    Local BD_ADDR: 0xC8DF8425682B
    
    ******************************************************************
    * Command Options: Server, Client, Help                          *
    ******************************************************************
    
    SPP+LE>
    SPP+LE>
    SPP+LE>
    
    OpenStack().
    Bluetooth Stack ID: 1
    LOW ENERGY Support initialized.
    Device Chipset: 4.2
    BTPS Version  : 5.1.1.0
    PLAT Version  : 1.0
    App Name      : SPPLEDemo
    App Version   : 0.6
    Project Type  : 6
    FW Version    : 12.24
    Local BD_ADDR: 0xC8DF8425682B
    
    ******************************************************************
    * Command Options: Server, Client, Help                          *
    ******************************************************************
    
    SPP+LE>
    SPP+LE>
    SPP+LE>client
    
    ******************************************************************
    * Command Options General: Help, GetLocalAddress, SetBaudRate    *
    *                          Quit,                                 *
    * Command Options BR/EDR:  Inquiry, DisplayInquiryList, Pair,    *
    *                          EndPairing, PINCodeResponse,          *
    *                          PassKeyResponse,                      *
    *                          UserConfirmationResponse,             *
    *                          SetDiscoverabilityMode,               *
    *                          SetConnectabilityMode,                *
    *                          SetPairabilityMode,                   *
    *                          ChangeSimplePairingParameters,        *
    *                          GetLocalName, SetLocalName,           *
    *                          GetClassOfDevice, SetClassOfDevice,   *
    *                          GetRemoteName, SniffMode,             *
    *                          ExitSniffMode, Open, Close, Read,     *
    *                          Write, GetConfigParams,               *
    *                          SetConfigParams, GetQueueParams,      *
    *                          DisplayRawModeData, AutomaticReadMode,*
    *                          SetQueueParams, Loopback,             *
    *                          CBSend                                *
    * Command Options GAPLE:   SetDiscoverabilityMode,               *
    *                          SetConnectabilityMode,                *
    *                          SetPairabilityMode,                   *
    *                          ChangePairingParameters,              *
    *                          SetRandomAddress,                     *
    *                          ResolveRemoteAddress,                 *
    *                          AdvertiseLE, StartScanning,           *
    *                          StopScanning, ConnectLE,              *
    *                          DisconnectLE, CancelConnectLE,        *
    *                          PairLE, UnPairLE, LEPasskeyResponse,  *
    *                          QueryEncryptionMode, SetPasskey,      *
    *                          DiscoverGAPS, GetLocalName,           *
    *                          SetLocalName, GetLERemoteName,        *
    *                          LEUserConfirmationResponse,           *
    *                          EnableSCOnly,                         *
    *                          RegenerateP256LocalKeys,              *
    *                          SCGenerateOOBLocalParams,             *
    *                          SetLocalAppearance,                   *
    *                          GetLocalAppearance,                   *
    *                          GetRemoteAppearance,                  *
    * Command Options SPPLE:   DiscoverSPPLE, RegisterSPPLE, LESend, *
    *                          ConfigureSPPLE, LERead, Loopback,     *
    *                          DisplayRawModeData, AutomaticReadMode *
    ******************************************************************
    
    SPP+LE>coo
    Invalid Command: COO.
    
    SPP+LE>connectle C8DF8425643A
    Connection Request successful.
    
    SPP+LE>
    etLE_Connection_Complete with size 16.
       Status:       0x00.
       Role:         Master.
       Address Type: Public.
       BD_ADDR:      0xC8DF8425643A.
    
    SPP+LE>
    etGATT_Connection_Device_Connection with size 16:
       Connection ID:   1.
       Connection Type: LE.
       Remote Device:   0xC8DF8425643A.
       Connection MTU:  23.
    
    SPP+LE>
    Exchange MTU Response.
    Connection ID:   1.
    Transaction ID:  1.
    Connection Type: LE.
    BD_ADDR:         0xC8DF8425643A.
    MTU:             131.
    
    SPP+LE>
    SPP+LE>
    SPP+LE>discoverspple C8DF8425643A
    GATT_Start_Service_Discovery success.
    
    SPP+LE>
    Service 0x000C - 0x0016, UUID: 14839AC47D7E415C9A42167340CF2339.
    
    
    SPP+LE>
    Service Discovery Operation Complete, Status 0x00.
    
    SPP+LE>configurespple  C8DF8425643A
    Usage: ConfigureSPPLE [BD_ADDR].
    Function Error.
    
    SPP+LE>configurespple C8DF8425643A
    SPPLE Service found on remote device, attempting to read Transmit Credits, and configured CCCDs.
    
    SPP+LE>
    Write Response.
    Connection ID:   1.
    Transaction ID:  10.
    Connection Type: LE.
    BD_ADDR:         0xC8DF8425643A.
    Bytes Written:   2.
    
    SPP+LE>
    Write Response.
    Connection ID:   1.
    Transaction ID:  11.
    Connection Type: LE.
    BD_ADDR:         0xC8DF8425643A.
    Bytes Written:   2.
    
    SPP+LE>lesend C8DF8425643A 100
    
    Send Complete, Sent 100.
    
    SPP+LE>
    SPP+LE>quit
    
    ******************************************************************
    * Command Options: Server, Client, Help                          *
    ******************************************************************
    
    SPP+LE>server
    
    ******************************************************************
    * Command Options General: Help, GetLocalAddress, SetBaudRate    *
    *                          Quit,                                 *
    * Command Options BR/EDR:  Inquiry, DisplayInquiryList, Pair,    *
    *                          EndPairing, PINCodeResponse,          *
    *                          PassKeyResponse,                      *
    *                          UserConfirmationResponse,             *
    *                          SetDiscoverabilityMode,               *
    *                          SetConnectabilityMode,                *
    *                          SetPairabilityMode,                   *
    *                          ChangeSimplePairingParameters,        *
    *                          GetLocalName, SetLocalName,           *
    *                          GetClassOfDevice, SetClassOfDevice,   *
    *                          GetRemoteName, SniffMode,             *
    *                          ExitSniffMode, Open, Close, Read,     *
    *                          Write, GetConfigParams,               *
    *                          SetConfigParams, GetQueueParams,      *
    *                          SetQueueParams, Loopback,             *
    *                          DisplayRawModeData, AutomaticReadMode,*
    *                          CBSend                                *
    * Command Options GAPLE:   SetDiscoverabilityMode,               *
    *                          SetConnectabilityMode,                *
    *                          SetPairabilityMode,                   *
    *                          ChangePairingParameters,              *
    *                          SetRandomAddress,                     *
    *                          ResolveRemoteAddress,                 *
    *                          AdvertiseLE, StartScanning,           *
    *                          StopScanning, ConnectLE,              *
    *                          DisconnectLE, CancelConnectLE,        *
    *                          PairLE, UnPairLE, LEPasskeyResponse,  *
    *                          QueryEncryptionMode, SetPasskey,      *
    *                          DiscoverGAPS, GetLocalName,           *
    *                          SetLocalName, GetLERemoteName,        *
    *                          LEUserConfirmationResponse,           *
    *                          EnableSCOnly,                         *
    *                          RegenerateP256LocalKeys,              *
    *                          SCGenerateOOBLocalParams,             *
    *                          SetLocalAppearance,                   *
    *                          GetLocalAppearance,                   *
    *                          GetRemoteAppearance,                  *
    * Command Options SPPLE:   DiscoverSPPLE, RegisterSPPLE, LESend, *
    *                          ConfigureSPPLE, LERead, Loopback,     *
    *                          DisplayRawModeData, AutomaticReadMode *
    ******************************************************************
    
    SPP+LE>advertisele1
    Invalid Command: ADVERTISELE1.
    
    SPP+LE>rg
    Invalid Command: RG.
    
    SPP+LE>registerspple
    Successfully registered SPPLE Service.
    
    SPP+LE>
    SPP+LE>advertisele 1
       GAP_LE_Advertising_Enable success.
    
    SPP+LE>
    etLE_Connection_Complete with size 16.
       Status:       0x00.
       Role:         Slave.
       Address Type: Public.
       BD_ADDR:      0xC8DF84256424.
    
    SPP+LE>
    etGATT_Connection_Device_Connection with size 16:
       Connection ID:   2.
       Connection Type: LE.
       Remote Device:   0xC8DF84256424.
       Connection MTU:  23.
    
    SPP+LE>
    SPP+LE>
    SPP+LE>
    Data Indication Event, Connection ID 2, Received 100 bytes.
    
    SPP+LE>leread C8DF84256424
    Read: 100.
    0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
    
    SPP+LE>lewr
    Invalid Command: LEWR.
    
    SPP+LE>lesend C8DF8425643A 50
    
    Send Complete, Sent 50.
    
    SPP+LE>
    SPP+LE>
    etGATT_Connection_Device_Disconnection with size 12:
       Connection ID:   2.
       Connection Type: LE.
       Remote Device:   0xC8DF84256424.
    
    SPP+LE>
    etLE_Disconnection_Complete with size 9.
       Status: 0x00.
       Reason: 0x13.
       BD_ADDR: 0xC8DF84256424.
    
    SPP+LE>advertisele 1
       GAP_LE_Advertising_Enable success.
    
    SPP+LE>
    etLE_Connection_Complete with size 16.
       Status:       0x00.
       Role:         Slave.
       Address Type: Public.
       BD_ADDR:      0xC8DF84256424.
    
    SPP+LE>
    etGATT_Connection_Device_Connection with size 16:
       Connection ID:   3.
       Connection Type: LE.
       Remote Device:   0xC8DF84256424.
       Connection MTU:  23.
    
    SPP+LE>
    SPP+LE>
    SPP+LE>
    Data Indication Event, Connection ID 3, Received 25 bytes.
    
    SPP+LE>C8DF8425682B
    Invalid Command: C8DF8425682B.
    
    SPP+LE>leread C8DF84256424
    Read: 25.
    0123456789012345678901234
    
    SPP+LE>lesend C8DF84256424 50
    
    Send Complete, Sent 50.
    
    SPP+LE>
    SPP+LE>
    
      https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/538/whitelist-test.lgr

    To take the lgr logs please follow this guide.

    https://www.ti.com/lit/ug/swau058d/swau058d.pdf

    https://www.ti.com/tool/WILINK-BT_WIFI-WIRELESS_TOOLS 

    Best,

    Rogelio

  • HI Rogelio. Thanks for setting up a similar environment to check our issue report and sharing detailed steps.

    The issue we have observed happens when the CC2564C is concurrently trying to connect to a list of known devices (e.g. bonded LE HID keyboards) and there's an incoming connection which puts it into the Peripheral role.

    Could you remove the Peripheral (0xC8DF8425643A) from your setup, and redo your steps more or less the same as before please. This would be:

    *Cen/Per starts to connects to Peripheral with whitelist enabled (as there's is no Peripheral there won't be a connection during this test)

    *Cen/Per advertises

    *Central connects to Cen/Per

    *Data gets send between Cen/Per and Central

    *Central Disconnects from Cen/Per

    *Cen/Per advertises

    *Central connects to Cen/Per

    *Data gets send between Cen/Per and Central

    The last step fails in our tests.

    Maybe a quick motivation: the device can connect to peripheral devices such as LE HID Keyboards and it should also be possible to connect to it from a mobile phone app via LE. As the LE HID Keyboard isn't always used, the device adds all bonded peripheral device into the whitelist and starts a connect with whitelist operation.

    Thanks

     Matthias

  • I see,

    I will try test following this new order of events.

    Best,

    Rogelio

  • Hello,

    I have been able to replicate the issue with the new steps.

    From the logs it seems Central is terminating the connection from the view of Cen/Per. I will need to look more into the issue to fully uderstand. It seems as though when advertising and whitelist is enabled the peripheral will not respond to the central... Looking more into the issue i found the following thread 

    https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/377682/cc2541-hci-errors-0x3d-and-0x3e

    Does your Central device also fail to connect due to error Falied to establish connection (3E)?

    Best,

    Rogelio

  • Hi. Thanks for reproducing the issue. 

    In our tests, the CC2564C seems to have crashed - we don't get any further HCI events, not even the HCI Disconnected Event when the remote Central is e.g. turned off.

    The  issue you've linked to might be similar in behaviour, but it concerns the LE-only CC254x which is quite different from the CC2564 as far as I know.

    Best regards,

     Matthias

  • Any updates on this? 

    Thanks.


  • I've found that this issue occurs even without using a Whitelist.  Just having an open connection to one peripheral will also cause the chip to become unresponsive.   Again, it works the first time, but fails on the 2nd.  

    Steps:

    *Cen/Per starts to connects to Peripheral  (as there's is no Peripheral there won't be a connection during this test)

    *Cen/Per advertises

    *Central connects to Cen/Per

    *Data gets send between Cen/Per and Central

    *Central Disconnects from Cen/Per

    *Cen/Per advertises

    *Central connects to Cen/Per

    *Data gets send between Cen/Per and Central

    The last step fails in our tests.


    If the peripheral successfully connects, then my device can connect/reconnect to the Central device without issue. It only happens when the device is scanning for a peripheral.

    Over the air sniffing shows the following on the 2nd attempt: