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.
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!
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.
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.
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.
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.