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.

how to aviod the signal interference issue between WIFI and Zigbee?

Other Parts Discussed in Thread: Z-STACK, CC2530

Hi ALL

         there is a PCBA,which supply the WIFI 2.4G signal and there is alway a zigbee coordinator running. 

         I found that sometimes the ZC boardcast msg alwas being resend as more as 3 times in NWK, 

         although its ZCL transmit sequence number is  same,

         and ZED response msg alway need to resend so many times then it could receive the ACK

 

        

        Q1:

        In order to aviod the signal interference issue , could  we change  the coordinator channel while it is running? 

        When 2.4G wifi choose the channel 1,  change the coordinator channel far from the WIFI channel , such as 25channel  !

         

  Q2 :

     If above method is OK to implement,  How about  WIFI bandwidth change as 40Mhz?

     because so many people set the WIFI bandwidth  as  40MHz, is that work change the ZC channel far from the WIFI channel to avoid

     the signal interference issue?

BR!  

  • It's not OK to change channel while ZC is running.
  • when ZC running, the channel and PANID could not be change any more?
  • Channel can be changed if there is interference and frequency agility is enable. However, this is done by Z-Stack not application. You can refer to chapter 11. Network Manager in Z-Stack Developer's Guide.pdf.

  • I had a bad demo a few days ago, that the ZigBee mesh network communication was totally jammed by WiFi booster.

    Looks at Philips Hue APP, it allows end-user to change ZigBee channels. So I still don't understand why TI Z-Stack can not allow user to change Channel in run-time after ZC formed a network. 

    I tried to use ZMacSetReq(ZMacChannel, &newchannel), and osal_nv_item_write(ZCD,NV_CHANLIST,...). Both functions can not change ZC channel. 

    Can anyone explain how TI Z-Stack set the channel? Why can not be changed in run-time? 

    Is there any way to change the channel (for end-user), even we have to let all devices re-joining? It is a very important feature in-field.

    Thanks.

  • You definitely can change channel at run time but I would still say it's dangerous. You can refer to section 11.2 Channel Interference in Z-Stack Developer's Guide.pdf.
  • Thanks YK. Section 11.2 seems quite complex, and hard to verify also.
    Any simple way to change the channel? For example, user already knows which channel is noisy, so before setup the network, user can choose a known cleaner channel for ZC to setup the network.
  • Z-Stack 3.0 implements channel selection on its examples so you can have a look at it.
  • If you want to change the channel, you can use the code bellow.

    #define MIN_CHANNEL 11 // 2405 MHz
    #define CHANNEL_SPACING 5 // 5 MHz

    //channel variable must be a value between 0 and 15.
    void set_rf_channel(uint8 channel)
    {

    FREQCTRL = (MIN_CHANNEL + channel * CHANNEL_SPACING); //Calculates the channel frequency according to IEEE directive.

    }

    I'm not familiar with ZSTACK but I believe you should be aware that it can change the channel again by its own without notice.

  • why  do you want to change the channel in the running time ?

  • Thanks for your reply. As mentioned, if the environment noisy is too high for the pre-selected channel, then end-user can change the ZC channel on-site. Reference is Philips Hue Hub.

  • Thanks YK. It's an important information, need to move to Z-Stack 3.0.
  • I guess this won't work in Z-Stack. Thanks anyway.
  • If you don't want to use Z-Stack 3.0, you can refer to the example and porting it to old Z-Stack. However, TI always recommend developers to use latest Z-Stack.
  • Hello Yun Ye85.

    I don't see why it will not work.

    By using the register FREQCTRL you are setting the channel directly into the hardware. This register name is used on CC2530. If you are using other IC, maybe you will need to look if it uses the same register name.

    By using that code, you are bypassing the hardware abstraction layer and setting the channel information by yourself.

    Be aware that channel 0 corresponds the IEEE channel 11, as well as channel 15 corresponds to IEEE channel 26.