Skip to content

BLE Protocol Overview

This document describes the BLE GATT protocol used by Aranet environmental sensors, extracted and documented from the Aranet4-Python reference implementation.

Aranet sensors identify themselves via manufacturer data in BLE advertisements:

Type CodeNameModel
0xF1ARANET4Aranet4 (CO₂ Monitor)
0xF2ARANET2Aranet2 (Temp/Humidity)
0xF3ARANET_RADONAranet Radon Plus
0xF4ARANET_RADIATIONAranet Radiation

All Aranet devices use SAF Tehnika’s Bluetooth SIG-assigned manufacturer ID:

const MANUFACTURER_ID: u16 = 0x0702; // SAF Tehnika

Aranet devices expose two service UUIDs depending on firmware version:

ServiceUUIDNotes
SAF Tehnika (NEW)0000fce0-0000-1000-8000-00805f9b34fbFirmware v1.2.0+
SAF Tehnika (OLD)f0cd1400-95da-4f4b-9ac8-aa55d312af0cPre-v1.2.0

In addition to the custom SAF Tehnika service, Aranet devices expose standard BLE services:

ServiceUUIDPurpose
GAP Service0x1800Device name, appearance
Device Information0x180aModel, serial, firmware, manufacturer
Battery Service0x180fBattery level (0-100%)
Nordic DFU0xfe59Firmware updates
  1. Scan for devices advertising the SAF Tehnika service
  2. Connect to the device
  3. Discover services and characteristics
  4. Read characteristic values directly

Two protocols exist for downloading measurement history:

VersionMethodCharacteristicFirmware
V1Notification-basedf0cd2003Older devices
V2Read-basedf0cd2005Newer devices

Settings are modified by writing command bytes to the command characteristic (f0cd1402):

CommandBytePurpose
Set Interval0x90Change measurement interval
Toggle Smart Home0x91Enable/disable integrations
Set BT Range0x92Standard or extended range

Aranet4 devices report CO₂ status as a color indicator:

ValueColorCO₂ RangeMeaning
0ERRORSensor error
1GREEN< 1000 ppmGood air quality
2AMBER1000-1400 ppmModerate, ventilate soon
3RED> 1400 ppmPoor, ventilate now

Made with ❤️ by Cameron Rye