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.

Why does the device can not join the network after doing the factory reset on the special moment???

Hi everyone !

         there are two devices, one is ZED ,the other is ZC。

         when ZC build network success, the ZED going to join the network easily frist time.

         and it is also easily to join the network  after doing the factory reset   (only the ZC should be always “here” the network should be always OK)

      

         But  the device can't join the network again  after doing the factory reset (while  the ZC power off ,the network was close ) 

        

        i sure that the ZC build the network success,and open the permitjoin , but the device can't join the network anymore ,nomatter do a factory reset again!!!

ps~~~~ why all the problem happen when i was being ill ~~~~~

  • Don't understand your problem well. What do you mean "But the device can't join the network again after doing the factory reset (while the ZC power off ,the network was close ) "? Can you describe the problem step by step?
  • Hi Yikai

    • when ZC is always power on ,nomatter when does the ZED doing the factory reset ,it is easy to rejoin the network.

             

    • But when ZC is power off,and ZED doing the factory reset at this moment,

       it will searching the network and try to rejoin after doing factory reset .

                then i turn on the ZC , building the network success and open the permitjoin  

                At this case , the ZED can't join the network  , only i doing the EZMODE,it will be OK finish joining

  • There is a timeout for EZMODE. If EZMODE is time out, you have to trigger it again for device to send beacon request again.
  • You can try to disable HOLD_AUTO_START and test again.
  • All the test was build on Disable HOLD_AUTO_START.

    EZMODE time out???what is the matter with EZMODE?
    does it not searching network automatic when i setting Disable HOLD_AUTO_START?

    or the device will searching network by using EZmode??


    what i want to said is , on the second case ,involved EZMODE will sold this problem,
    May EZMODE set the device to join network .
    but i don‘t know why device can't auto rejoin the network by itself as like the first case ?
    why it need to involved EZMODE to success in rejoin?

    i am so curious why this happen in the second case ? and do not happen in the frist case ?
  • If you already disable HOLD_AUTO_START, it is not the root cause. Do you try to use Ubiqua Packet analyzer to have a look?
  • Ubiqua Packet analyzer?

    En Packet sniffer?
  • Since Zigbee HA protocol is encrypted, I suggest you using Ubiqua Packet analyzer. If you use TI packet sniffer, the data is encrypted.
  • Hi yikai

          although  i disable SECURE=1。

          it can't be  catch~·~~~

  • Try to download trial version of Ubiqua Packet Analyzer. It is useful in debugging.
  • unfortunately, there is error happen while install ubiqua tool

    fortunately, i got the point of this issue!

    i find that the ZED NwkState was keep DEV_HOLD after doing factory reset in the second case , so the device can't join the network 。

    but why ???

  • There is only two places that would set it to DEV_HOLD, ZDAppCheckForHoldKey() and ZDApp_LeaveCtrlStartup(). You can set breakpoints on them to check why it is set.
  • Hi Yikai

              when i doing debug,i find that it is different result between two case

             in the first case  ZC always power on:

                ZDApp_Leave_Ctrl  is  0x00

                 

             in the second case ZC was power off while  ZED doing factory reset

             ZDApp_Leave_Ctrl  is  0x01

             and after doing if ( ZDApp_LeaveCtrl & ZDAPP_LEAVE_CTRL_RA ) it turn to      *state = DEV_HOLD;

            although   ZDAPP_LEAVE_CTRL_RA  is 2  Why that will be fasle ?????

             

  • Do you send leave request with rejoin flag = false? If so, it would set dev_state to DEV_HOLD.
  • i got it ,it is here

    Do you find anything wrong as below ?

    if ( NLME_LeaveReq( &leaveReq ) != ZSuccess )
    {
    ZDApp_LeaveReset(FALSE ); // TRUE
    }

    i don't know why TI set this logic here ?
  • This is about application behavior and you can change it. They just make the application prepare to reset anyway if device couldn't send out leave.