Part Number: BOOST-CC2564MODA
Other Parts Discussed in Thread: CC2564MODA
Hardware/Software Configuration:
- Module: CC2564MODA (CC2564B chip)
- Service Pack: V1.8 (CC256XMSPV1.8)
- Host MCU: TM4C123GXL (ARM Cortex-M4)
- Bluetooth Stack: Bluetopia (TI official stack)
- Transport: HCITR with cpHCILL_RTS_CTS flow control
- Profile: SPP (Serial Port Profile) - Slave role
- Power Mode: SNIFF enabled (power-saving mode)
Problem Description:
The CC2564MODA controller fails to generate Disconnection Complete Event When the remote device (Android/iOS phone) stops responding during an idle SPP connection in SNIFF mode. This occurs reliably after 4-5 minutes of idle time on a connected mobile device when the mobile device enters power-saving states (screen lock, app backgrounded, or the OS terminates Bluetooth background activity).
Expected Behavior:
- The remote device stops responding
- Link Supervision Timeout (LSTO) counter decrements to 0
- Controller generates
Disconnection Complete Eventwith reason 0x08 (Connection Timeout) - The host application receives a disconnect notification
- Clean disconnect and ready for a new connection
Actual Behavior:
- The remote device stops responding
- LSTO counter reaches 0
- No disconnect event generated
- Connection remains in "zombie" state:
- Controller reports "connected."
- Zero data throughput (Rx/Tx bps = 0)
- The host believes the connection is active
- Eventually, all Bluetopia API calls return
BTPS_ERROR_HCI_DRIVER_ERROR (-14) - Only a hardware reset (nSHUTD pin toggle) can recover
I captured detailed logs using TI's Bluetooth Logger tool (an FTDI adapter connected to the TX_DBG pin at 115200 baud) during the failure scenario.
Hardware reset on detection: - Toggle nSHUTD pin LOW → wait 100ms → HIGH - Reinitialize entire Bluetopia stack - Only method that recovers from zombie state
Note: Even `HCI_Reset()` commands fail once in this state (return error -14).
Why doesn't the disconnect event generate?
Is this a known bug in Service Pack V1.8? - If yes, is there a firmware patch available? - Are there workarounds at the controller configuration level?
Is there a way to force disconnect detection? - HCI vendor commands to query link state? - Configuration to make LSTO more reliable?
Attachments:
I have detailed TI Logger captures showing the complete failure sequence SPPstress_issue_16Feb2025.txt Logger_logs.txt Main.c.txt SPPDemo.c.txt