

# AWS Device Qualification Program for FreeRTOS
<a name="afr-qualification"></a>

## What is FreeRTOS
<a name="afr-qualification-what-is"></a>

Developed in partnership with the world's leading chip companies over a 20-year period, and now downloaded every 170 seconds, FreeRTOS is a market-leading real-time operating system (RTOS) for microcontrollers and small microprocessors. Distributed freely under the MIT open source license, FreeRTOS includes a kernel and a growing set of libraries suitable for use across all industry sectors. FreeRTOS is built with an emphasis on reliability and ease of use. FreeRTOS includes libraries for connectivity, security, and over-the-air (OTA) updates, and demo applications that demonstrate FreeRTOS features on [qualified boards](https://devices.amazonaws.com/search?page=1&sv=freertos).

 For more information, visit [FreeRTOS.org](https://www.freertos.org/).

## What is the AWS Device Qualification Program for FreeRTOS
<a name="afr-qualification-what-is-qualp"></a>

The [AWS Device Qualification Program for FreeRTOS](https://aws.amazon.com/partners/dqp/) verifies an integration of FreeRTOS AWS IoT libraries running on a specific microcontroller-based development board is compatible with AWS's published best practices for AWS IoT Core connectivity, and robust enough to pass the [tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests) specified by the qualification program.

Boards qualified under this program are listed in the [AWS Partner Device Catalog](https://devices.amazonaws.com/search?page=1&sv=freertos).

For information about qualifying your board for FreeRTOS, see [Qualifying your board](freertos-qualification.md).

# Qualification FAQs
<a name="afr-qualification-faqs"></a>

Q: *Can I qualify a board that contains a microcontroller (MCU) without built-in cloud connectivity?*  
Yes. However, the board that uses the MCU should have direct or indirect cloud connectivity (for example - using a separate communications module). 

Q: *Which FreeRTOS versions are eligible for qualification?*  
Use either the latest FreeRTOS Long Term Support (LTS) version (recommended, [GitHub](https://github.com/FreeRTOS/FreeRTOS-LTS)) or the latest officially released FreeRTOS libraries ([GitHub](https://github.com/FreeRTOS/FreeRTOS)) version.

Q: *What are the mandatory tests for qualification?*  
The [Porting flowchart](https://docs.aws.amazon.com/freertos/latest/portingguide/porting-chart.html) describes the software libraries and tests required to qualify your board.

Q: *Can I mix and match library versions for qualification? For example, use coreMQTT from the LTS package and the FreeRTOS-Plus-TCP version from latest FreeRTOS releases?*  
No. We test libraries with a specific version combination for interoperability, and release these combinations as version-tagged bundles (for example, [FreeRTOS 202210.xx LTS](https://github.com/FreeRTOS/FreeRTOS-LTS/tree/202210-LTS), [FreeRTOS 202112.00](https://github.com/FreeRTOS/FreeRTOS/tree/202112.00)). You can find information on these combinations in `manifest.yml` files in corresponding repositories (for example, [FreeRTOS 202210.xx LTS manifest file](https://github.com/FreeRTOS/FreeRTOS-LTS/blob/202210-LTS/manifest.yml)).

Q: *Can I qualify my board with a previous LTS version?*  
We recommend you use the latest LTS release (including the latest patches) for new qualifications. If you are already in the process of qualifying with the previous LTS release, continue to work with your local APN representative.

Q: *Can I qualify my board with previous LTS version?*  
No, we recommend you use the latest LTS release for new qualifications. If you are already in the process of qualifying with a previous LTS release, continue to work with your local APN representative. 

Q: *What happens to my existing qualified boards?*  
The existing qualified boards will continue to be listed in the AWS Partner Device Catalog. When needed, we will directly communicate any changes required to the existing qualifications. If you want to upgrade your qualified boards to the latest FreeRTOS libraries or FreeRTOS LTS versions, you must re-verify against the new [tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests).

Q: *Do I need to test using abstraction layers in FreeRTOS, including secure-sockets and Wi-Fi management?*  
No. See the required software libraries and tests in the [Porting flowchart](https://docs.aws.amazon.com/freertos/latest/portingguide/porting-chart.html) in the *FreeRTOS Porting Guide*.

Q: *Do I need to start over if a new FreeRTOS version is released while I am porting the previous version?*  
No. You can still qualify using the previous version. However, we strongly recommend that you use the latest FreeRTOS or FreeRTOS LTS version available at the time you start porting.

Q: *My board uses a kernel architecture that I have modified and is not part of the official FreeRTOS release. Can I still qualify?*  
No, only official kernel ports available from [GitHub](https://github.com/FreeRTOS/FreeRTOS-Kernel) are accepted for qualification. If you have an unsupported architecture or additional functionality to add to an existing kernel port, you can follow our [Contributing Guidelines](https://github.com/aws/amazon-freertos/blob/main/CONTRIBUTING.md) to submit a pull request to [GitHub](https://github.com/FreeRTOS/FreeRTOS-Kernel). After the pull request is reviewed and merged, it will become official and you will be able to qualify with the kernel port. For more information, contact your local APN representative.

Q: *My board does not offload TCP/IP to hardware. Is a particular TCP/IP stack required for FreeRTOS qualification?*  
If your board does not have on-chip TCP/IP functionality, you can use either the FreeRTOS\$1TCP TCP/IP stack or the latest version of the lwIP TCP/IP stack. For more information, see [Porting a TCP/IP Stack](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-porting-tcp.html) in the *FreeRTOS Porting Guide*.

Q: *Do we need to implement PKCS11 even though the TLS stack is offloaded to the communications chip?*  
No, you don’t need to implement or test PKCS11.

Q: *My device uses only one of the protocols (HTTP, MQTT) and only one of the available communication channels (Wi-Fi, Ethernet, BLE). If all the OTA related IDT tests pass using just one protocol-communication channel combination, then will my device get qualified?*  
Yes. However, we encourage you to get other combinations qualified on your device as well, if possible. In this way, you can provide support for more customer use cases.

Q: *We will be hosting our FreeRTOS port in our own repository as per the qualification requirements. What should be included in the repository in terms of folders and demos for support?*  
Host all the files and folders necessary to make the port work as an out-of-the-box experience for a customer who downloads it from the repository. You can submodule the FreeRTOS kernel, FreeRTOS libraries, FreeRTOS tests, third-party libraries, and vendor-specific files, along with a docs folder for your documents and your demo folder. The coreMQTT Agent demo must be supported. Other demos are at your discretion.

Q: *My device uses only cellular connectivity. Can I still qualify?*  
Yes. The Cellular Interface library supports the AT commands of a TCP offloaded Cellular abstraction layer. These are available from [GitHub](https://github.com/FreeRTOS/FreeRTOS-Cellular-Interface). For more information, see [ Porting the Cellular Interface library](https://docs.aws.amazon.com/freertos/latest/portingguide/freertos-porting-cellular.html) in the *FreeRTOS Porting Guide*.

Q: *Where do we host the ported/qualified code?*  
You can host the ported code in any repository based on the application and needs of your customers. The repository link must be publicly available and linked to the AWS Partner Device Catalog product page.

Q: *Is passing the OTA tests needed for FreeRTOS qualification?*  
Yes. Customers want their deployed AWS IoT devices to have the functionality to be remotely updated, so all new qualifications will need to pass the OTA tests.

Q: *How long is my qualification valid?*  
An existing FreeRTOS qualification is valid as long as the board or the software components (for example, FreeRTOS libraries, drivers, third-party libraries) are not discontinued. FreeRTOS LTS based qualifications are not valid after the corresponding LTS period ends.

Q: *When does AWS recommend renewal of qualification?*  
We recommend you periodically re-qualify with the latest FreeRTOS LTS or FreeRTOS versions so that customers get the latest security patches, valid LTS libraries, or new FreeRTOS features.

Q: *Can I use AWS IoT Device Tester to test my FreeRTOS implementation but not to qualify my board?*  
Yes, we encourage you to use AWS IoT Device Tester and [AWS IoT Device Advisor](https://aws.amazon.com/iot-core/features/) to test your FreeRTOS implementations.

Q: *Do I need to pay to use AWS IoT Device Tester?*  
No, it is free to use. However, you may incur some charges due to the use of AWS services (for example, for MQTT messages, connectivity, OTA execution).

If you have questions about qualification that are not answered on this page or in the rest of the *FreeRTOS Qualification Guide*, contact your AWS representative or [the FreeRTOS engineering team](https://freertos.org/RTOS-contact-and-support.html).

# Examples of qualification projects
<a name="examples-qualification"></a>

Here is an example of a FreeRTOS Featured IoT Integration.

[Targeting NXP RT1060 hardware platform](https://github.com/FreeRTOS/iot-reference-nxp-rt1060).

# Latest changes
<a name="latest-changes"></a>

The following table describes the important changes to the AWS Device Qualification Program for FreeRTOS since the last release.


**Test cases**  

| Changes | Description | 
| --- | --- | 
| Updated source code requirements |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/freertos/latest/qualificationguide/latest-changes.html)  | 
| Updated qualification artifacts |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/freertos/latest/qualificationguide/latest-changes.html)  | 
| Updated integration tests |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/freertos/latest/qualificationguide/latest-changes.html)  | 

For previous changes, see [FreeRTOS version history](https://docs.aws.amazon.com/freertos/latest/portingguide/doc-history.html) in the *FreeRTOS Porting Guide*.