This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

How to create FOTA by our own cloud?

Hi Nordic team

I tried AWS FOTA and Nordic FOTA at nrf connect for cloud. It did work well.

We now want to set up our own cloud. It's neither AWS cloud nor nrf connect for cloud. 

If we want to add FOTA function for our own cloud,  what do you suggest to do?

Thanks.

  • It depends :-) ... some cloud providers have higher level concepts for managing FOTA. For example AWS has IoT Jobs which have a server side component that keeps track of ongoing updates to devices and offers features like gradual roll-out and granular statistics around that. 

    But the basics are roughly the same: the device needs to be notified about a pending update (this could also be achieved through a pull request), and the device then needs to download the firmware image. This process is typically split in two steps: the notification uses MQTT to notify the device and provides some meta data about the update, including a download URL and then HTTP(s) is used to download the firmware image because this protocol is better suited for larger payloads.

    You can build this process on any cloud because they all offer some variant of a digital twin to store the job information and a way to serve firmware files using HTTPs.

    Here is an example on Azure that follows this principle.

    In Bifravst for Azure this is implemented and you can see how the process works in this test scenario.

  • Hi Markus

    Thanks for your reply.

    At my project, http client (NRF9160) was connected to specific http server which is not AWS. 

    Through LTE link, http client reported GPS and sensor data to the http server. 

    If we don't want AWS to create bucket for FOTA, can we use the "Update Bundles" function at NRF Cloud account?

    1. So, normally, NRF9160 links to the ipv4 address and port number of my own http server.

        If we want to update firmware, press button and NRF9160 switch to link to the ipv4 address and port number of         

        "Update Bundles". Can it work? That is, I can upload my latest application bin file at NRF Cloud to replace AWS

        bucket.

    2. How can I know the ipv4 address and port number  of "Update Bundles"? As below, it was from prj.conf at

        http_application_update project. Besides, did it need certificates for this FOTA link to NRF Cloud? 

    # Sample configuration
    CONFIG_DOWNLOAD_HOST="nrfconnectsdk.s3.eu-central-1.amazonaws.com"
    CONFIG_DOWNLOAD_PORT=0
    CONFIG_DOWNLOAD_FILE="app_update.bin"
    CONFIG_APPLICATION_VERSION=1

  • The nRF Connect for Cloud Firmware Update features requires the device the update is for to be connected using MQTT to the nRF Connect for Cloud MQTT endpoint. When you create a new bundle the download location will be sent to the device using AWS IoT Jobs using a unique, unpredictable link (and filename). The download location will point to an S3 Bucket, and AWS does not provide fixed IPs for the HTTP endpoint of S3 (but you can look up a dynamic list here).

    There is no pure HTTP (nonsecure) way right now to receive Firmware Updates created for a specific device using nRF Connect for Cloud.

Related