Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/architectures.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ System-on-Chip designs

The single-chip solution has a combined RFIC (the IEEE 802.15.4 in case of Zigbee) and processor.
Both the Zigbee stack and the application layer run on the local processor.
The ZBOSS stack communicates directly with the nRF 802.15.4 radio driver, bypassing the Zephyr networking (L2) layer.

This design has the following advantages:

Expand Down
60 changes: 54 additions & 6 deletions docs/configuring.rst
Original file line number Diff line number Diff line change
Expand Up @@ -95,24 +95,72 @@ You can enable one of the following alternative options to select the channel on
IEEE 802.15.4 EUI-64 configuration
==================================

The Zigbee stack uses the EUI-64 address that is configured in the IEEE 802.15.4 shim layer.
By default, it uses an address from Nordic Semiconductor's pool.
An IEEE EUI-64 address consists of two parts:

If your devices should use a different address, you can change the address according to your company's addressing scheme.
* Company ID, which is a 24-bit MAC Address Block Large (MA-L), formerly called Organizationally Unique Identifier (OUI).
* Extension identifier, which is a 40-bit device unique identifier.

.. include:: includes/ieee802154_eui64_conf_nrf54l.txt
You can configure the EUI-64 for a Zigbee device in the following ways:

.. tabs::

.. tab:: Use the default

By default, the company ID is set to Nordic Semiconductor's MA-L (``f4-ce-36``) through the ``CONFIG_ZIGBEE_VENDOR_OUI`` Kconfig option.
The extension identifier is set to the DEVICEID from the factory information configuration registers (FICR).

.. tab:: Replace the company ID

Change the ``CONFIG_ZIGBEE_VENDOR_OUI`` Kconfig option to your company's MA-L value (24-bit, in hex).
The extension identifier remains the DEVICEID from FICR.

.. tab:: Replace the full EUI-64

You can provide the full EUI-64 value by programming certain user information configuration registers (UICR).
The nRF52 and nRF53 Series devices use the CUSTOMER registers block, while the nRF53 (application core) and nRF54L Series use the OTP registers block.

To use the EUI-64 value from the UICR you must enable the ``CONFIG_ZIGBEE_UICR_EUI64_ENABLE`` Kconfig option.
Then, you need to the ``CONFIG_ZIGBEE_UICR_EUI64_REG`` to the base index of the two consecutive UICR registers that will contain your EUI-64 value.

The following example shows how to replace the full EUI-64 on the nRF52840 device:

1. Enable the ``CONFIG_ZIGBEE_UICR_EUI64_ENABLE`` Kconfig option.

#. Set ``CONFIG_ZIGBEE_UICR_EUI64_REG`` to the UICR offset.
For UICR->CUSTOMER[0] and UICR->CUSTOMER[1], use the default value ``0``.

#. Build and program your application, erasing the whole memory.
Replace *serial_number* with the serial number of your debugger:

.. parsed-literal::
:class: highlight

west build -b nrf52840dk/nrf52840 -p always
west flash --snr *serial_number* --erase

#. Program the two consecutive UICR registers with your EUI-64 value (replace *serial_number* with the serial number of your debugger).
For nRF52840 device with default ``CONFIG_ZIGBEE_UICR_EUI64_REG`` (0), the CUSTOMER base address is ``0x10001080``:

.. parsed-literal::
:class: highlight

nrfutil device x-write --serial-number *serial_number* --address 0x10001080 --value 0x11223344
nrfutil device x-write --serial-number *serial_number* --address 0x10001084 --value 0x55667788
nrfutil device reset --reset-kind=RESET_PIN

If you set ``CONFIG_ZIGBEE_UICR_EUI64_REG`` to a different value, use the corresponding register addresses for your SoC.

At the end of the configuration process, you can check the EUI-64 value using :ref:`lib_zigbee_shell`:

.. code-block:: console

> zdo eui64
uart:~$ zdo eui64
8877665544332211
Done

.. note::
Alternatively, you may use the Production Configuration feature to change the address.
The Production Configuration takes precedence over the shim's configuration.
The Production Configuration takes precedence over the OSIF configuration.

