No description
  • C 97.7%
  • Python 1.2%
  • C++ 0.4%
  • Ruby 0.3%
  • Makefile 0.2%
Find a file
Szymon Janc 8b6f3e8191 ci: Use more descriptive workflows names
Those are used in CI badges so make them a bit more self explanatory.
2026-04-28 16:34:28 +02:00
.github ci: Use more descriptive workflows names 2026-04-28 16:34:28 +02:00
apps btshell: Fix restarting advertising instances 2026-02-27 11:18:00 +01:00
babblesim nimble: Remove deprecated and defunced configuration options 2026-03-17 14:31:17 +01:00
docs doc: Update documentation with non-deprecated options 2026-03-17 14:31:17 +01:00
ext ext/libsamplerate: compile using single precision floating point numbers 2024-04-15 11:50:18 +02:00
nimble host: Fix recursive lock in ble_hs_stop_done 2026-04-28 11:17:41 +02:00
porting porting: Update ports syscfg 2026-04-28 11:17:23 +02:00
qualification nimble/host: Remove outdated PTS tests results 2025-02-26 11:28:09 +01:00
targets targets: remove deprecated settings from various syscfgs 2024-06-19 15:49:17 +02:00
tools nimble: add sysconfig for enabling additional PHYs 2023-10-23 14:10:03 +02:00
.asf.yaml asf.yaml: Force linear history 2025-11-13 09:31:53 +01:00
.clang-format ci: Update .clang-format from apache-mynewt-core 2026-01-09 08:38:03 +01:00
.gitignore gitignore: Add linux port tests 2025-08-14 21:29:15 +02:00
.mailmap Update mailmap 2026-02-11 16:02:49 +01:00
.rat-excludes ci: Update RAT to 0.17 2025-10-23 12:59:08 +02:00
.style_ignored_dirs Add style ignored dirs 2020-03-13 08:45:44 -03:00
CODING_STANDARDS.md Add some initial documentation 2018-05-16 13:50:54 +02:00
Doxyfile ci: Fix doxygen checks 2025-02-26 13:40:41 +01:00
LICENSE Update missing licenses and rat excludes 2024-11-12 15:56:08 +01:00
NOTICE Prepare for Apache NimBLE 1.9.0 2025-12-15 13:23:52 +01:00
README.md readme: Add missing workflows to CI status 2026-02-17 11:28:40 +01:00
RELEASE_NOTES.md Prepare for Apache NimBLE 1.9.0 2025-12-15 13:23:52 +01:00
repository.yml Apache NimBLE 1.9.0 release 2025-12-19 17:38:19 +01:00
version.yml Add missing license headers and RAT excludes 2018-05-24 10:51:21 +02:00

Apache Mynewt

Overview

Apache NimBLE is an open-source Bluetooth 5.4 stack (both Host & Controller) that completely replaces the proprietary SoftDevice on Nordic chipsets. It is part of Apache Mynewt project.

Feature highlight:

  • 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.
  • Periodic Advertising.
  • Coded (a.k.a. Long Range) and 2M PHYs.
  • Bluetooth Mesh.

Supported hardware

Controller supports Nordic nRF51, nRF52 and nRF5340 chipsets as well as DA1469x (cmac) from Renesas. Host runs on any board and architecture supported by Apache Mynewt OS.

Browsing

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

  • nimble/controller: Contains code for controller including Link Layer and HCI implementation (controller)

  • nimble/drivers: Contains drivers for supported radio transceivers (Nordic nRF51 and nRF52) (drivers)

  • nimble/host: Contains code for host subsystem. This includes protocols like L2CAP and ATT, support for HCI commands and events, Generic Access Profile (GAP), Generic Attribute Profile (GATT) and Security Manager (SM). (host)

  • nimble/host/mesh: Contains code for Bluetooth Mesh subsystem. (mesh)

  • nimble/transport: Contains code for supported transport protocols between host and controller. This includes UART, emSPI and RAM (used in combined build when host and controller run on same CPU) (transport)

  • porting: Contains implementation of NimBLE Porting Layer (NPL) for supported operating systems (porting)

  • ext: Contains external libraries used by NimBLE. Those are used if not provided by OS (ext)

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

Sample Applications

There are also some sample applications that show how to Apache Mynewt NimBLE stack. These sample applications are located in the apps/ directory of Apache Mynewt repo. Some examples:

  • blecent: A basic central device with no user interface. This application scans for a peripheral that supports the alert notification service (ANS). Upon discovering such a peripheral, blecent connects and performs a characteristic read, characteristic write, and notification subscription.
  • blehci: Implements a BLE controller-only application. A separate host-only implementation, such as Linux's BlueZ, can interface with this application via HCI over UART.
  • bleprph: An implementation of a minimal BLE peripheral.
  • btshell: A shell-like application allowing to configure and use most of NimBLE functionality from command line.
  • bleuart: Implements a simple BLE peripheral that supports the Nordic UART / Serial Port Emulation service (https://developer.nordicsemi.com/nRF5_SDK/nRF51_SDK_v8.x.x/doc/8.0.0/s110/html/a00072.html).

External projects using NimBLE

Several other projects provide support for using NimBLE either by NPL port or forking:

If you publish a NimBLE port, please let us know to include it here!

Getting Help

If you are having trouble using or contributing to Apache Mynewt NimBLE, 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 IRC or #general channel on Mynewt Slack

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.

Filing Bugs

Bugs can be filed on the Apache Mynewt NimBLE 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 NimBLE 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.

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.