No description
  • C 93.3%
  • Linker Script 2.9%
  • Assembly 2%
  • Shell 1.1%
  • Python 0.2%
  • Other 0.4%
Find a file
Wiktor Kwiatkowski 9b36b91184 bsp/nucleo-h7xxx: Enable HSI48 automatically for TRNG
HSI48 is now turned on by default when the TRNG module is active
2026-04-30 08:55:05 +02:00
.github ci: Use more descriptive workflows names 2026-04-28 08:51:24 +02:00
apps littlefs: Remove defunct syscfg 2026-03-17 13:55:03 +01:00
boot mgmt/imgmgr: Remove obsolete variable 2026-01-23 11:15:46 +01:00
compiler compiler/cortex-m7: Change optimization for debug 2026-04-24 12:22:17 +02:00
crypto crypto/mbedtls: Fix gcm_mynewt coding style 2025-11-14 14:14:31 +01:00
docs mcu/nordic: Remove deprecated XTAL config options 2026-03-17 13:55:03 +01:00
encoding encoding/nanopb: Add initial support for Nanopb 2025-08-01 13:57:44 +02:00
fs littlefs: Remove defunct syscfg 2026-03-17 13:55:03 +01:00
hw bsp/nucleo-h7xxx: Enable HSI48 automatically for TRNG 2026-04-30 08:55:05 +02:00
kernel kernel/os/mbuf: Remove unneeded assignment in os_mbuf_dup 2025-12-10 13:28:56 +01:00
libc baselibc: Remove defunct options 2026-03-17 13:55:03 +01:00
mgmt all: Don't use deprecated NimBLE API 2026-02-23 14:56:39 +01:00
net net/cellular: Bump blues library to v2.5.6 2026-04-24 14:53:43 +02:00
sys os/shell: Add uptime command 2026-04-07 12:48:07 +02:00
targets targets: Build coverity targets without optimisation 2026-02-20 15:25:47 +01:00
test test/mtest: PWM duty cycle verification test using GPIO loopback 2026-04-17 16:44:52 +02:00
time Fix trailing spaces in yaml files 2021-05-02 22:06:49 -03:00
util util/coremark: Register commands statically 2025-11-07 17:52:54 +01:00
.asf.yaml asf.yaml: Force linear history 2025-09-19 15:06:18 +02:00
.clang-format ci: Force clang-format to check empty function brace split 2026-01-08 10:20:27 +01:00
.gitignore Add extra git ignored files/dirs 2018-07-18 15:56:24 -03:00
.mailmap Update mailmap 2026-02-11 16:01:38 +01:00
.rat-excludes net/lwip: Remove copy of lwip repository 2026-02-26 15:54:00 +01:00
.style_ignored_dirs Add blackpill411 files to style ignore 2025-03-13 19:07:19 +01:00
CODING_STANDARDS.md docs: add guidance for local style checking with git-clang-format 2025-07-01 16:49:15 +02:00
Doxyfile ci: Fix doxygen setup 2025-02-26 20:58:54 +01:00
LICENSE net/lwip: Remove copy of lwip repository 2026-02-26 15:54:00 +01:00
man-pages.conf Add doxygen config for building man pages 2020-02-10 14:46:30 -03:00
NOTICE Prepare for Apache Mynewt 1.14.0 release 2025-12-15 13:23:46 +01:00
README.md readme: Add bootloader badge for building against main branch 2026-04-27 22:31:39 +02:00
RELEASE_NOTES.md Prepare for Apache Mynewt 1.14.0 release 2025-12-15 13:23:46 +01:00
repository.yml Apache Mynewt 1.14.0 release 2025-12-19 17:38:25 +01:00
version.yml Add missing license headers and update RAT excludes 2018-05-24 10:13:04 +02:00

Apache Mynewt

CI status

HW CI status

Toggle for more informations

clockdrift

coremark

cputimer

datetime

image

pwm

trng

usb-cdc

usb-msc

watchdog

Overview

Apache Mynewt is an open-source operating system for tiny embedded devices. Its goal is to make it easy to develop applications for microcontroller environments where power and cost are driving factors.

It currently supports the following hardware platforms:

  • nRF52 DK from Nordic Semiconductor (Cortex-M4)
  • RuuviTag Sensor beacon platform (Nordic nRF52832 based)
  • nRF51 DK from Nordic Semiconductor (Cortex-M0)
  • VBLUno51 from VNG IoT Lab (Nordic nRF51822 SoC based)
  • VBLUno52 from VNG IoT Lab (Nordic nRF52832 SoC based, Cortex-M4)
  • BLE Nano from RedBear (Nordic nRF51822 SoC based)
  • BLE Nano2 and Blend2 from RedBear (Nordic nRF52832 SoC based)
  • BMD-300-EVAL-ES from Rigado (Cortex-M4)
  • BMD-200 from Rigado (Cortex-M0)
  • Adafruit Feather nRF52 Pro
  • STM32F4DISCOVERY from ST Micro (Cortex-M4)
  • STM32-E407 from Olimex (Cortex-M4)
  • Arduino Zero (Cortex-M0)
  • Arduino Zero Pro (Cortex-M0)
  • Arduino M0 Pro (Cortex-M0)
  • Arduino MKR1000 (Cortex-M0)
  • Arduino Primo NRF52 (Cortex-M4)
  • NUCLEO-F401RE (Cortex-M4)
  • NUCLEO-F767ZI (Cortex-M7)
  • Discovery kit for STM32F7 Series (Cortex-M7)
  • FRDM-K64F from NXP (Cortex-M4)
  • BBC micro:bit (Nordic nrf51822; Cortex-M0)
  • SiFive HiFive1 (RISC-V Instruction Set Architecture)
  • NINA-B1 BLE module from u-blox (Cortex-M4)
  • 6LoWPAN clicker from MikroElectronika (PIC32MX470 microcontroller)
  • chipKIT Wi-FIRE (PIC32MZ microcontroller)
  • Creator Ci40 module (dual MIPS interAptiv CPU)
  • EE-02 board with Semtech Sx1276 chip from Telenor (Cortex-M4)
  • DA1469x Pro DK from Dialog Semiconductor (Cortex-M33)
  • nRF5340 DK from Nordic Semiconductor (Cortex-M33)

