nRF5 SDK for Thread and Zigbee v4.1.0
Zigbee CLI Reference

The Zigbee CLI supports the following commands:

Every command prints Done when it is finished, or Error: <reason> in case of errors.

Note
The command argument description uses the following convention:
  • command [arg]: square brackets mean that an argument is optional.
  • command <d:arg1> <h:arg2>: a single letter before an argument name defines the format of the argument:
    • h: hexadecimal strings (arg2),
    • d: decimal values (arg1).
  • command <arg> ...: the ellipsis after an argument means that the preceding argument can be repeated several times.

bdb role - Set or get the Zigbee role of a device.

bdb role [<role>]
Precondition
Setting only before bdb start. Reading only after bdb start.

If the optional argument is not provided, get the state of the device.
Returns:

If the optional argument is provided, set the device role to role. Can be either zc or zr.

Note
Zigbee End Device is not currently supported on the CLI Agent.

bdb extpanid - Set or get the Zigbee Extended Pan ID value.

bdb extpanid [<h:id>]
Precondition
Setting only before bdb start. Reading only after bdb start.

If the optional argument is not provided, gets the extended PAN ID of the joined network.

If the optional argument is provided, gets the extended PAN ID to id.


bdb panid - Set or get the Zigbee PAN ID value.

bdb panid [<h:id>]
Precondition
Setting only before bdb start. Reading only after bdb start.

If the optional argument is not provided, gets the PAN ID of the joined network. If the optional argument is provided, sets the PAN ID to id.


bdb start - Start the commissioning process.

> bdb start
Started coordinator
Done

bdb channel - Set or get the 802.15.4 channel.

bdb channel <n>
Precondition
Setting only before bdb start.

If the optional argument is not provided, get the current number and bitmask of the channel.

If the optional argument is provided:

Example:

> bdb channel 0x110000
Setting channel bitmask to 110000
Done

bdb ic - Set install code on the device, add information about the install code on the trust center, set the trust center install code policy.

bdb ic add <h:install code> <h:eui64>
bdb ic set <h:install code>
bdb ic policy <enable|disable>
Precondition
Setting and defining policy only before bdb start. Adding only after bdb start.

bdb ic set must only be used on a joining device.

bdb ic add must only be used on a coordinator. For <h:eui64>, use the address of the joining device.

bdb ic policy must only be used on a coordinator.

Provide the install code as an ASCII-encoded hex that includes CRC16.

For production devices, an install code must be installed by the production configuration present in flash.

Example:

> bdb ic add 83FED3407A939723A5C639B26916D505C3B5 0B010E2F79E9DBFA
Done

bdb legacy - Enable or disable the legacy device support.

bdb legacy <enable|disable>

Allow or disallow legacy pre-r21 devices on the Zigbee network.

Example:

> bdb legacy enable
Done

bdb nwkkey - Set network key.

bdb nwkkey <h:key>>

Set a pre-defined network key instead of a random one.

Precondition
Setting only before bdb start.

Example:

> bdb nwkkey 00112233445566778899aabbccddeeff
Done

bdb factory_reset - Perform a factory reset via local action.

See Base Device Behavior specification chapter 9.5 for details.

> bdb factory_reset
Done

bdb child_max - Set the amount of child devices that is equal to <d:nbr>.

> bdb child_max <d:nbr>
Precondition
Setting only before bdb start.

Example:

> bdb child_max 16
Setting max children to: 16
Done

zdo simple_desc_req - Send Simple Descriptor Request.

zdo simple_desc_req <h:16-bit destination address> <d:endpoint>

Send Simple Descriptor Request to the given node and endpoint.

Example:

> zdo simple_desc_req 0xefba 10
> src_addr=0xEFBA ep=0x260 profile_id=0x0102 app_dev_id=0x0 app_dev_ver=0x5
in_clusters=0x0000,0x0003,0x0004,0x0005,0x0006,0x0008,0x0300 out_clusters=0x0300
Done

zdo active_ep - Send Active Endpoint Request.

zdo active_ep <h:16-bit destination address> *

Send Active Endpoint Request to the node addressed by the short address.

Example:

> zdo active_ep 0xb4fc
> src_addr=B4FC ep=10,11,12
Done

zdo match_desc - Send match descriptor request.

zdo match_desc <h:16-bit destination address>
<h:requested address/type> <h:profile ID>
<d:number of input clusters> [<h:input cluster IDs> ...]
<d:number of output clusters> [<h:output cluster IDs> ...]

Send Match Descriptor Request to the dst_addr node that is a query about the req_addr node of the prof_id profile ID, which must have at least one of n_input_clusters(whose IDs are listed in {...}) or n_output_clusters (whose IDs are listed in {...}). The IDs can be either decimal values or hexadecimal strings.

Example:

match_desc 0xfffd 0xfffd 0x0104 1 6 0

