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

Zigbee Sleepy End Device Immediately Sleeps after Joining Network

Hello,

In my current zigbee project I have a sensor end device which should sleep when possible. I am handling the ZB_COMMON_SIGNAL_CAN_SLEEP event and have added zb_set_rx_on_when_idle(ZB_FALSE) to main. I am not sure if it makes any difference but this project uses TWIM for sensor communication and the app_timer.

Once the device boots (not previously joined to a network), the device polls until a connection is made with the coordinator. Immediately upon joining the network, the device sleeps indefinitely and commissioning is never completed. During this apparent sleep state debugging appears to continue normally. If zb_set_rx_on_when_idle() is set to ZB_TRUE, the device is able to be commissioned normally.

Included below are the following: zboss_zignal_handler, main, console output showing only LOG INFO output, and finally console output with ZIGBEE_TRACE_LEVEL set to 4.

zb_void_t zboss_signal_handler(zb_uint8_t param)
{
    zb_zdo_app_signal_hdr_t *p_sg_p = NULL;
    zb_zdo_signal_leave_params_t *p_leave_params = 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_ret_t zb_err_code;
    
    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_off(LED_2);
                nrf_gpio_pin_write(LED_1, 1);
                ret_code_t err_code = app_timer_start(zb_app_timer, APP_TIMER_TICKS(15000), NULL);
                APP_ERROR_CHECK(err_code);
            }
            else
            {
                NRF_LOG_ERROR("Failed to join network. Status: %d", status);
                //bsp_board_led_on(LED_2);
                nrf_gpio_pin_write(LED_1, 0);
                zb_err_code = bdb_start_top_level_commissioning(ZB_BDB_NETWORK_STEERING);
                ZB_COMM_STATUS_CHECK(zb_err_code);
                //zb_err_code = ZB_SCHEDULE_ALARM(zigbee_leave_and_join, 0, ZB_TIME_ONE_SECOND);
                //ZB_ERROR_CHECK(zb_err_code);
            }
        }
        break;
        
    case ZB_ZDO_SIGNAL_LEAVE:
        {
            if (status == RET_OK)
            {
                //bsp_board_led_on(LED_2);
                nrf_gpio_pin_write(LED_1, 0);
                p_leave_params = ZB_ZDO_SIGNAL_GET_PARAMS(p_sg_p, zb_zdo_signal_leave_params_t);
                NRF_LOG_INFO("Network left. Leave type: %d", p_leave_params->leave_type);
                // Retry join. 
                zigbee_retry_join(p_leave_params->leave_type);  // Should this equal ZB_NWK_LEAVE_TYPE_RESET? Thus call zigbee_leave_network
                
                ret_code_t err_code = app_timer_stop(zb_app_timer);
                APP_ERROR_CHECK(err_code);
            }
            else
            {
                NRF_LOG_ERROR("Unable to leave network. Status: %d", status);
            }
        }
        break;
        
    case ZB_ZDO_SIGNAL_DEVICE_ANNCE:
        {
            zb_zdo_signal_device_annce_params_t * dev_annce_params = ZB_ZDO_SIGNAL_GET_PARAMS(p_sg_p, zb_zdo_signal_device_annce_params_t);
            NRF_LOG_INFO("Device with a short address %hx commissionned", dev_annce_params->device_short_addr);
        }
        break;
        
    case ZB_COMMON_SIGNAL_CAN_SLEEP:
        {
            zb_zdo_signal_can_sleep_params_t *can_sleep_params = ZB_ZDO_SIGNAL_GET_PARAMS(p_sg_p, zb_zdo_signal_can_sleep_params_t);
            NRF_LOG_INFO("Can sleep for %ld ms", can_sleep_params->sleep_tmo);
            zb_sleep_now();
        }
        break;
        
    case ZB_ZDO_SIGNAL_PRODUCTION_CONFIG_READY:
        {
            if (status != RET_OK)
            {
                NRF_LOG_WARNING("Production config is not present or invalid.");
            }
        }
        break;
        
    default:
        // Unhandled signal. For more information see: zb_zdo_app_signal_type_e and zb_ret_e
        NRF_LOG_INFO("Unhandled signal %d. Status: %d", sig, status);
    }
    
    if (param)
    {
        ZB_FREE_BUF_BY_REF(param);
    }
}

