Trouble released
March 25, 2025Around a year ago, we started initial development of a Rust Bluetooth Low Energy (BLE) Host named TrouBLE. Today the first release is available on crates.io!
TrouBLE is a Bluetooth Low Energy (BLE) Host implementation for embedded devices, with a future goal of meeting the qualification requirements for a BLE Host. The initial implementation was based on bleps
but has been adapted to work with types and traits from bt-hci
and adding support for more of the BLE specification such as L2CAP connection oriented channels. The current implementation also takes strong inspiration from the nrf-softdevice
project for the APIs.
What is a Host?
A BLE Host is one side of the Host Controller Interface (HCI). The BLE specification defines the software of a BLE implementation in terms of a controller
(lower layer) and a host
(upper layer).
These communicate via a standardized protocol, that may run over different transports such as as UART, USB or a custom in-memory IPC implementation.
The advantage of this split is that the Host can generally be reused for different controller implementations.
Hardware support
TrouBLE can use any controller that implements the traits from bt-hci
. At present, that includes:
The future
The APIs have been rewritten and changed a few times already, but it seems like most use cases are covered with the current API. Future work includes identifying an implementing missing parts required for qualification, adding support for more controllers, and improving examples and documentation.
Thanks
Thanks to Akiles for sponsoring the development, and many thanks to all contributors (some who represent Dyson) that helped make this release possible!
- @lulf
- @petekubiak
- @jamessizeland
- @ScottGibb
- @Univa
- @lure23
- @HaoboGu
- @bytedream
- @Dirbaio
- @pperanich
- @pferreir
- @hicklin
- @plaes
- @Easyoakland
- @ivmarkov
- @mertzt89
- @blueluna
- @chrissuozzo
- @Meigs2
- @iamtio
- @timokroeger
- @akauppi
- @bittailor
- @TethysSvensson
- @sjroe
- @brandonros