In this example, the command sends a Match Descriptor Request to all non-sleeping nodes regarding all non-sleeping nodes that have 1 input cluster ON/OFF (ID 6) and 0 output clusters.


zdo bind on - Create a binding between two endpoints on two nodes.

zdo bind on <h:source eui64> <d:source ep> <h:destination addr>
<d:destination ep> <h:source cluster id> <h:request dst addr>`

Create bound connection between a device identified by source eui64 and endpoint source ep, and a device identified by destination addr and endpoint destination ep. The connection is created for ZCL commands and attributes assigned to the ZCL cluster source cluster id on the request dst addr node (usually short address corresponding to source eui64 argument).

Example:

zdo bind on 0B010E0405060708 1 0B010E4050607080 2 8

zdo bind off - Remove a binding between two endpoints on two nodes.

zdo bind off <h:source eui64> <d:source ep> <h:destination eui64>
<d:destination ep> <h:source cluster id> <h:request dst addr>`

Remove bound connection between a device identified by source eui64 and endpoint source ep, and a device identified by destination eui64 and endpoint destination ep. The connection is removed for ZCL commands and attributes assigned to the ZCL cluster source cluster id on the request dst addr node (usually, the same address as for the source eui64 device).


zdo mgmt_bind - Read the binding table from a node.

zdo mgmt_bind <h:16-bit dst_addr> [d:start_index]

Send a request to the remote device identified by dst_addr to read the binding table through zdo mgmt_bind_req (see spec. 2.4.3.3.4). If the whole binding table does not fit into a single mgmt_bind_resp frame, the request initiates a series of mgmt_bind_req requests to perform the full download of the binding table. start_index is the index of the first entry in the binding table where the reading starts. It is zero by default.

Example:

zdo mgmt_bind 0x1234

Sends mgmt_bind_req to the device with short address 0x1234, asking it to return its binding table.

Sample output:

[idx] src_address src_endp cluster_id dst_addr_mode dst_addr dst_endp
[ 0] 0b010ef8872c633e 10 0x0402 3 0b010e21591eef3e 64
[ 1] 0b010ef8872c633e 10 0x0403 3 0b010e21591eef3e 64
Total entries for the binding table: 2
Done

zdo mgmt_lqi - Send a ZDO Mgmt_Lqi_Req command to a remote device.

zdo mgmt_lqi <h:short> [d:start index]

Example:

zdo mgmt_lqi 0x1234

Sends mgmt_lqi_req to the device with short address 0x1234, asking it to return its neighbor table.


zdo nwk_addr - Resolve the EUI64 address to a short network address.

zdo nwk_addr <h:eui64>

Example:

zdo nwk_addr 0B010E0405060708

zdo ieee_addr - Resolve the EUI64 address by sending the IEEE address request.

zdo ieee_addr <h:short_addr>

zdo eui64 - Get the EUI64 address of the Zigbee device.

> zdo eui64
0b010eaafd745dfa
Done

zdo short - Get the short 16-bit address of the Zigbee device.

> zdo short
0000
Done

zdo mgmt_leave - Send a request to a remote device to leave the network through zdo mgmt_leave_req (see the specification section 2.4.3.3.5).

zdo mgmt_leave <h:16-bit dst_addr> [h:device_address eui64] [--children] [--rejoin]

Send mgmt_leave_req to a remote node specified by dst_addr. If device_address is omitted or it has value 0000000000000000, the remote device at address dst_addr will remove itself from the network. If device_address has other value, it must be a long address corresponding to dst_addr or a long address of child node of dst_addr. The request is sent with Remove Children and Rejoin flags set to 0 by default. Use options --children or --rejoin do change the respective flags to 1. For more details, see the section 2.4.3.3.5 of the specification.

Examples:

zdo mgmt_leave 0x1234

Sends mgmt_leave_req to the device with the short address 0x1234, asking it to remove itself from the network.

zdo mgmt_leave 0x1234 --rejoin

Sends mgmt_leave_req to the device with the short address 0x1234, asking it to remove itself from the network and perform rejoin.

zdo mgmt_leave 0x1234 0b010ef8872c633e

Sends mgmt_leave_req to the device with the short address 0x1234, asking it to remove device 0b010ef8872c633e from the network. If the target device with the short address 0x1234 has also a long address 0b010ef8872c633e, it will remove itself from the network If the target device with the short address 0x1234 has a child with long address 0b010ef8872c633e, it will remove the child from the network.

zdo mgmt_leave 0x1234 --children

Sends mgmt_leave_req to the device with the short address 0x1234, asking it to remove itself and all its children from the network.


zcl cmd - Send a generic command to the remote node.

zcl cmd [-d] <h:dst_addr> <d:ep> <h:cluster> [-p h:profile] <h:cmd_ID> [-l h:payload]

