Migrating nRF53 Zigbee project to nRF54 results in ZBOSS errors

Hi,

I try to migrate a working nRF53 Zigbee project from SDK 2.7 to the latest SDK and an nRF54. As described here, I also switched to Zigbee R23. The project structure is shown below.

But the build exit with the error message

C:/Users/konta/Desktop/BeeLight/firmware/ncs-zigbee/subsys/osif/zb_nrf_nvram.c:16:32: error: 'PM_ZBOSS_NVRAM_SIZE' undeclared here (not in a function); did you mean 'PM_SRAM_SIZE'?
   16 | #define ZBOSS_NVRAM_PAGE_SIZE (PM_ZBOSS_NVRAM_SIZE / CONFIG_ZIGBEE_NVRAM_PAGE_COUNT)
      |                                ^~~~~~~~~~~~~~~~~~~
C:/Users/konta/Desktop/BeeLight/firmware/zephyr/include/zephyr/toolchain/gcc.h:87:52: note: in definition of macro 'BUILD_ASSERT'
   87 | #define BUILD_ASSERT(EXPR, MSG...) _Static_assert((EXPR), "" MSG)
      |                                                    ^~~~
C:/Users/konta/Desktop/BeeLight/firmware/ncs-zigbee/subsys/osif/zb_nrf_nvram.c:18:15: note: in expansion of macro 'ZBOSS_NVRAM_PAGE_SIZE'
   18 | BUILD_ASSERT((ZBOSS_NVRAM_PAGE_SIZE % PHYSICAL_PAGE_SIZE) == 0,
      |               ^~~~~~~~~~~~~~~~~~~~~
C:/Users/konta/Desktop/BeeLight/firmware/zephyr/include/zephyr/toolchain/gcc.h:87:51: error: expression in static assertion is not an integer
   87 | #define BUILD_ASSERT(EXPR, MSG...) _Static_assert((EXPR), "" MSG)
      |                                                   ^
C:/Users/konta/Desktop/BeeLight/firmware/ncs-zigbee/subsys/osif/zb_nrf_nvram.c:18:1: note: in expansion of macro 'BUILD_ASSERT'
   18 | BUILD_ASSERT((ZBOSS_NVRAM_PAGE_SIZE % PHYSICAL_PAGE_SIZE) == 0,
      | ^~~~~~~~~~~~
C:/Users/konta/Desktop/BeeLight/firmware/ncs-zigbee/subsys/osif/zb_nrf_nvram.c: In function 'zb_osif_nvram_init':
C:/Users/konta/Desktop/BeeLight/firmware/ncs-zigbee/subsys/osif/zb_nrf_nvram.c:39:31: error: 'PM_ZBOSS_NVRAM_ID' undeclared (first use in this function)
   39 |         ret = flash_area_open(PM_ZBOSS_NVRAM_ID, &fa);
      |                               ^~~~~~~~~~~~~~~~~
C:/Users/konta/Desktop/BeeLight/firmware/ncs-zigbee/subsys/osif/zb_nrf_nvram.c:39:31: note: each undeclared identifier is reported only once for each function it appears in
C:/Users/konta/Desktop/BeeLight/firmware/ncs-zigbee/subsys/osif/zb_nrf_nvram.c:45:31: error: 'PM_ZBOSS_PRODUCT_CONFIG_ID' undeclared (first use in this function)
   45 |         ret = flash_area_open(PM_ZBOSS_PRODUCT_CONFIG_ID, &fa_pc);
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~
C:/Users/konta/Desktop/BeeLight/firmware/ncs-zigbee/subsys/osif/zb_nrf_nvram.c: In function 'zb_get_nvram_page_length':
C:/Users/konta/Desktop/BeeLight/firmware/ncs-zigbee/subsys/osif/zb_nrf_nvram.c:55:1: warning: control reaches end of non-void function [-Wreturn-type]
   55 | }
      | ^
[449/492] Building C object modules/nrfxlib/nrf_802154/nrf_802154/driver/CMakeFiles/nrf-802154-driver.dir/src/nrf_802154_trx_dppi.c.obj

What causes this issue and how can I fix it?

  • Hi Andreas,

    thanks for the effort. I will try it with v2.9.0 now, at least until I got Zigbee running (I also have this issue: nRF54L Zigbee R23 production configuration understanding issues . The sensor drivers doesn´t care for now because I have to patch the light sensor driver anyway, so I can use a patch to add it.

    But the code is compiling without any issues now. So I think the structure of the project is good. I´ve created the structure based on the template project by adding my code as an additional template and then moving everything around and changing the configuration files accordingly. The result was always the same.

  • Hi Andreas,

    update: Thanks to Marte (see the other thread), flashing of the Zigbee config is successful now, and this results in a successful join attempt (the data aren´t correct atm, but doesn´t care for now):

    The device is leaving the network after a short time. I think because of the wrong data...

  • Kampino said:
    I will try it with v2.9.0 now,

    Allright, let me know if there's still any issues and we'll have a look

    Kampino said:
    But the code is compiling without any issues now. So I think the structure of the project is good. I´ve created the structure based on the template project by adding my code as an additional template and then moving everything around and changing the configuration files accordingly. The result was always the same.

    Great! Glad to hear that

    Kind regards,
    Andreas

  • Hi Andreas,

    my device is reporting this when connecting with Zigbee2Mqtt:

    00> [00:06:02.442,995] <inf> zigbee_app_utils: Unimplemented signal (signal: 56, status: 0

    Signal 56 is documented as "ZB_SIGNAL_JOIN_DONE 56U" and I´m curious why this signal is missing. I can´t get my device to stay in the network. It always joining and leaving the network.

  • Hi  

    I found the issue. I must add the install code to Zigbee2Mqtt, but for some reason I can´t add a 16 byte code (I did it wrong probably...). So I disabled the install code in the config

    # Enable channel 11 and 16
    channel_mask: 0x10800
    #install_code: 83FED3407A939723A5C639B26916D505
    extended_address: 86D79AC5BAE41FA3
    tx_power: 9
    app_data: 01ABCD
    Can you tell me what this means?
    app_data: 01ABCD
    Does this number has a specific function or is it a dummy from the template?
Related