CC2745R10-Q1: ChannelSounding failed to start

Part Number: CC2745R10-Q1


1. Use SDK simplelink_lowpower_f3_sdk_9_11_01_19
2. In the keynode demo, set it to connect to the carnode as the central node, pair and encrypt, then start CS_SecurityEnable.
3. Using the car node demo, set the car node's role to Reflector and the keynode to Initor.
4. After the carnode receives the CS_SECURITY_ENABLE_COMPLETE_EVENT event, it will use CS_ReadRemoteSupportedCapabilities.
5. After receiving the CS_READ_REMOTE_SUPPORTED_CAPABILITIES_COMPLETE_EVENT event, the carnode sets CS_SetDefaultSettings and CS_CreateConfig.
6. After the carnode receives the CS_CONFIG_COMPLETE_EVENT event, it sets CS_SetProcedureParameters and CS_ProcedureEnable.
7. At this point, CS ranging can run. After ranging ends, I want to use the original parameters to directly call CS_ProcedureEnable to start the next ranging operation. CS_ProcedureEnable returns a success status.
However, the CS_PROCEDURE_ENABLE_COMPLETE_EVENT event returns procEnableCompleteEvt.csStatus, which does not indicate success. procEnableCompleteEvt.csStatus = 0x32(RCL_CMD_BLE_CS_SUBEVENT_RESULTS_CONTINUE_OPCODE).
(If I execute the two operations CS_SetProcedureParameters + CS_ProcedureEnable every time after executing CS once, then CS will start successfully.)

Questions:

1. Why does CS fail to start even after the previous round of CS ranging has finished, and I successfully call CS_ProcedureEnable, but the CS_PROCEDURE_ENABLE_COMPLETE_EVENT event returns procEnableCompleteEvt.csStatus = 0X32?

2. When I capture the sniffer log, the carnode, acting as the Reflector, requests to start CS and sends an LL_CS_Request. The keynode, acting as the Initor, does not return an LLCP_CS_Response packet to the Reflector. I believe this is a problem.screenshot-20251029-142326.png

  • Hello Chao, 

    I will provide an answer by Friday (10/29) this week. I apologize for the delay. 

    Thanks, 
    Isaac

  • Hello Chao, 

    I appreciate the detailed explanation of the problem you are seeing. I will provide my responses below: 

    1. For Channel Sounding procedure to begin, you need to set the procedure parameters, before you enable the channel sounding procedure. The parameters will then be sent in the CS Request LLCP. This is not always necessary when you are using the Procedure Repetition feature within the CS procedure parameters. For this you would set .maxProcedureCount, .minProcedureInterval, and .maxProcedureInterval within the application. Max Procedure Count indicates how many procedures you would like to execute in a row (0 yields indefinite CS procedures). The min and max procedure interval indicate the minimum and maximum number of connection events between each procedure. 

    The status from procEnableCompleteEvt.csStatus is not necessarily incorrect, the RCL just believes this is another procedure enabled by the procedure repetitions. If you are executing one procedure at a time (.maxProcedureCount = 1), you will need to set the CS procedure parameters before each procedure start. 

    2. To clarify, the key node is the central initiator, and the car node is the peripheral reflector? If this is the case, then channel sounding is operating as expected. The if the Central node of the connection receives either a CS REQ LLCP or a CS RSP LLCP, then the central will respond with a CS IND LLCP. See Bluetooth LE Version 6 Specification in section Vol 6, Part B, Section 5.1.26. 

    Let me know if you have any questions. 

    Thanks,
    Isaac