Apache Mynewt RTOS for IoT Includes an Open Source Bluetooth 4.2 LE Stack for MCUs

The Apache Software Foundation has recently released version 0.9 Apache Mynewt open source real-time operating systems for micro-controllers under… an Apache 2.0 license. The RTOS works on STMicro STM32 Cortex-M4, and Arduino Zero / M0 Cortex-M0 boards, but they’ve also implemented the  first open source Bluetooth Low Energy stack for MCUs, starting with support for Nordic Semi nRF52 Cortex-M4 and nRF51 Cortex-M1 evaluation boards, and acting as a replacement for Nordic SoftDevice Bluetooth Smart / LE solution.

Apache_Mynewt_System_Block_DiagramThe operating system competes with ARM mbed, the Zephyr Project, and RIoT, but the foundation claims it is the only one that’s both community driven and permissively licensed (Apache 2.0) project in the embedded space.

The OS is modular and can be configured with a Go-like build and package management tool with components such as secure boot loader, flash file system and TLV storage mechanism, rich logging infrastructure, circular buffering schemes, and Bluetooth 4.2 Low Energy. WiFi, Thread, and Bluetooth 5 are also part of the roadmap, and support for Javascript and Python is currently being worked on.

You can find more information and/or get started with the project on Apache Mynewt microsite.

Support CNX Software - Donate via PayPal or become a Patron on Patreon

7
Leave a Reply

avatar
7 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
cnxsoftadhJohn S.newtbot Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
newtbot
Guest

Great summary. Also of note is that Arduino.org announced the use of Apache Mynewt for the upcoming Primo and Otto boards.

https://globenewswire.com/news-release/2016/05/20/842021/0/en/Arduino-and-Runtime-Collaborate-to-Introduce-Apache-Mynewt-incubating-to-Arduino-Ecosystem.html

John S.
Guest
John S.

It’s distributed as a docker image + wrapper script. I really like this approach for dealing with the usual mess of cross-compiling toolchains and libraries that have to be installed for something like this. It’s so easy to install and use, and easy to update too.

(Probably a pain for Windows users right now, but I’m pleased projects are increasingly willing to stop letting that concern hold the rest of the world back from improving. And MS is working to adopt windows to the new-world-order of software development with their ubuntu+bash layer and docker partnerships, so perhaps it is or will soon be a pleasant experience on Windows too.)

John S.
Guest
John S.

Actually, it turns out they have a very poor implementation of the docker+wrapper setup. The provided wrapper is too simplistic: it doesn’t pass along the current user (so everything generated ends up owned by root), it chmods everything 0600 (readable only by root), and it doesn’t search for the project root, instead it just mounts the PWD (so you must always change directories back to the top-level of the project before running any ‘newt’ commands).

It’s actually incredibly painful to use. I assume everyone on the project uses local, in-development installs of the tools, but I don’t think anyone has actually tried running the docker install, as it’s basically unusable.

I’d recommend they look at yotta’s wrapper script as an example of a better implementation.

adh
Guest
adh

Thanks for your comments, John S. Your remark about mounting PWD is accurate, and we can improve the script to search for the project head. The newt command is intended to be run only within a particular project but yes, having to type ../newt could get tedious. Will take a look at yotta’s wrapper script as suggested.

However, not everything generated ends up owned by root. I use Docker instances on Mac, and a couple others use it on Windows. The container container itself maybe owned by root but all the project and repo files generated in the project directory hierarchy are owned by the current user. Other than the path reference while calling newt, the usage is pretty transparent. It takes a tad bit longer when using Docker (e.g. building targets) but we have tried to keep the usage experience the same. I urge you to give it another try and create a new project and see. Thanks!

@John S.

adh
Guest
adh

@John S.
Just tried the Docker option on Linux – and the downloaded files are indeed owned by root. We will fix this. Thanks for the alert!

adh
Guest
adh

@John S.
The updated wrapper script fixes this and makes it simple to use. Give it a try now.
https://mynewt.apache.org/latest/os/get_started/docker/