Microbit Bluetooth Low Energy example

This example application runs out of the box on the BBC micro:bit v2.0. It starts a BLE (Bluetooth Low Energy) environment sensing service (as defined by specification) as well as a firmware update service if configured.

The example assumes that the nRF softdevice is installed. With this example, you can use BLE to update your microbit if you enable the dfu feature when compiling.

Prerequisites

Hardware

  • BBC Micro:bit

Software

Make sure you have the latest versions (cargo install <tool>) of these tools:

  • rustup - To compile the example with the correct toolchain.

  • probe-rs-cli - To flash the BLE protocol stack from Nordic Semiconductor.

  • probe-run - To run the example.

  • cargo-flash

  • cargo-binutils

Running

Erase current settings

probe-rs-cli erase --chip nRF52833_xxAA

Flash nRF Softdevice

Download the softdevice version 7.3.0 here.

probe-rs-cli download s113_nrf52_7.3.0_softdevice.hex --chip nRF52833_xxAA --format Hex

Flash application

cargo flash --release --chip nRF52833_xxAA

When started, the device will blink the letter 'A' on the LED matrix.

Running with firmware updates enabled

Flash bootloader

cargo flash --manifest-path ../bootloader/Cargo.toml --release --chip nRF52833_xxAA

Flash nRF Softdevice

Download the softdevice version 7.3.0 here.

probe-rs-cli download s113_nrf52_7.3.0_softdevice.hex --chip nRF52833_xxAA --format Hex

Flash application with dfu flag enabled

cargo flash --release --features dfu --chip nRF52833_xxAA

When started, the device will blink the letter 'A' on the LED matrix.

Flashing a new revision using firmware update

One change you can do is to set the REVISION environment variable, which will adjust the text that is printed on the LED matrix. We can then rebuild the application and flash it using the drgdfu tool.

REVISION=myupdate cargo objcopy --features dfu --release -- -O binary update.bin

Modifying the version in Cargo.toml or passing a REVISION environment variable will compile the firmware with a new version identifier. This identifier can be used to decide if a firmware update is needed at all by the drgdfu.

To use the drgdfu tool to update over BLE, generate a metadata file first:

drgdfu generate --version myupdate --file update.bin > update.json

We can then use refer to the metadata file when running the DFU process (The MAC address can be found from discovering your device using any tool like bluetoothsctl and the command scan on):

drgdfu upload ble-gatt --device F8:56:35:45:1C:3C file update.json

Be patient! The firmware update process on the device takes up to 20-30 seconds.

Once finished, the drgdfu tool will wait for the device to swap the new firmware and report back the expected version. If not, it will restart the DFU process.