Crate rubble[][src]

Expand description

An experimental BLE stack.

Tries to adhere to the Bluetooth Core Specification v4.2 (at least for now).

Using the stack

Rubble is runtime and hardware-agnostic: It does not need an RTOS (although you can certainly use one if you want) and provides hardware interfaces that need to be implemented once for every supported MCU family.

The only part that interacts directly with platform-specific interfaces is link, Rubble’s BLE Link-Layer implementation. You have to provide it with a few hardware-specific services:

  • A microsecond-precision Timer.
  • A Transmitter that can send data and advertising channel packets.
  • A processor for link::Cmd, which tells the support code when to call Rubble’s functions again.


Implementation of the Attribute Protocol (ATT).

BLE beacon support, without dealing with Link-Layer stuff.

Utilities for decoding from and encoding into bytes.

Stack configuration trait.

Elliptic Curve Diffie-Hellman (ECDH) on P-256.

Implementation of the Generic Attribute Profile (GATT).

The Logical Link Control and Adaptation Protocol (L2CAP).


Physical layer interactions.

The LE Security Manager protocol.

Time APIs for obtaining the current time and calculating with points in time and durations.

BLE UUIDs (16, 32 or 128 bits).


Errors returned by the BLE stack.


Version of the Bluetooth specification implemented by Rubble.