ZBOSS stack start options
=========================
Expand Down
12 changes: 1 addition & 11 deletions docs/images/zigbee_platform_design_multi.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 5 additions & 15 deletions docs/images/zigbee_platform_design_nRF53.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 7 additions & 17 deletions docs/images/zigbee_platform_design_nRF5340_multi.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 1 addition & 11 deletions docs/images/zigbee_platform_design_ncp.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 3 additions & 13 deletions docs/images/zigbee_platform_design_soc.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion docs/lib/osif.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.. _lib_zigbee_osif:
.. _lib_zigbee_osif:

Zigbee ZBOSS OSIF
#################
Expand Down Expand Up @@ -50,6 +50,10 @@ You can also configure the following OSIF-related Kconfig options:
This option is used only if the device does not have NVRAM storage.
* ``CONFIG_ZIGBEE_TIME_COUNTER`` - Configures the ZBOSS OSIF layer to use a dedicated timer-based counter as the Zigbee time source.
* ``CONFIG_ZIGBEE_TIME_KTIMER`` - Configures the ZBOSS OSIF layer to use Zephyr's system time as the Zigbee time source.
* ``CONFIG_ZBOSS_RADIO_INIT_PRIORITY`` - Initialization priority for the nRF 802.15.4 radio driver.
Must be lower than ``CONFIG_ZBOSS_INIT_PRIORITY`` so the radio is ready before ZBOSS starts.
* ``CONFIG_ZBOSS_INIT_PRIORITY`` - Initialization priority for the ZBOSS stack.
Must be higher than ``CONFIG_ZBOSS_RADIO_INIT_PRIORITY``.

Additionally, the following Kconfig option is available when setting :ref:`zigbee_ug_logging_logger_options`:

Expand Down
5 changes: 0 additions & 5 deletions samples/light_bulb/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,5 @@ CONFIG_DK_LIBRARY=y
# This example requires more workqueue stack
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048

# Networking
CONFIG_NET_IPV6=n
CONFIG_NET_IP_ADDR_CHECK=n
CONFIG_NET_UDP=n

# Scene extension
CONFIG_ZIGBEE_SCENES=y
5 changes: 0 additions & 5 deletions samples/light_switch/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,3 @@ CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048

# Enable API for powering down unused RAM parts
CONFIG_RAM_POWER_DOWN_LIBRARY=y

# Networking
CONFIG_NET_IPV6=n
CONFIG_NET_IP_ADDR_CHECK=n
CONFIG_NET_UDP=n
5 changes: 0 additions & 5 deletions samples/light_switch/prj_fota.conf
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,6 @@ CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048
# Enable API for powering down unused RAM parts
CONFIG_RAM_POWER_DOWN_LIBRARY=y

# Networking
CONFIG_NET_IPV6=n
CONFIG_NET_IP_ADDR_CHECK=n
CONFIG_NET_UDP=n


#######################
# Zigbee FOTA overlay #
Expand Down
5 changes: 0 additions & 5 deletions samples/network_coordinator/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,3 @@ CONFIG_DK_LIBRARY=y

# This example requires more workqueue stack
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048

# Networking
CONFIG_NET_IPV6=n
CONFIG_NET_IP_ADDR_CHECK=n
CONFIG_NET_UDP=n
5 changes: 0 additions & 5 deletions samples/shell/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,6 @@ CONFIG_DK_LIBRARY=y
# This example requires more workqueue stack
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048

# Networking
CONFIG_NET_IPV6=n
CONFIG_NET_IP_ADDR_CHECK=n
CONFIG_NET_UDP=n

# Zigbee shell
CONFIG_ZIGBEE_SHELL=y
CONFIG_ZIGBEE_SHELL_DEBUG_CMD=y
Expand Down
5 changes: 0 additions & 5 deletions samples/template/prj.conf
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,3 @@ CONFIG_DK_LIBRARY=y

# This example requires more workqueue stack
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=2048

# Networking
CONFIG_NET_IPV6=n
CONFIG_NET_IP_ADDR_CHECK=n
CONFIG_NET_UDP=n
Loading
Loading