@sg- sg- released this Jul 14, 2017 · 11296 commits to master since this release

Assets 2

This is the release note for ARM mbed OS 5.4.0. It summarizes the major enhancements in this version.

You can find the mbed OS 5.4.0 release on GitHub.

About this release

mbed OS 5.4.0 incorporates functionality you can use to prepare for the upcoming mbed Cloud device management services. This includes bootloader and filesystem infrastructure and the certified Thread 1.1 stack for developers. In addition, this release contains many minor fixes and enhancements and brings target platform support up to 74 targets.

The following sections provide more details about this release.


mbed OS 5.4 adds flexible filesystem support to address the needs of IoT applications requiring storage within the end node. This release already includes a FAT filesystem implementation for removable media, such as SD cards, and future releases will add embedded flash filesystems and encryption.

The filesystem is integrated with the C standard libraries of the ARM, IAR and GCC compilers. It is available for use across all mbed Enabled platforms.

The release also includes early access to the mbed OS bootloader, so partners can add support for their targets' flash controllers. This forms part of the support for the upcoming mbed Cloud Update service, which allows managing device firmware update campaigns.

To read the documentation, see file system and bootloader.


mbed OS 5.4 uses the recently certified mbed Thread 1.1 stack to provide solutions for building end nodes and border routers.

A Linux-based Access Point reference that uses the Thread border router is also available.

The mbed OS LoRaWAN APIs are available for partner feedback and integration.


The mbed crypto libraries in mbed TLS include all the internal partner APIs and documentation for enabling hardware entropy and symmetric and asymmetric cryptographic acceleration. Partners are working on implementations for their target platforms, and a partner workshop will support them. We expect support for the first set of targets in 5.5.


The feature branch work on our CMSIS5 and CMSIS-RTOS2 upgrade is nearing completion, so testing will begin soon after the release of 5.4. We are aiming for inclusion on mainline for 5.5.

Throughout the year, we also plan a program of upgrading supported compilers to ensure the latest features and fixes from the different ARM compilers are available to developers; this will mean supporting ARM GCC Embedded 6, ARM Compiler 6 and IAR Embedded Workbench 8.

If you would like to be involved in helping test any of these upgrades to help minimize the effect on developers, please contact us.


Thanks to our partners’ hard work, mbed OS 5.4 now supports 74 target platforms.

We will continue to add new targets in our biweekly releases as partners introduce support.

Fixes and changes

Please see the mbed-os GitHub repository referenced below for a full list of changes introduced in this release.

Known Issues

Online IDE does not support multiple binary production

  • Description: Compiling an application with bootloader only produces the standalone application binary. It should produce the composite binary.

  • Workaround: Use mbed CLI.

  • Reported Issue: ARMmbed/mbed-os-example-bootloader-blinky#4

  • Priority: MAJOR

mbed TLS causes stack overflow in mbed OS targets

  • Description: The stack memory usage of some mbed TLS features is higher than 4 KB, which may cause stack overflow errors when running in constrained embedded environments with mbed OS, which are particularly limited in RAM.

  • Workaround: The amount of stack required depends on the application and what features of the library it chooses to use. More intensive, demanding tasks may not be possible on more limited, constrained devices, so we recommend designing for the limitations of the target device or choosing a device suitable for your application.

  • Reported Issue: ARMmbed/mbed-os-example-tls#14

  • Priority: MAJOR

mbed TLS DTLS renegotiation checks also compare record epoch value

  • Description: The TLS renegotiation routines execute after the DTLS record sequence number for incoming or outgoing messages has exceeded a user-defined period. According to the RFC 6347 Section 4.3.1, the record sequence is a 6 byte unsigned integer, but the mbed TLS function ssl_check_ctr_renegotiate() compares 8 bytes. The additional 2 bytes correspond to the record epoch value, which may result in the incorrect execution of the renegotiation routines.

  • Workaround: There is no known workaround for this issue.

  • Reported Issue: ARMmbed/mbedtls#687

  • Priority: MAJOR

mbed TLS server does not check that TLS_FALLBACK_SCSV is the last cipher suite

  • Description: An mbed TLS server does not check that the TLS_FALLBACK_SCSV value is the last element in the cipher suites part of the ClientHello message. Note that RFC7505 Section 4 states that placing the SCSV at that position is a SHOULD for the client. However, the server behavior description in RFC7505 Section 5 does not prescribe anything regarding the location of the TLS_FALLBACK_SCSV in the ClientHello.

  • Workaround: There is no known workaround for this issue.

  • Reported Issue: ARMmbed/mbedtls#810

  • Priority: MAJOR

mbed TLS commissioner does not retransmit message when it receives retransmission

  • Description: There are two issues with DTLS handshake retransmission. First, the joiner fails to correctly parse received records because it does not correctly handle queued retransmissions received. Second, the commissioner may cause a deadlock because it does not retransmit certain records after it receives retransmission as instructed in RFC6347 Section 4.2.4.

  • Workaround: There is no known workaround.

  • Reported Issue: openthread/openthread#1207

  • Priority: MAJOR

Using the release

You can fetch the mbed OS 5.4.0 release from the mbed-os GitHub repository using the tag “mbed-os-5.4.0”.

Please feel free to ask any questions or provide feedback about this release on the forum, or to contact us at support@mbed.org.