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.

Z-Stack End Device sends Beacon Request to all channels

Other Parts Discussed in Thread: CC2530

Hi all,

I'm facing a problem with the behavior of end devices when they get orphan status. Here's the information I have and the problem:

Info

I have an implementation of multiple networks with different PANID. I started to use different channels for each one, because a beacon request sent in one network, trigger a response from all the possible parents in different networks on the same channel.

Problem

If an end device has never been on a network, its beacons request are only sent to the specific channel seted (OK). But, when it gets an orphan status, the end device sends beacon request to all the channels with every start joining cycle.

I thought this should be related with frequency agility, so I used ZDNWKMGR_MIN_TRANSMISSIONS=20 and ZDNWKMGR_MIN_TRANSMISSIONS=0, but the same result was seen.


Any ideas?

Thanks!

  • Basically, the beacon channels are defined by -DDEFAULT_CHANLIST in f8wconfig.cfg. No matter device is doing first join or orphan beacon requests, it should scan all channels defined by -DDEFAULT_CHANLIST.
  • Hi Yikai, thanks for your answer.

    I define one channel only with DEFAULT_CHANLIST, using the default channel 0x00000800. With this configuration, I see beacons in other channels.

    When I change channel at the begining of main(), I use zgDefaultChannelList = DEFAULT_CHANLIST << X, with X [0,15].

    Any idea?

    Thanks!

  • What HW and SW do you use?
  • I'm using, CC2530 with ZStack on IAR Workbench. I also use Packet Sniffer and SmartRFFlash Programmer.

    Thanks

  • If you set channel mask to 0x00000800, you should only see beacon requests on channel 11.
  • Hi  Yikai

          i  have do to test ,one ZED and  one ZC build  the network only in the channel 0x1A

          when ZED joined the network, i power off  the ZC ,and i found that  the ZED only sends the beacon request in this channel within a short time

          after some time later ,i  saw  that  there is a beacon request in other channels ,(i could found  that there is beacon requests in others all channel)

          It seems that it is different with what you said。

          which version of zstack  do you test ?

          

           anyway i saw some code in the ZDObject.c  (zstack 1.2.2)  

         (in the function :void ZDO_StartDevice( byte logicalType, devStartModes_t startMode, byte beaconOrder, byte superframeOrder ))

          

    #if defined ( ZIGBEE_FREQ_AGILITY )
          if ( !( ZDO_Config_Node_Descriptor.CapabilityFlags & CAPINFO_RCVR_ON_IDLE ) &&
              ( ret == ZSuccess ) && ( ++discRetries == 4 ) )
          {
            // For devices with RxOnWhenIdle equals to FALSE, any network channel
            // change will not be recieved. On these devices or routers that have
            // lost the network, an active scan shall be conducted on the Default
            // Channel list using the extended PANID to find the network. If the
            // extended PANID isn't found using the Default Channel list, an scan
            // should be completed using all channels.
            runtimeChannel = MAX_CHANNELS_24GHZ;
          }
        #endif // ZIGBEE_FREQ_AGILITY
        #if defined ( ZIGBEE_COMMISSIONING )
          if (startMode == MODE_REJOIN && scanCnt++ >= 5 )
          {
            // When ApsUseExtendedPanID is commissioned to a non zero value via
            // application specific means, the device shall conduct an active scan
            // on the Default Channel list and join the PAN with the same
            // ExtendedPanID. If the PAN is not found, an scan should be completed
            // on all channels.
            // When devices rejoin the network and the PAN is not found from
            runtimeChannel = MAX_CHANNELS_24GHZ;
          }
        #endif // ZIGBEE_COMMISSIONING
      #endif

            is  that mean  the ZED will sends the beacon request for all  the channels  nomatter i have only set one channel as default one

    BR! 

        

  • What's you define of MAX_CHANNELS_24GHZ?
  • it keeps the default setting

    #if !defined ( MAX_CHANNELS_24GHZ )
    #define MAX_CHANNELS_24GHZ 0x07FFF800
    #endif
  • Since you define CHANNELS_24GHZ to all channels and runtimeChannel = MAX_CHANNELS_24GHZ, it means your device would send beacon request on all Zigbee channels.
  • i have not add more define (like CHANNELS_24GHZ) , all of those code were the default setting of TI


    i just change the f8wConfig.cfg file as like below :

    // Channels are defined in the following:
    // 0 : 868 MHz 0x00000001
    // 1 - 10 : 915 MHz 0x000007FE
    // 11 - 26 : 2.4 GHz 0x07FFF800
    //
    //-DMAX_CHANNELS_868MHZ 0x00000001
    //-DMAX_CHANNELS_915MHZ 0x000007FE
    //-DMAX_CHANNELS_24GHZ 0x07FFF800
    -DDEFAULT_CHANLIST=0x04000000 // 26 - 0x1A
    //-DDEFAULT_CHANLIST=0x02000000 // 25 - 0x19
    //-DDEFAULT_CHANLIST=0x01000000 // 24 - 0x18
    //-DDEFAULT_CHANLIST=0x00800000 // 23 - 0x17
    //-DDEFAULT_CHANLIST=0x00400000 // 22 - 0x16
    //-DDEFAULT_CHANLIST=0x00200000 // 21 - 0x15
    //-DDEFAULT_CHANLIST=0x00100000 // 20 - 0x14
    //-DDEFAULT_CHANLIST=0x00080000 // 19 - 0x13
    //-DDEFAULT_CHANLIST=0x00040000 // 18 - 0x12
    //-DDEFAULT_CHANLIST=0x00020000 // 17 - 0x11
    //-DDEFAULT_CHANLIST=0x00010000 // 16 - 0x10
    //-DDEFAULT_CHANLIST=0x00008000 // 15 - 0x0F
    //-DDEFAULT_CHANLIST=0x00004000 // 14 - 0x0E
    //-DDEFAULT_CHANLIST=0x00002000 // 13 - 0x0D
    //-DDEFAULT_CHANLIST=0x00001000 // 12 - 0x0C
    //-DDEFAULT_CHANLIST=0x00000800 // 11 - 0x0B


    as i know that it just mean set only one channel , but beacon request were sent for all channel。

    so i questions whether this is the default setting of the zstack or not ?
  • Add the following red line to your f8wconfig.cfg.

    //-DMAX_CHANNELS_868MHZ 0x00000001

    //-DMAX_CHANNELS_915MHZ 0x000007FE

    //-DMAX_CHANNELS_24GHZ 0x07FFF800

    -DDEFAULT_CHANLIST=0x04000000 // 26 - 0x1A

    //-DDEFAULT_CHANLIST=0x02000000 // 25 - 0x19

    //-DDEFAULT_CHANLIST=0x01000000 // 24 - 0x18

    //-DDEFAULT_CHANLIST=0x00800000 // 23 - 0x17

    //-DDEFAULT_CHANLIST=0x00400000 // 22 - 0x16

    //-DDEFAULT_CHANLIST=0x00200000 // 21 - 0x15

    //-DDEFAULT_CHANLIST=0x00100000 // 20 - 0x14

    //-DDEFAULT_CHANLIST=0x00080000 // 19 - 0x13

    //-DDEFAULT_CHANLIST=0x00040000 // 18 - 0x12

    //-DDEFAULT_CHANLIST=0x00020000 // 17 - 0x11

    //-DDEFAULT_CHANLIST=0x00010000 // 16 - 0x10

    //-DDEFAULT_CHANLIST=0x00008000 // 15 - 0x0F

    //-DDEFAULT_CHANLIST=0x00004000 // 14 - 0x0E

    //-DDEFAULT_CHANLIST=0x00002000 // 13 - 0x0D

    //-DDEFAULT_CHANLIST=0x00001000 // 12 - 0x0C

    //-DDEFAULT_CHANLIST=0x00000800 // 11 - 0x0B

    -DMAX_CHANNELS_24GHZ=DEFAULT_CHANLIST

  • ok ,so that is the problem of the MAX_CHANNELS_24GHZ 。 because its default value determine the range of beacon request !

    thanks!
  • You are welcome.
  • The Seven,

    I really appreciate you did the test and checked the behavior I have been seen. Set MAX_CHANNELS_24GHZ as DEFAULT_CHANLIST should be enough.

    Thanks!