int main(void)
{
    zb_ret_t zb_err_code;
    ret_code_t err_code;
    zb_ieee_addr_t ieee_addr;
    
    init_log();
    //lfclock_request();
    init_timer();
    leds_init();
    initBME280();
    
    // Create timer for reporting attribute;
    err_code = app_timer_create(&zb_app_timer, APP_TIMER_MODE_REPEATED, zb_app_timer_handler);
    APP_ERROR_CHECK(err_code);
    
    // Set Zigbee Stack logging level and traffic dump subsystem
    ZB_SET_TRACE_LEVEL(ZIGBEE_TRACE_LEVEL);
    ZB_SET_TRACE_MASK(ZIGBEE_TRACE_MASK);
    ZB_SET_TRAF_DUMP_OFF();
    
    // Initialize Zigbee stack
    ZB_INIT("multi_sensor");
    
    // Set device address to the value read from FICR registers
    zb_osif_get_ieee_eui64(ieee_addr);
    zb_set_long_address(ieee_addr);
    
    // Set static long IEEE address.
    zb_set_network_ed_role(IEEE_CHANNEL_MASK);
    zb_set_nvram_erase_at_start(ERASE_PERSISTENT_CONFIG);
    //zigbee_erase_persistent_storage(ERASE_PRESISTENT_CONFIG);
    
    zb_set_ed_timeout(ED_AGING_TIMEOUT_64MIN);
    zb_set_keepalive_timeout(ZB_MILLISECONDS_TO_BEACON_INTERVAL(3000));
    
    if (nrf_gpio_pin_read(11) == 0)
    {
        NRF_LOG_INFO("RX on when idle is false");
        zb_set_rx_on_when_idle(ZB_FALSE);
    }
    else
    {
        NRF_LOG_INFO("RX on when idle is true");
        zb_set_rx_on_when_idle(ZB_TRUE);
    }
    //Can sleep for 76 ms
    
    
    // Initialize application context structure
    UNUSED_RETURN_VALUE(ZB_MEMSET(&m_dev_ctx, 0, sizeof(m_dev_ctx)));
    
    // Register sensor device context (endpoints)
    ZB_AF_REGISTER_DEVICE_CTX(&multi_sensor_ctx);
    
    // Initialize sensor device attributes
    multi_sensor_clusters_attr_init();
    
    // Set TX Power
    nrf_802154_tx_power_set(8);
    //NRF_LOG_INFO("Current TX power level: %d", nrf_802154_tx_power_get());
    
    // Start Zigbee stack
    zb_err_code = zboss_start();
    ZB_ERROR_CHECK(zb_err_code);
    
    //BME280 
    bme.setSensorSettings(MODE_NORMAL, BME280_OVERSAMPLING_1X, BME280_OVERSAMPLING_1X, BME280_OVERSAMPLING_1X, BME280_FILTER_COEFF_OFF, BME280_STANDBY_TIME_1_MS);
    
    while (1)
    {
        zboss_main_loop_iteration();
        UNUSED_RETURN_VALUE(NRF_LOG_PROCESS());
    }
}

<info> app: RX on when idle is false
<warning> app: Production config is not present or invalid.
<error> app: Failed to join network. Status: -1
<error> app: Failed to join network. Status: -1
<error> app: Failed to join network. Status: -1
<error> app: Failed to join network. Status: -1
<error> app: Failed to join network. Status: -1
<info> app: Can sleep for 92 ms

