July 31, 2017 (Final)
July 15, 2017 (Planned)
Enhancement/Fixes to existing features
NimBLE stack enhancements
Bluetooth 5 Support
LE 2M and LE Coded (aka Long Range) PHYs
Extended Advertising (advertiser and scanner, no chaining)
Channel Selection Algorithm #2
High Duty Non-Connectable Advertising
Multiple Advertising instances (controller only)
This allows the creation of applications where multiple peripherals (eg body motion sensor) that generate fixed size data at fixed high rate are connected to a single central device. Central allocates fixed time slots for connected peripheral and guarantees those are available for each peripheral. Connection events are never extended past a given time slot.
Support for low power 32768 Hz clock
NimBLE controller now uses low power 32768 Hz clock for scheduling. This reduces power consumption. For details see JIRA ticket.
API for retrieving public and static random addresses from chip specific locations
This allows to configure controller address from chip specific locations. For details see JIRA ticket.
Support for monitoring interface compatible with BlueZ HCI monitor (btmon).
This allows to trace HCI traffic between host and controller using BlueZ HCI monitor. Support for interleaving HCI traces and console output is also present.
Bonding material persists over reboots
A new package: ble/host/store/config has been added to hold security material and CCCDs in RAM, and optionally saves them to sys/config. Because this package is a superset of store/ram, it deprecates that one.
Various fixes and improvements in Link Layer, LE Connection Oriented Channels and GATT/ATT protocols and more.
Newt Tool enhancements
newt target amend
The "amend" command allows the user to add, change, or delete values for multi-value target variables, such as syscfg, cflags etc. It supports the -d flag to delete values. The format of the amend command is:
newt target amend <target-name> <var-name=var-value> [var-name=var-value...]
For a more detailed description, see https://mynewt.apache.org/latest/newt/command_list/newt_target/
newtmgr image erase
The newtmgr image erase command erases an unused image from the secondary image slot on a device. The image cannot be erased if the image is a confirmed image, is marked for test on the next reboot, or is an active image for a split image setup.
newtmgr conn add
The command now supports additional connection types and conn strings to increase the options for communicating with a remote device. An example usage of the updated command is:
newtmgr conn add myudp5683 type=oic_udp connstring=[127.0.0.1]:5683
which creates a connection profile named
myudp5683 to communicate over UDP with the oicmgr on a device listening on localhost and port 5683.
The code for newtmgr, the protocol for remotely communicating with a Mynewt instance, was previously nested within newt repo. It has been moved to its own separate repository.
Native support for ARMv7 (Raspberry Pi 3)
A simulated instance of Mynewt can be run as a Linux process on Raspberry Pi 3. An example usage would be to run a host BLE application on the Linux processor and communicate via HCI over UART with a BLE controller on an nRF52 processor.
STM32 ethernet driver
The sample app "iptest" uses the ethernet driver.
Sensor framework is an abstraction layer between the HAL and the app to make using sensors easier and flexible. It also defines a default OIC server which exposes the sensors as individual resources.
The following diagram shows how the main components of the sensor framework fit into the Mynewt architecture.
Some key features of the sensor management include:
- Device creation in the BSP
- Device drivers for sensors
- Sensor API (Sensor framework in the diagram) for apps to read and configure sensors
- Sensor shell to communicate with sensors during development
- Sensor representation as OIC 1.1 compliant resources for auto-discovery, write/read/delete/notify operations
The sensor drivers currently available are:
- BME280 (Ruuvitag)
- LIS2DH12 (Ruuvitag, nRF52 Thingy)
Segger RTT support
This allows to use Segger RTT for console and logging (HCI monitor and SystemView).
Segger SystemView support
"SystemView can record data from the target system while it is running. The recorded data is analyzed and the system behavior is visualized in different views." More info here: https://www.segger.com/systemview.html
The Mynewt 1.1 console package adds a new API for reading input data from the console. The package supports backward compatibility for the Mynewt 1.0 console API. The newly added function, console_set_queues(), allows the app to specify two event queues for the console to manage input data buffering and to send notification when a full line of data is received.
Console functionality has been improved with tab completion, multiple subshell support, optional help messages and more.
The Mynewt 1.1 shell package adds a new API to register shell commands under a name space. The package supports backward compatibility for the Mynewt 1.0 shell API. The newly added function, shell_register(), allows the app to register a module and group commands under a name space.
Shell functionality has been improved with name space, enhance command help support, and tab completion.
For Mynewt 1.0 shell backward compatibility usage, you may need to increase the SHELL_MAX_COMPAT_COMMANDS syscfg setting value. See http://mynewt.apache.org/latest/os/modules/shell/shell/ for more details.
Additional Board Support Packages
- SiFive HiFive1 (RISC-V Instruction Set Architecture)
- PIC32 Family (MIPS32 Instruction Set Architecture)
- PIC32MZ2048EFG100 microcontroller
- Microchip PIC32MX470 Curiosity Development Board
- PIC32MZ2048EFG100 microcontroller
- Telenor EE-02 board with nRF52 SOC and Semtech Sx1276 chip
- VBLUno51 board (nRF51822)
- VBLUno52 board (nRF52832)
- ublox NINA-B112 (nRF52832)
Nordic nRF52 Thingy (nRF52832)
- NUCLEO-F767 (Cortex-M7)
- STM32F7 Discovery (Cortex-M7)
- RedBear Blend 2 (nRF52832)
- BLE400 (nRF51822)
Known Issues and Limitations
Bluetooth 5 LE Coded PHY on nRF52840 PDK - T_IFS is not stable
Newtmgr disconnects during image upgrade over BLE
The workaround is to use log level INFO or lower for your application. You can set the log level to INFO as follows:
Newt has warning on multiple console API exported when building boot/boot_serial
newt resolves to use the correct console package and the warning can be ignored.
runtimeco APT Repo Signing Key Change
If you have previously set up your computer to install newt or newtmgr Debian packages using apt-get prior to 1.1.0 release, the signing key for the runtimeco APT repo has changed. You will need to import the new public key again. You can do so as follows:
Features under development
- LoRa PHY radio / transceiver (SX1276)
- LoRaWAN protocol - port of the stack in https://github.com/Lora-net/LoRaMac-node to Mynewt
- API for application to use LoRaWAN and PHY
- Sample API