Release Date
May 06, 2022 (Final)
April 30, 2022 (Planned)
Highlights
Considerable parts of controller code were refactored
Refactored parts:
- scanner
- initiator
- scheduler
- periodic advertising synchronize code
This greatly improves performance and reliability of controller.
Major refactor of HCI transport handling
Transport is now split into host (HS) and controller (LL) sides. For details see
https://github.com/apache/mynewt-nimble/blob/master/nimble/doc/transport.md
New connection strict scheduling (CSS)
The idea is based on old (removed code) but it was rewritten from scratch to allow more control over scheduling.
Scheduling policy in CSS mode is defined by slot duration and number of slots per period (which implicitly defined period duration). Each
connection in central role is only scheduled on slot boundary and has connection interval equal to period duration. This means there can be
up to number-of-slots connection in central role established.
New Features
Fake dual mode option for controller
This adds option to enable some hacks to allow controller to be initialized by dual-mode host. It basically fakes some HCI commands that
we do not support since they are not relevant for LE or replies for commands that we do support but need to be updated for BR/EDR features.
This allows for NimBLE controller to be used as a Bluetooth controller e.g. in Windows 10, at least to some extent.
This is non-qualifiable feature and should be used only for development and experiments.
LLCP tracing via HCI events
It is now possible to trace LLCP PDUs via HCI events. Each LLCP PDU is sent in a vendor-specific HCI event which can be decoded e.g. by btmon.
Identifier and format of HCI event os the same as used by controllers from Intel so it may be necessary to fake NimBLE's manufacturer id by
setting 'BLE_LL_MFRG_ID: 2' so btmon can decode events properly.
Code size optimization for disabled GAP roles
This gives some FLASH and RAM savings for applications that use only subset of GAP roles. LL features are also tuned depending on selected GAP roles.
Support for PA/LNA
It is now possible to use power amplifier for radio. Currently supported PA/LNA are Skyworks SKY66112 and RFX2411 (via SKY66112 driver).
LE Secure Connections Only mode
Allows to configure device in mode where only Security Mode 1 Level 4 is allowed for pairing.
Support for Bluetooth Core Specification 5.3
It is now possible to select compliance with 5.3 version of Bluetooth Core Specification. Note that not all optional features are supported yet.
Connection subrating (BLE 5.3 feature)
it is now possible to use connection subrate procedure as specified in Bluetooth Core Specification 5.3
BabbleSim (A physical layer simulator) support
NimBLE can now be run with BabbleSim simulator (https://babblesim.github.io/) for testing and development.
EDTT (Embedded Device Test Tool)( https://github.com/EDTTool/EDTT) is also supported.
Runtime configuration of transmit power
It is now possible to tune maximum TX power in runtime (with dedicated Vendor Specific HCI command)
Use of Public Address on Ublox BMD-345
The BMD-345 modules are preprogrammed from the factory with a unique public Bluetooth device address.
Support for Ambiq Apollo 3 Bluetooth controller
NimBLE host is now able to use embedded BLE controller from Apollo 3.
Enhancement/Fixes to existing features
- Overall performance improvements and code size optimistion
- Qualification related bugfixes
- BLE Mesh improvements - fixes and resync with latest Zephyr code
- nRF5340 PHY driver improvements
- bttester now user new GATT client service for GATT Client tests
Known Issues and Limitations
- GATT Long Write is failing on nRF51
- GCC 11.1 fails to compile nRF5x radio drivers
- RIOT port is not building