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.

CC2652P: How does Z-Stack choose the channel for network formation?

Part Number: CC2652P
Other Parts Discussed in Thread: Z-STACK

A customer is using CC2652P as ZNP, they found that sometimes in noisy network environment the routers have difficulty joining the network formed by the CC2652 ZNP. The ZNP uses a primary channel mask of channel 11/15/20/25, and it seems channel 15 is always chosen for the network formation, despite of channel 15 actually being the busiest channel in their test environment (which has the most PAN IDs active). CC2652 was reset to factory before starting the network again.

I have 2 questions regarding to this issue:

1. What is the strategy Z-Stack uses for the channel selection for network formation? According to the user’s guide, the coordinator will create the network on a channel with the least amount of noise, how does the coordinator detect the noise and decide the channel to use exactly? 

2. The customer wants to perform a manual channel scan before forming the network. NLME_EDScanRequest and NLME_EDScanConfirm seem to be the right APIs for this job. Where is the place that NLME_EDScanConfirm is pushed to the application layer so that users can process the scan result?

Best regards,


  • Hello Shuyang,

    1. I see the Z-Stack Overview section you are referring to from the Z-Stack User's Guide, I will take action to change that description as it does not appear to be correct.  Z-Stack first runs energy detection to ensure that each channel in the mask list passes the MAX_ED_THRESHOLD threshold, then from the remaining channels the one with the least number of networks is chosen for the new network start-up.  I would be interested to see the customer’s findings from their test environment to further understand whether their channel selection is not acting in accordance with the process I’ve described.

    2. ZDNwkMgr_Init shows that pZDNwkMgr_EDScanConfirmCB = ZDNwkMgr_EDScanConfirmCB; which leads to ZDNwkMgr_ProcessEDScanConfirm -> ZDNwkMgr_BuildAndSendUpdateNotify -> ZDP_MgmtNwkUpdateNotify which can then be detected by the zstackmsg_CmdIDs_ZDO_MGMT_NWK_UPDATE_NOTIFY case from zcl[application]_processZStackMsgs in zcl_[application].c


  • Hi Ryan,

    Does the energyDetectList in ZDNwkMgr_EDScanConfirm_t represents the ED value from 802.15.4 specs? In other words, does a higher energyDetectList value mean the channel is busier? I found the definition of ED value in 802.15.4 specs as below, does the energyDetectList value equals to the macEd in the picture?

    Also, does the LBT RSSI Threshold value in macPibDefaults mean the ED value or a value in dBm?



  • Hi Shuyang,

    A higher ED value means the channel is busier.  Technically ED = (255 *(rssiDbm+90))/85 based on the CC2652P sensitivity values, this is the only conversion I can find in Z-Stack for energy detect measurements.    The LBT RSSI Threshold value in macPibDefaults represents a value in dBm.