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.

LAUNCHXL-CC26X2R1: Zigbee channel question

Part Number: LAUNCHXL-CC26X2R1
Other Parts Discussed in Thread: Z-STACK

Hi TI team,

Now, we used the default channel of 11 of Zigbee for End-Device and Coordinator. 

According to our testing, we found error rate was lower on the channel of 26 compare to the channel of 11.

I wonder whether we can change to the channel of 26 or you will suggest us to keep using the default channel of 11?

Another question:

Whether I also need to change to the channel of 26 in my Coordinator if I change to the channel of 26 in my End-Device? I think I need to change both for same channel. 

Thanks

  • Zigbee channel is decided by Coordinator when it forms Zigbee network. You can set BDB primary channel to the channel you want and Coordinator would use it as first choice to form new Zigbee network.
  • Hi Lawrence,

    You can use any channel from 11 through 26 to form your Zigbee network but it needs to be the same for all network devices. Your ZC will choose the first channel from the f8wconfig.opts DEFAULT_CHANLIST but the end device can scan multiple channels for an open network when attempting to join if necessary. I suggest reading Sections 9 and 13 of the Z-Stack Overview: dev.ti.com/.../z-stack-overview.html

    Regards,
    Ryan
  • Hi YK, Ryan,
    It means my End-Device can change the default channel from 11 to 26 and my Coordinator also need to use the same channel.
    Or I just need to change the default channel(11 to 26) in my End-Device and my Coordinator do not need to be changed(just use the default channel of 11).

    Another Question:
    If I want to change the default channel of End-Device and Coordinator whether I can modify the value of DEFAULT_CHANLIST in the file of f8wconfig.opts?
    Thanks
  • 1. You can let your end device to scan all 11 to 26 channels so it will join coordinator no matter which channel it forms network and permit device to join.
    2. Yes, you can modify the value of DEFAULT_CHANLIST in f8wconfig.opts to change supported channels.
  • Hi YK,
    Now, I just know the End-Device can scan all channels. But I think my End-Device just scan the channel of 11 in example code of zed_switch because the setting of -DDEFAULT_CHANLIST=0x00000800(channel of 11) in the file of f8wconfig.opts.
    And Coordinator will choose the first channel from the f8wconfig.opts DEFAULT_CHANLIST to form zigbee network.

    If I want my End-Device and Coordinator to use the channel of 26. I need to change the value of DEFAULT_CHANLIST(26) in my Coordinator. Then, I also need to make my End-Device support to scan all channels or make it just scan channel of 26. When my End-Device find a Coordinator on the channel of 26 and the Coordinator also permit join, my End-Device will join this Zigbee network.
    1. Do you think my idea is right or I miss something? Could you use the example of changing channel(26) to explain what I need to do for this purpose because I am confusing about this part?

    Another Question:
    2. What source code or files do I modify for end-device to scan all channels(11 to 26)?
    And If I just enable -DDEFAULT_CHANLIST=0x00000800(channel of 11) in the file of f8wconfig.opts in my End-device whether it means my end-device just only scan the channel of 11??

    Thank you very much
  • 1. Yes, your understanding is correct.
    2. You should also modify DEFAULT_CHANLIST in f8wconfig.opts of your End-device. If you set -DDEFAULT_CHANLIST=0x00000800(channel of 11), I remember it would use channel 11 as primary channel to scan and then using other channels as secondary to scan too.
  • Hi YK,
    It means I just need to change the default channel(26) in my Coordinator.
    I have no idea Why I still need to modify theDEFAULT_CHANLIST in f8wconfig.opts in my End-Device. Because you said my End-Device will use the 11 as primary channel to scan. If my End-Device cannot find any Coordinator in this channel(11), It will keep scanning via other channels.
    Or
    I need to modify the primary channel to 26?.

    Thanks
  • No, no need to modify primary channel to 26.
  • HI YK,
    I found I just changed the default channel to 26 on my Coordinator.
    And my End-Device keep the primary channel of 11 and it still could connect to my Coordinator.

    I think it means End-Device will use the primary channel(11) to scan and if it could not find Coordinator. It will use other channels to scan.

    But I wonder whether changing the primary channel to 26 in End-Device can let End-Device more quicker to find the Coordinator?
    Or
    No matter whether I change the primary or not in my End-Device, the speed of finding Coordinator is similar?

    Thanks
  • 1. Yes, if you use set primary channel to 26, end device would scan channel 26 first and other channels after scanning channel 26.
  • Hi YK,
    Noted
    Thanks
  • Hi YK,
    I found if I changed the default channel to 26(Primary channel) in my End-Device and my Coordinator also used the channel of 26 as default channel. My End-Device could not connect to my Coordinator.

    But if I did not change the default channel to 26(I just used the channel of 11 as default channel) in my End-Device and my Coordinator used the channel of 26 as default channel. My End-Device could connect to my Coordinator.

    Could you help me to check it or I do not modify my source code enough for changing the primary channel to 26 in my End-Device? Because I think even I changed the default channel(primary channel) to 26 in my End-Device, my End-Device should be able to connect my Coordinator.

    Thanks

  • I suggest you to use sniffer to check what happens over the air.
  • HI YK,

    Could I know whether I just need to modify the value of DEFAULT_CHANLIST in the file of f8wconfig.h for changing the default channel in my End-Device and my Coordinator that based on the SDK of simplelink_cc26x2_sdk_2_20_00_36?

    Because I tried to capture some packets and I found my coordinator always send out the broadcast packets on channel of 11 but I already change the file of f8wconfig.h for change the default channel to 26 in my Coordinator, I think my Coordinator should send out the broadcast packets on the channel of 26.

    You can refer to the attached file.zigbee_packet_channel_26.zip

    Thanks

  • DEFAULT_CHANLIST will be assigned to primary channel and others are assigned as secondary channels. Device would scan primary channel first and then secondary channels after scanning primary channels.
  • Hi YK,

    I tried to capture some packets and I found my coordinator always send out the broadcast packets on channel of 11 but I already modified the value of DEFAULT_CHANLIST to 26 in the file of f8wconfig.h for change the default channel to 26 in my Coordinator, I think my Coordinator should send out the broadcast packets on the channel of 26.

    I wonder whether I modify enough files or source code??

    You can refer to my attached file.

    Thanks

    8357.zigbee_packet_channel_26.zip

  • You should change DEFAULT_CHANLIST in f8wconfig.opts not f8wconfig.h. After you change it, you should rebuild FW to download to your Coordinator and start a brand new network.
  • Hi YK,
    Because my SDK is simplelink_cc26x2_sdk_2_20_00_36 and simplelink_zigbee_sdk_plugin_2_20_00_06, I could not find the file of f8wconfig.opts in this SDK and I just find the file of f8wconfig.h . Or Could you tell me where I can find the file of f8wconfig.opts in the SDK of simplelink_cc26x2_sdk_2_20_00_36 with simplelink_zigbee_sdk_plugin_2_20_00_06.

    Thanks
  • It is under C:\ti\simplelink_cc26x2_sdk_2_30_00_34\examples\rtos\CC26X2R1_LAUNCHXL\zstack\common\config
  • Hi YK,
    My SDK is simplelink_cc26x2_sdk_2_20_00_36 with simplelink_zigbee_sdk_plugin_2_20_00_06 not the SDK of simplelink_cc26x2_sdk_2_30_00_34.

    Could you tell me where I can find the file of f8wconfig.opts under the SDK of simplelink_cc26x2_sdk_2_20_00_36 with simplelink_zigbee_sdk_plugin_2_20_00_06?

    Thanks
  • I don't install old zigbee sdk plugin so I suggest you to either update to latest SDK or search your zigbee sdk plugin folder to get where it is.
  • I suppose f8wconfig.opts for simplelink_zigbee_sdk_plugin_2_20_00_06 is under C:\ti\simplelink_zigbee_sdk_plugin_2_20_00_06\examples\rtos\CC26X2R1_LAUNCHXL\zstack\common\config

  • Hi YK,
    I found the old SDK of Zigbee plugin also has the file of f8wconfig.h and f8wConfig.opts under the folder simplelink_zigbee_sdk_plugin_2_20_00_06\examples\rtos\CC26X2R1_LAUNCHXL\zstack\common\config.
    But it seems did not use the file of f8WConfig.opts. And I could find the file of f8wconfig.h in CCS but I could not find the file of f8wConfig.opts in CCS

    And I also found some description in the document for the old SDK. It mention that the primary channel is defined in the file of f8wConfig.h.
    I have no idea why I already changed the default channel but it seems not work.

    ...
    9.1 Configuring Channel
    Every Z3.0 device has a primary channel mask configuration (BDB_DEFAULT_PRIMARY_CHANNEL_SET) and a secondary channel mask configuration (BDB_DEFAULT_SECONDARY_CHANNEL_SET). For devices with formation capabilities that were instructed to create a network, these channels masks are used when scanning for a channel with the least amount of noise to create the network on. For devices with joining capabilities that were instructed to join a network, these channel masks are used when scanning for existing networks to join. The device will try first with all the channels defined in the primary channel mask and then if the process is not successful (the network were not created or no network to join was found) the secondary channel mask is used. These two channel masks can be configured by the application as needed. A value of 0 in one of these masks will disable the respective channel scanning phase (primary or secondary). The primary channel mask is defined by default to be equal to DEFAULT_CHANLIST (in f8wConfig.h), while the secondary channel mask is defined as all the other channels (i.e. DEFAULT_CHANLIST ^ 0x07FFF800). Section 15 provides more details on the commissioning methods.
    ....

    Thanks

  • I don't test simplelink_zigbee_sdk_plugin_2_20_00_06 for now but I suppose you can trace into your code and make sure bdbPrimaryChannelSet and bdbSecondaryChannelSet use the channels you want.
  • Hi YK and Ryan,
    I found I could change the default channel(Primary channel) via modification the value of DEFAULT_CHANLIST in the file of f8wConfig.h for old SDK(simplelink_zigbee_sdk_plugin_2_20_00_06) but I need to do reset after I changed the default channel(Primary channel) in my End-Device or Coordinator. Then, It could work.

    But I found another issue is that the second channel(other channels) did not work.

    Here is my testing based on the old SDK(simplelink_cc26x2_sdk_2_20_00_36 with simplelink_zigbee_sdk_plugin_2_20_00_06) and example code of zed_switch:
    I set the default channle(Primary channel) to 11 in my Coordinator and the default channel(Primary channel) to 16 in my End-Device.
    But my End-Device could not connect to my Coordinator because BDB_COMMISSIONING_NWK_STEERING is failure.
    By the way, I pressed the button that was used to do BDB_Commissioning many times in End-Device and all of results are failure in BDB_COMMISSIONING_NWK_STEERING.

    And I also found when BDB_COMMISSIONING_NWK_STEERING is failure, there are no any source code inside it in the example of zed_switch.
    I wonder whether End-Device only scan the primary channel in our current Z-stack and example code of zed_switch.
    Do I need to modify example code of zed_switch if I want my End-Device to scan other channels when it cannot fine the primary channel?

    Thanks
  • I suggest you to run IAR to debug what bdbSecondaryChannelSet value is in your zed_switch.
  • I think "znwk_config.h" file need to be modified for selecting/setting perticular channel.
  • Hi YK,
    I did not have the IDE of IAR and I just used the CCS to develop.
    I found below code in the function of zclSampleSw_initParameters and the value of BDB_DEFAULT_SECONDARY_CHANNEL_SET is zero.
    ...
    zstack_bdbSetAttrReq.bdbSecondaryChannelSet = BDB_DEFAULT_SECONDARY_CHANNEL_SET;
    ...
    I think I do not set any channel into Secondary Channel. Am I right?

    Thanks
  • Hi Dhanraj,
    What're differences between znwk_config.h and f8wConfig.h?
    Thanks
  • Yes, it looks you don't set any channel into Secondary Channel. Can you search BDB_DEFAULT_SECONDARY_CHANNEL_SET in your project and show me its define?
  • Hi YK,
    Here is my BDB_DEFAULT_SECONDARY_CHANNEL_SET in the file of bdb_interface.h
    #define BDB_DEFAULT_SECONDARY_CHANNEL_SET 0 //BDB specification default is: (0x07FFF800 ^ 0x02108800)
    Thanks
  • Try to change "#define BDB_DEFAULT_SECONDARY_CHANNEL_SET 0" to use those channels that you want to use as secondary channels.
  • Hi YK,
    It could work. It seems that no any secondary channel is assigned in the example code of zed_switch.
    I have to assign one channel for it.
    Thanks