<info> app: RX on when idle is false
<info> zboss:  08 00 00 00 DE AD 0E 02|........
<info> zboss:  00 00 0B 00 90 0C 27 01|......'.
<info> zboss:  01 00 00 00 DE AD 0A 02|........
<info> zboss:  00 00 0C 00 2B 08 F0 00|....+...
<info> zboss:  DE AD 0A 02 00 00 0D 00|........
<info> zboss:  2B 08 6A 01 DE AD 1E 02|+.j.....
<info> zboss:  00 00 0E 00 AA 01 9E 01|........
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<warning> app: Production config is not present or invalid.
<info> zboss:  00 00 00 00 DE AD 1E 02|........
<info> zboss:  10 00 0F 00 AA 01 9E 01|........
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  31 00 10 00 2B 08 7A 05|1...+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 31 00 11 00|....1...
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  52 00 12 00 2B 08 7A 05|R...+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 52 00 13 00|....R...
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  52 00 14 00 2B 08 FA 03|R...+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  52 00 15 00 AA 01 9E 01|R.......
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  73 00 16 00 2B 08 7A 05|s...+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 73 00 17 00|....s...
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  94 00 18 00 2B 08 7A 05|....+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 94 00 19 00|........
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  94 00 1A 00 2B 08 FA 03|....+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  94 00 1B 00 AA 01 9E 01|........
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  B5 00 1C 00 2B 08 7A 05|....+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 B5 00 1D 00|........
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  D6 00 1E 00 2B 08 7A 05|....+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 D6 00 1F 00|........
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  D6 00 20 00 2B 08 FA 03|.. .+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  D6 00 21 00 AA 01 9E 01|..!.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  F7 00 22 00 2B 08 7A 05|..".+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 F7 00 23 00|......#.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  18 01 24 00 2B 08 7A 05|..$.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 18 01 25 00|......%.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  18 01 26 00 2B 08 FA 03|..&.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  18 01 27 00 AA 01 9E 01|..'.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  39 01 28 00 2B 08 7A 05|9.(.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 39 01 29 00|....9.).
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  5A 01 2A 00 2B 08 7A 05|Z.*.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 5A 01 2B 00|....Z.+.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  5A 01 2C 00 2B 08 FA 03|Z.,.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  5A 01 2D 00 AA 01 9E 01|Z.-.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  7B 01 2E 00 2B 08 7A 05|{...+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 7B 01 2F 00|....{./.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  9C 01 30 00 2B 08 7A 05|..0.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 9C 01 31 00|......1.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  9C 01 32 00 2B 08 FA 03|..2.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  9C 01 33 00 AA 01 9E 01|..3.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  BD 01 34 00 2B 08 7A 05|..4.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 BD 01 35 00|......5.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  DE 01 36 00 2B 08 7A 05|..6.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 DE 01 37 00|......7.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  DE 01 38 00 2B 08 FA 03|..8.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  DE 01 39 00 AA 01 9E 01|..9.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  FF 01 3A 00 2B 08 7A 05|..:.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 FF 01 3B 00|......;.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  20 02 3C 00 2B 08 7A 05| .<.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 20 02 3D 00|.... .=.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  20 02 3E 00 2B 08 FA 03| .>.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  20 02 3F 00 AA 01 9E 01| .?.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  41 02 40 00 2B 08 7A 05|A.@.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 41 02 41 00|....A.A.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  62 02 42 00 2B 08 7A 05|b.B.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 62 02 43 00|....b.C.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  62 02 44 00 2B 08 FA 03|b.D.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  62 02 45 00 AA 01 9E 01|b.E.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  83 02 46 00 2B 08 7A 05|..F.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 83 02 47 00|......G.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  A4 02 48 00 2B 08 7A 05|..H.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 A4 02 49 00|......I.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  A4 02 4A 00 2B 08 FA 03|..J.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  A4 02 4B 00 AA 01 9E 01|..K.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  C5 02 4C 00 2B 08 7A 05|..L.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 C5 02 4D 00|......M.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  E6 02 4E 00 2B 08 7A 05|..N.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 E6 02 4F 00|......O.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  E6 02 50 00 2B 08 FA 03|..P.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  E6 02 51 00 AA 01 9E 01|..Q.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  07 03 52 00 2B 08 7A 05|..R.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 07 03 53 00|......S.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  28 03 54 00 2B 08 7A 05|(.T.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 28 03 55 00|....(.U.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  28 03 56 00 2B 08 FA 03|(.V.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  28 03 57 00 AA 01 9E 01|(.W.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  49 03 58 00 2B 08 7A 05|I.X.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 49 03 59 00|....I.Y.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  6A 03 5A 00 2B 08 7A 05|j.Z.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 6A 03 5B 00|....j.[.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  6A 03 5C 00 2B 08 FA 03|j.\.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  6A 03 5D 00 AA 01 9E 01|j.].....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  8B 03 5E 00 2B 08 7A 05|..^.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 8B 03 5F 00|......_.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  AC 03 60 00 2B 08 7A 05|..`.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 AC 03 61 00|......a.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  AC 03 62 00 2B 08 FA 03|..b.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  AC 03 63 00 AA 01 9E 01|..c.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  CD 03 64 00 2B 08 7A 05|..d.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 CD 03 65 00|......e.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  EE 03 66 00 2B 08 7A 05|..f.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 EE 03 67 00|......g.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  EE 03 68 00 2B 08 FA 03|..h.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  EE 03 69 00 AA 01 9E 01|..i.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  0F 04 6A 00 2B 08 7A 05|..j.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 0F 04 6B 00|......k.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  30 04 6C 00 2B 08 7A 05|0.l.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 30 04 6D 00|....0.m.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  30 04 6E 00 2B 08 FA 03|0.n.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  30 04 6F 00 AA 01 9E 01|0.o.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  51 04 70 00 2B 08 7A 05|Q.p.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 51 04 71 00|....Q.q.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  72 04 72 00 2B 08 7A 05|r.r.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 72 04 73 00|....r.s.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  72 04 74 00 2B 08 FA 03|r.t.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  72 04 75 00 AA 01 9E 01|r.u.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  93 04 76 00 2B 08 7A 05|..v.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 93 04 77 00|......w.
<info> zboss:  2B 08 E6 05 DE AD 12 02|+.......
<info> zboss:  B4 04 78 00 2B 08 7A 05|..x.+.z.
<info> zboss:  EA 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 0A 02 B4 04 79 00|......y.
<info> zboss:  2B 08 E6 05 DE AD 16 02|+.......
<info> zboss:  B4 04 7A 00 2B 08 FA 03|..z.+...
<info> zboss:  0A 00 00 00 FF FF FF FF|........
<error> app: Failed to join network. Status: -1
<info> zboss:  05 00 00 00 DE AD 1E 02|........
<info> zboss:  B4 04 7B 00 AA 01 9E 01|..{.....
<info> zboss:  02 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 00 00 00 00|........
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  D5 04 7C 00 2B 08 7A 05|..|.+.z.
<info> zboss:  00 00 00 00 01 00 00 00|........
<info> zboss:  DE AD 16 02 D5 04 7D 00|......}.
<info> zboss:  45 01 1D 01 9F 29 00 00|E....)..
<info> zboss:  0B 00 00 00 00 00 00 00|........
<info> zboss:  DE AD 1A 02 F5 04 7E 00|......~.
<info> zboss:  2B 08 35 07 00 00 00 00|+.5.....
<info> zboss:  D2 31 00 00 0B 00 00 00|.1......
<info> zboss:  00 00 00 00 DE AD 12 02|........
<info> zboss:  F5 04 7F 00 2B 08 36 07|....+.6.
<info> zboss:  E5 5C F6 FE 20 6D 68 71|.\.. mhq
<info> app: Can sleep for 92 ms

With a few exceptions, my sdk_config matches what is included with the zigbee light switch example.

Any advice on how to further troubleshoot is greatly appreciated.

  • Hi,

    Did you test the original light_control example in the SDK to see if the Sleepy End Device functionality is working as expected there? You can put the light_switch example in sleepy device mode by holding button 3 (BSP_BUTTON_2) when resetting/powering the board.

    Best regards,
    Jørgen

  • Hi Jorgen,

    I had not taken the time to test out the light_switch example but have now taken the time to. The good news is that the light_switch example works as expected (using SES). One of the first things I noticed between my firmware and the light_switch example is how when in "sleepy mode", the "CAN_SLEEP..." event is fired in between each "Failed to join network" event, unlike my firmware.

    After a lot more digging I thinking that the issue lies somewhere in my toolchain and the compiled output. I have been using C++ and VisualGDB (Visual Studio addin, GCC 7.2.0) in this project and have made sure any of the zboss code has been guarded however I am still not seeing the correct behavior. Generally using VisualGDB and C++ has not been an issue but its obviously producing something that isn't quite right.

    To test further I created a C project in VisualGDB and copied the light_switch example code in. Compiling this project also results in the odd behavior I was experiencing previously.

    Seeing as I am using an unsupported IDE I do not necessarily expect support on that front but is there anything else I can look at? Under the hood VisualGDB is using GCC so I would expect that this issue could be a configuration problem.

    Possibly relevant info below:

    Preprocessor Definitions:
    DEBUG=1;XENON;CONFIG_GPIO_AS_PINRESET;ENABLE_FEM;FLOAT_ABI_HARD;NRF52840_XXAA;ZB_ED_ROLE=1;ZB_TRACE_LEVEL=0;ZB_TRACE_MASK=0;
    
    (XENON is a custom board definition for the Particle.io Xenon dev board)
    
    Command Line:
    -std=gnu++1z -fno-rtti "VisualGDB\Debug\PCH" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/zboss/include/ha" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/zboss/include/osif" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/zboss/include/zcl" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/zboss/include" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/zboss/include/zll" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/zboss/osif" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/zboss/zb_error" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/nRF-IEEE-802.15.4-radio-driver/src" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/nRF-IEEE-802.15.4-radio-driver/src/mac_features" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/nRF-IEEE-802.15.4-radio-driver/src/fem" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/nRF-IEEE-802.15.4-radio-driver/src/raal/single_phy" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/nRF-IEEE-802.15.4-radio-driver/src/raal/simulator" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/nRF-IEEE-802.15.4-radio-driver/src/raal" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/components/libraries/pwm" -I"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/integration/nrfx/legacy" -I"../../../../multi_sensor" -I"../../../Libraries/Bosch/BME280/BME280" -ggdb -O0 -fdata-sections -D"DEBUG=1" -D"XENON" -D"CONFIG_GPIO_AS_PINRESET" -D"ENABLE_FEM" -D"FLOAT_ABI_HARD" -D"NRF52840_XXAA" -D"ZB_ED_ROLE=1" -D"ZB_TRACE_LEVEL=0" -D"ZB_TRACE_MASK=0" -fno-exceptions -ffunction-sections -std=gnu99 "VisualGDB\Debug\" 
    
    Linker Command Line:
    -o "H:\Development\VisualGDB\Projects\ZigBeeTemperatureSensor\VisualGDB\Debug\ZigBeeTemperatureSensor" -Wl,-gc-sections -L"../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/zboss/lib/gcc" -T"nRF52840_XXAA_zigbee_nosoftdev.lds" "../../../../Tools/EmbeddedBSPs/arm-eabi/com.sysprogs.arm.nordic.nrf5x/15.2/15.2/nRF5x/external/zboss/lib/gcc/nrf_radio_driver.a" -l"zboss.ed" 
    

    Thank you.

  • I have done quite a bit more digging on this problem this weekend and think I am getting close to a solution. I modified the makefile included with the light switch example and was able to produce a properly functioning firmware using my project source files from VisualGDB. Unfortunately I haven’t gotten VIsualGDB itself to produce a properly functioning firmware but feel comfortable saying that this is a tooling problem. As such, I have a case open with their support to hopefully find a solution. 

  • Great, let me know if you need any more follow-up from our side.

  • It turns out that I had apparently not copied everything needed from the Thread and Zigbee SDK into the VisualGDB folder structure. I originally only copied the folders that were obviously added by the Thread and Zigbee SDK but clearly missed some files that had been changed from the standard SDK. Everything is now functioning as expected.

Related