Send a generic command with ID cmd_ID and payload payload to the cluster cluster. The cluster belongs to the profile profile, which resides on the endpoint ep of the remote node dst_addr. Optional default response can be set with -d.

Note
By default, the profile is set to Home Automation Profile, and the payload is empty.
The payload requires the little-endian byte order.
To send a request using binding table entries, set dst_addr and ep to 0.

zcl attr read - Retrieve the attribute value of the remote node.

zcl attr read <h:dst_addr> <d:ep> <h:cluster> [-c] <h:profile> <h:attr_id>

Read the value of the attribute attr_id in the cluster cluster. The cluster belongs to the profile profile, which resides on the endpoint ep of the remote node dst_addr. If the attribute is on the client role side of the cluster, use the -c switch.


zcl attr write - Write the attribute value to the remote node.

zcl attr write <h:dst_addr> <d:ep> <h:cluster> [-c] <h:profile> <h:attr_id> <h:attr_type> <h:attr_value>

Write the attr_value value of the attribute attr_id of the type attr_type in the cluster cluster. The cluster belongs to the profile profile, which resides on the endpoint ep of the remote node dst_addr. If the attribute is on the client role side of the cluster, use the-c switch.

Note
The attr_value value must be in the hexadecimal format, unless it is a string (attr_type == 42), then it must be a string.

zcl subscribe on - Subscribe to the attribute changes on the remote node.

zcl subscribe on <h:addr> <d:ep> <h:cluster> <h:profile>
<h:attr ID> <d:attr type>
[<d:min interval (s)>] [<d:max interval (s)>]

Enable reporting on the node identified by the address addr, with the endpoint ep that uses the profile profile of the attribute attr ID with the type attr type in the cluster cluster.

The reports must be generated in intervals not shorter than min interval (1 second by default) and not longer than max interval (60 seconds by default).


zcl subscribe off - Unsubscribe from the attribute reports.

zcl subscribe off <addr> <d:ep> <h:cluster> <h:profile> <h:attr ID> <d:attr type>

Disable reporting on the node identified by the address addr, with the endpoint ep that uses the profile profile of the attribute attr ID with the type attr type in the cluster cluster.


zcl ping - Issue a ping over ZCL.

zcl ping [--no-echo] [--aps-ack] <h:dst_addr> <d:payload size>

Example:

zcl ping 0b010eaafd745dfa 32
Precondition
Ping only after bdb start.

Issue a ping-style command to another CLI device of the address dst_addr by using payload_size bytes of payload.

Optionally, the device can request an APS acknowledgement (--aps-ack) or ask the destination not to sent ping reply (--no-echo).

To implement the ping-like functionality, a new custom cluster has been defined with ID 64. There are four custom commands defined inside it, each with its own ID.

See the following flow graphs for details.


radio fem - Activate the Front-End Modules (FEM) by enabling control lines.

radio fem enable

The configuration of the FEM is defined in external/zboss/osif/zb_nrf52_transceiver.c (see the define ZB_FEM_SETTINGS).

For more information, see the description of the FEM on the 802.15.4 radio driver Wiki and PA/LNA module (FEM support) page.


radio fem <pa|lna|pdn> pin <pin> - Configure FEM pin number

radio fem <pa|lna|pdn> pin <d:pin>

The first argument selects the FEM line to configure. The available options are:

The second attribute selects the GPIO pin that controls the FEM line (Power Amplifier, Low Noise Amplifier, or Power Down control, depending on the first argument).

Note
The FEM configuration may be applied only before the FEM control lines are enabled.

radio fem <pa|lna|pdn> polarity <active_high> - Configure FEM pin polarity

radio fem <pa|lna|pdn> polarity <active_high>

The first argument selects the FEM line to configure. The available options are:

The second attribute selects the polarity of the pin that activates the FEM line (Power Amplifier, Low Noise Amplifier, or Power Down control, depending on the first argument).

Note
The FEM configuration may be applied only before the FEM control lines are enabled.

radio channel set - Set the 802.15.4 channel directly.

radio channel set <d:channel_number>

The <d:channel_number> must be between 11 and 26 (included), since these channels are supported by the driver.

Note
This function sets the channel directly at runtime, contrary to the bdb channel function, which defines the channels allowed for the Zigbee network formation.

radio channel get - Get the current 802.15.4 channel.

radio channel get

version - Print the firmware version.

version
> version
CLI: Dec 11 2018 16:14:18
ZBOSS: 3.1.0.59
Done

reset - Perform device reset using NVIC_SystemReset().

reset
> reset

debug - Enable/Disable debug mode in the CLI.

debug <on|off>

This command unblocks several additional commands in the CLI. They can render the device unstable. It is implied that you know what you are doing.


zscheduler suspend - Suspend Zigbee scheduler processing.

zscheduler suspend

zscheduler resume - Resume Zigbee scheduler processing.

zscheduler resume

Documentation feedback | Developer Zone | Subscribe | Updated