[Zigbee] FOTA Server limitation

Setup
nRF Util
nRF52840DK

Hi all,

I am using the Zigbee FOTA server provided by  nRF Util DFU Zigbee  for updating my Zigbee End Device(ZED). 
When I was trying to flash the nRF52840DK with .zigbee image in following way: 
nrfutil dfu zigbee -f app.zigbee -chan 25 -snr 683904357
I got an nrfjprog error: 
address 0x00100000 does not map to a known memory.\nerror: the file specified is not a valid hex file, has data outside valid areas

After some investigation and code review of python nRF Util DFU Zigbee packaged I noticed that the application image to be sent over the Zigbee is placed at address: 
OTA_UPDATE_OFFSET=0x80000. 
In the ota_flasher.py I spot following lines of code :

ih = IntelHex()
update = open(fw, 'rb').read()
ih.puts(OTAFlasher.OTA_UPDATE_OFFSET, update)


I am using nRF52840DK as a FOTA server so maximum size of the image used for FOTA can be 1024kB - 0x80000 = 512kB. 
Unfortunately my ZED application exceeded 512kB. 
What makes things worse is that the FOTA Server comes with precompiled .hex file so it is impossible to adjust that offset.

My questions are: 
Is Nordic able to provide the code for the Zigbee Fota Server ?
Is it possible for Nordic to extend nRF Util functionality to support nRF52840DK external flash ? 
Is it possible to get from Nordic a template which will implement Zigbee FOTA Server over NCP ? Then fota image can be sent directly from PC for example. 

At this moment testing FOTA by using any nRFDK is impossible. It is a blocking point for development and testing.

I look forward to hearing from you

Parents
  • Hi,

    Which version of nRF Util are you using?

    Are you creating your own Zigbee DFU image using nRF Util, or are you using the one that is automatically generated in the build directory, for example build/zephyr/127F-0141-01020003-light_switch.zigbee? You should be using the latter.

    Is Nordic able to provide the code for the Zigbee Fota Server ?

    We do not have code for Zigbee FOTA server in nRF Connect SDK, but there is an example for it in nRF5 SDK: Zigbee OTA Upgrade Server Example. This SDK is deprecated so you should not create new projects with it, but the Zigbee implementations in both SDKs are based on the ZBOSS stack, so you can look at how the OTA Upgrade cluster is used.

    Is it possible for Nordic to extend nRF Util functionality to support nRF52840DK external flash ? 

    Do you mean external flash on the OTA server? If so, this cannot be done. If you mean external flash on the client, this is already supported.

    Is it possible to get from Nordic a template which will implement Zigbee FOTA Server over NCP ? Then fota image can be sent directly from PC for example. 

    We do not have a template for this, but we do have Zigbee: NCP sample. You can create your own firmware for the NCP Host. I recommend taking a look at the ZBOSS NCP Host user guide and the existing two NCP host samples.

    Best regards,
    Marte

  • I am using nrfutil 7.2.0.


    Is Nordic able to provide the code for the Zigbee Fota Server ?

    That really helped me. I did not know there is such a sample. I created my own FOTA Server based on that code.

    Is it possible for Nordic to extend nRF Util functionality to support nRF52840DK external flash ?

    I was thinking on saving the OTA image directly in the external flash (by applying nrfjprog qspi option in the ota_flasher.py). Then FOTA Server may check for the OTA Image existance by checking the address 0x0 in the external flash memory. As far as I know each development kit which supports Zigbee has external flash on its board, but that won't work for dongles unfortunately.

      Is it possible to get from Nordic a template which will implement Zigbee FOTA Server over NCP ? Then fota image can be sent directly from PC for example

    Thanks, I will take a look

  • Hi,

    Pawel(embeddedsolutions.pl) said:
    I was thinking on saving the OTA image directly in the external flash (by applying nrfjprog qspi option in the ota_flasher.py).

    Are you looking at ota_flasher.py from this github repository https://github.com/NordicSemiconductor/pc-nrfutil? This nRF Util is deprecated and replaced by a new nRF Util tool, which is available through our webpage here: nRF Util. The new tool is not open source, so you cannot change any of the source files, such as ota_flasher.py.

    If you implement your own OTA server then saving the OTA image directly in external flash should be possible.

    Best regards,
    Marte

Reply Children
Related