OTA updates with freeRTOS

I have never done OTA updates of custom firmware running on a custom micro/platform (i.e. no ESP32 or Arduino or anything along those lines).

Does freeRTOS provide any functionality that makes the whole process somehow easier and/or safer? Perhaps through AWS (of which at this stage I don’t know much about)?

If so could you please provide or point me to some primer/basic-infos?

Thank you :slight_smile:


You can use the OTA library from github repository GitHub - aws/ota-for-aws-iot-embedded-sdk and documentation Iot OTA Library - FreeRTOS.

The library requires a port for your platform , please refer to the porting guide here Porting the OTA library - FreeRTOS

Example OTA demo for FreeRTOS windows simulator are at OTA Over MQTT Demo and port Windows Simulator Port

The connection to AWS IoT core is mutual authentication TLS and the OTA mechanism provides feature for code signature verification . Please refer to demo documentation for https://freertos.org/ota/ota-mqtt-agent-demo.htm or OTA over HTTP Demo - FreeRTOS

Please let me know if you have more questions.

Thank you,
just so I can get a rough estimate for time planning with the client, for someone who never used AWS or implemented OTA updates, how long would it take to setup and get it working at least in its basic form for a reliable demo?

Just a rough idea… a couple of days, a couple of weeks, a month?

Thank you as always :slight_smile:


You can start with any of the qualified platforms to run the OTA demo. The demo should run out of box for firmware update after you complete the prerequisite configurations in the account.

If you want to start without a board you can use the windows simulator ( OTA Demo Integrated with MQTT Agent - FreeRTOS )or if you can use any of the qualified platforms for running OTA demos out of box. For example -

Texas Instruments CC3220SF-LAUNCHXL
Espressif ESP32
For complete list of platforms for FreeRTOS please refer the device catalogue - Discover qualified IoT hardware and devices | Build and deliver successful IoT solutions on AWS

If you have a platform that is custom or does not have an OTA port then you will require to port it as per instructions here - Porting the OTA library - FreeRTOS

Thank you Pvyawaha,
I will get one of those systems to start with and get familiar, but the demo would need to be on the client’s custom system.

Because I need to provide a time estimate to the client now, could you give me a rough idea of how long it would take me to implement a demo of OTA update on a custom platform (the client system uses PIC32MZ for which I am already using freeRTOS in its basic functionality).

Not having done OTA before, especially with freeRTOS/AWS, I have no idea if it would take me a couple of days, weeks or a couple of months. Not the faintest clue… :slight_smile:

(I have no idea of what needs to be setup on AWS side, of all potential technical risks, setup procedures, amount of code etc)

At this stage is just for me to provide them an estimate for the project timeline.

Could you give me a very rough idea of realistic time to implement it for a novice of freeRTOS and OTA updates?

Thank you as always! :slight_smile:

Thank you for sharing the platform , the port for Microchip Curiosity PIC32MZEF board is available along with the supported bootloader for OTA updates.

Please refer to Install the initial version of firmware on the Microchip Curiosity PIC32MZEF - FreeRTOS

OTA updates should run without any modifications on this platform and after completing the prerequisites. You can then integrate it in your application.

Please note the port for Microchip Curiosity PIC32MZEF is available in the Release Version 202012.00 · aws/amazon-freertos · GitHub release and not main.

Thank you pvyawaha :slight_smile: