BLE Specification for OmniRing Firmware#

Device Overview#

  • Device Name: OmniRing_XXXXXX (last 3 bytes of MAC address)

  • Platform: Adafruit Bluefruit nRF52

  • Firmware Function: Streams PPG (Red, IR, Green), IMU (accel, gyro, mag), and temperature data

  • Update Rate: Controlled by loop frequency (~5–10ms interval)

GATT Services & Characteristics#

GATT Services#

GATT Services#

Service

UUID

Description

Device Information Service

0x180A

Provides manufacturer and model info

DFU Service

00001530-1212-efde-1523-785feabcd123

Allows OTA firmware update

UART Service (Adafruit BLE)

6E400001-B5A3-F393-E0A9-E50E24DCCA9E

Custom service for serial over BLE

Characteristics#

Characteristics#

Characteristic

UUID

Properties

Direction

TX

6E400003-B5A3-F393-E0A9-E50E24DCCA9E

Notify

Device → Client

RX

6E400002-B5A3-F393-E0A9-E50E24DCCA9E

Write Without Response

Client → Device

Payload Format#

Each notification packet consists of 56 bytes representing 14 float values (4 bytes each):

[PPG_Red, PPG_IR, PPG_Green, AccX, AccY, AccZ, GyrX, GyrY, GyrZ, MagX, MagY, MagZ, Temp, Timestamp]

Data Format Details#

  • float values are encoded in IEEE 754 format, little-endian

  • Units:

    • Red/IR/Green: Raw ADC readings

    • Accel: m/s²

    • Gyro: rad/s

    • Magnetometer: μT

    • Temp: °C

    • Timestamp: millis() at send time in milliseconds

Performance Parameters#

Performance Parameters#

Parameter

Value

MTU Size

247 bytes

PHY Mode

2 Mbps

Connection Interval

7.5 - 15 ms

Max Packet Size

244 bytes

Max Payload per Message

56 bytes

Expected Throughput

~1 notification/loop (~30-50 Hz practical)