This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Problem of connection between Nordic's zigbee device and other Zigbee device

Hi,

I have a problem with a specific Zigbee certified device that I can't connect to my Nordic device.

When trying to connect to the device, I go to see the status:


void zboss_signal_handler(zb_uint8_t param)
{
    zb_zdo_app_signal_hdr_t  * p_sg_p = NULL;
    zb_zdo_app_signal_type_t   sig    = zb_get_app_signal(param, &p_sg_p);
    zb_ret_t                   status = ZB_GET_APP_SIGNAL_STATUS(param);
    zb_bool_t                  comm_status;

    switch (sig)
    {
        case ZB_BDB_SIGNAL_DEVICE_FIRST_START:
        case ZB_BDB_SIGNAL_DEVICE_REBOOT:
            
            if (status == RET_OK)
                        {
                NRF_LOG_INFO("Joined network successfully");
                bsp_board_led_on(ZIGBEE_NETWORK_STATE_LED);
            }

and it is equal to -1, so it is not RET_OK.

It's the first time that I have this problem of interoperability. Is it necessary to do something specific so that the Nordic device is visible from any other Zigbee device?

Best regards,

Raffaela

Parents
  • Hi Raffaela,

    Which nordic example are you using and what do you which device do you want to connect to? Are you sure both devices are running on the same zigbee channel?  By default, our examples operates on channel 16 only. In case someone tries to connect .e.g. our light switch example to his network and his network is set on channel 15, the device will not join.

    Best regards,

    Marjeris

  • Hi Marjeris,

    Thank you for your reply. I'm using the light bulb example. I'm sure that the channel is correct because I'm using the sniffer and I see the zigbee traffic. The device is one of the Zigbee Alliance that it has the Zigbee Certification (Zigbee 3.0).

    Thank you, 

    Raffaela

  • Hi Raffaela,

    Thanks for the sniffer traces. I see that the joining procedure is started but not completed, but I am not sure why this is hapening. Do you also have the log output from the light_bulb example and can you attach them?

    I am a little unsure about what the "Many-to-One route request" send from the coordinator is for, but I am wondering if this is a legacy Zigbee PRO command. Have you tried setting zb_bdb_set_legacy_device_support(1)?

    Best regards,

    Marjeris

  • Hi Marjeris,

    I don't have the log output from the Light bulb: I don't know how to obtain this file.

    I have tried with zb_bdb_set_legacy_device_support(1): I tried to put this line in 2 points (in the 

    zboss_signal_handler and during the initialitation) but I don't see change in the commissioning. 
    Am I doing something wrong using this function?
    Thank you so much,
    Raffaela
  • Hi,

    You should call zb_bdb_set_legacy_device_support(1) after bdb_start_top_level_commissioning(). I usually call it inside the zboss_signal_handler like this:

    case ZB_BDB_SIGNAL_DEVICE_FIRST_START: // Device started and commissioned first time after NVRAM erase.
    case ZB_BDB_SIGNAL_DEVICE_REBOOT:      // BDB initialization completed after device reboot, use NVRAM contents during initialization. Device joined/rejoined and started.			
    					if(status==RET_OK)
    						{
    							NRF_LOG_INFO("Start network steering.");
    							bsp_board_led_on(ZIGBEE_NETWORK_STATE_LED);
    							UNUSED_RETURN_VALUE(bdb_start_top_level_commissioning(ZB_BDB_NETWORK_STEERING));
    
    						}
    						 else
                {
                    NRF_LOG_ERROR("Device startup failed. Status: %d. Retry network formation after 1 second.", status);
                    bsp_board_led_off(ZIGBEE_NETWORK_STATE_LED);
                    UNUSED_RETURN_VALUE(ZB_SCHEDULE_ALARM(bdb_restart_top_level_commissioning, 0, ZB_TIME_ONE_SECOND));
                        
                }
    						zb_bdb_set_legacy_device_support(1);
    						break;

    The NRF LOG module is enable as default in all our examples, with UART backend and baudrate 1000000, see the following lines in sdk_config.h:

    // <e> NRF_LOG_ENABLED - nrf_log - Logger
    //==========================================================
    #ifndef NRF_LOG_ENABLED
    #define NRF_LOG_ENABLED 1
    #endif
    
    //==========================================================
    // <e> NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend
    //==========================================================
    #ifndef NRF_LOG_BACKEND_UART_ENABLED
    #define NRF_LOG_BACKEND_UART_ENABLED 1
    #endif

    You can use a terminal program like PuTTy to see the log output using the following UART settings:

    • 1000000 bit/s,
    • 8-bit-long word,
    • no parity,
    • 1-bit stop.

    I have also pass the sniffer trace you sent me to our Zigbee developers to see if they have any more input in the matter. I will update this case with more information when I get feedback from them. I think if you are able to also give us the log output of the device it will help.

    Best regards,

    Marjeris

  • Hi Marjeris,

    Sorry for the late answer. I put the function like you did but it changed nothing.

    I did a screenshot of the terminal Putty during the commissioning: I attached the screen.

    Thank you so much,

    Raffaela

  • Hi Raffaela,

    I just wanted to let you know that I am waiting for feedback of our Zigbee team to continue with this case. Sorry for the delays.

    Best regards,

    Marjeris

Reply Children
Related