Apache Mynewt uses the Newt build and package management system, which allows you to compose your OS and choose only the components you need.

This repository contains the core packages of the Apache Mynewt OS, including:

  • A Pre-emptive, Real Time OS Kernel
  • A open-source Bluetooth 5.0 stack (both Host & Controller), NimBLE, that completely replaces the proprietary SoftDevice on Nordic chipsets. NOTE NimBLE sources were moved to separate repository.
    • Support for 251 byte packet size
    • Support for all 4 roles concurrently - Broadcaster, Observer, Peripheral and Central
    • Support for up to 32 simultaneous connections.
    • Legacy and SC (secure connections) SMP support (pairing and bonding).
    • Advertising Extensions.
  • A flash filesystem, NFFS, which is designed for tiny (128KB->16MB) flashes.
  • FatFS
  • Flash Circular Buffer
  • JSON and CBOR encoding
  • Bootloader support
  • Remote Software Upgrade
  • HAL and BSP infrastructure designed to abstract microcontroller specifics
  • Shell and Console support
  • Statistics and Logging Infrastructure
  • OIC Client and Server

For more information on the Mynewt OS, please visit our website here. If you'd like to get started, visit the Quick Start Guide.

Browsing

If you are browsing around the source tree, and want to see some of the major functional chunks, here are a few pointers:

  • kernel: Contains the core of the RTOS (kernel/os)

  • sys: Contains a number of helper libraries for building applications. Including a console (sys/console)), shell (sys/shell))

  • mgmt: Contains the management libraries for newtmgr mgmt/newtmgr), which supports software upgrade and remote fetching of logs and statistics.

  • net: Contains the networking packages. Highlights of the net directory are the NimBLE and IP packages. Nimble is a full Bluetooth host and controller implementation, that is written from the ground up for the Apache Mynewt Operating System (due to code moved to separate repo this folder contains only compatibility package files). ip is a port of LWIP, a complete IPv4 and IPv6 implementation.

  • hw: Contains the HW specific support packages. Board Support Packages are located in hw/bsp, and the MCU specific definitions they rely on are located in hw/mcu. There is a HAL (Hardware Abstraction Layer) stored in hw/hal, even though the implementation of various HALs are stored in the MCU specific definitions. Finally, drivers can be found in hw/drivers. Drivers provide a higher-level interface to the hardware than the HAL, and may require the Mynewt operating system to function.

  • fs: Contains the FS package (fs/fs) which is the high-level Apache Mynewt file system API. A specific implementation of that FS, is NFFS (Newtron Flash File System.) The Newtron file system is a FS that has been built from the ground-up in Apache Mynewt, designed to be optimized for small (64KB-32MB) flashes. The fs directory also contains fcb, a flash circular buffer implementation.

Sample Applications

In addition to some of the core packages, there are also some sample applications that show how to instantiate the Apache Mynewt system. These sample applications are located in the apps/ directory. They include:

Getting Help

If you are having trouble using or contributing to Apache Mynewt, or just want to talk to a human about what you're working on, you can contact us via the developers mailing list.

Although not a formal channel, you can also find a number of core developers on the #mynewt channel on Freenode.

Also, be sure to checkout the Frequently Asked Questions for some help troubleshooting first.

Contributing

Anybody who works with Apache Mynewt can be a contributing member of the community that develops and deploys it. The process of releasing an operating system for microcontrollers is never done: and we welcome your contributions to that effort.

More information can be found at the Community section of the Apache Mynewt website, located here.

Pull Requests

Apache Mynewt welcomes pull request via Github. Discussions are done on Github, but depending on the topic, can also be relayed to the official Apache Mynewt developer mailing list dev@mynewt.apache.org.

If you are suggesting a new feature, please email the developer list directly, with a description of the feature you are planning to work on.

We do not merge pull requests directly on Github, all PRs will be pulled and pushed through https://git.apache.org/.

Filing Bugs

Bugs can be filed on the Apache Mynewt Issues. Please label the issue as a "Bug".

Where possible, please include a self-contained reproduction case!

Feature Requests

Feature requests should also be filed on the Apache Mynewt Bug Tracker. Please label the issue as a "Feature" or "Enhancement" depending on the scope.

Writing Tests

We love getting newt tests! Apache Mynewt is a huge undertaking, and improving code coverage is a win for every Apache Mynewt user.

Writing Documentation

Contributing to documentation (in addition to writing tests), is a great way to get involved with the Apache Mynewt project.

The Mynewt core OS documentation is found in /docs.

License

The code in this repository is all under either the Apache 2 license, or a license compatible with the Apache 2 license. See the LICENSE file for more information.

Export restrictions

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

The following provides more details on the included cryptographic software: https://tls.mbed.org/supported-ssl-ciphersuites.