disabling auto-start of zigbee network steering on reboot/pwr up

Hello,

In the Zigbee Network Coordinator example when flashing new file to nrf52840-DK the Zigbee network steering automatically starts.
How do I disable auto-start of network steering?

I need to do some configuration of network before stack started and then run "bdb start".

It won't let me change Zigbee channel as example because stack is running already.

In Kconfig I tried to: "Disable 802.15.4 interface auto-start" in IEEE 802.15.4 driver option.

This does not seem to be to work.

It also says: 

When all configurations are done net_if_up() has to be invoked to bring the interface 
Assuming I can disable auto-start, how do I do that assuming I get it to work?

I also tried in network coordinator main.c 

#define ZIGBEE_MANUAL_STEERING                 ZB_TRUE
This did not seem to work either.

Thanks, JM

  • Hi JM,

    I am using the SDK3.2
    There are two variants to initialize the "zboss" library. The first variant would be with "zboss_start()", which basically initializes the radio and starts the commissioning. If you want to do something before Zigbee data structures and the radio is initialized, this can be done with "zboss_start_no_autostart()". More detailed information can be found in the documentation: Stack commissioning start sequence. In the SDK3.2 example for the light coordinator, I have to call somewhere "bdb_start_top_level_commissioning(ZB_BDB_NETWORK_STEERING);" for opening the network (e.g. it is button 1). Of course, it is to be made sure that #define ZIGBEE_MANUAL_STEERING ZB_TRUE" is to be used (This is also simply responsible that a "zboss_start_no_autostart()" is run through, but also the automatic start in the switch is prevented). If the network is opened, e.g. my Multi-sensor can join.

    Best regards

    Jonas T

  • Hi JM,

    As  says you have zboss_start() and zboss_start_no_autostart(), where the latter starts the Zigbee stack without starting commissioning right away. However, in nRF Connect SDK this function is not called by the application in main() as it is in nRF5 SDK, as this is handled by the Zigbee thread. Additionally, configurations such as channel, device role etc. must be set before the Zigbee stack is started, not just before commissioning. So in nRF Connect SDK you should make these changes before calling zigbee_enable() to start the Zigbee thread. The Zigbee shell command "bdb start" will call zigbee_enable, so if you are using this to start commissioning, you can remove zigbee_enable() from main() as long as you make sure to call "bdb start".

    Best regards,

    Marte

  • HI Marte and Jonas,

    I should have said I use nrf Connect SDK 1.9.1
    I also use Kconfig GUI whenever possible.

    I commented out zigbee_enable() in main() file and it stopped auto-run of commissioning "starting network steering".

    I checked "role" =zr and "channel"=11 so looks ok.
    However when running "bdb start" I also get "started rejoin procedure" and some other not normal messages for a coordinator.

    Looks like I'm still missing something?

    When connecting USB serial port:
    uart:~$ I: Starting ZBOSS Coordinator example
    I: ZBOSS Coordinator example started

    bdb channel
    Primary channel(s): 11
    Secondary channel(s): 11
    Done

    bdb role
    zr
    Done

    bdb start
    Started router
    Done

    uart:~$ E: CLI endpoint: 64 is not registered.
    I: Production configuration is not present or invalid (status: -1)
    I: Zigbee stack initialized
    I: Device started for the first time
    I: Start network steering
    I: Started network rejoin procedure.  (this is strange...looks like a router/device message?)
    I: Network left (leave type: 0)
    I: Network left (leave type: 0)
    I: Network left (leave type: 0).......

    Thanks,
    Jorgen

  • Hi Jorgen,

    JorgenM said:
    bdb role
    zr

    This means that the device is a router, zr = Zigbee router. If no role is specified with the bdb role command, e.g. "bdb role zc", then it will default to router. I wrongly assumed that it would default to the role specified in prj.conf if a role is specified there, since this is how it normally works in Zigbee samples, but the shell will not use what is in prj.conf. So you must set the coordinator role first.

    Best regards,

    Marte

Related