BLE Protocol Overview
This document describes the BLE GATT protocol used by Aranet environmental sensors, extracted and documented from the Aranet4-Python reference implementation.
Device Types
Section titled “Device Types”Aranet sensors identify themselves via manufacturer data in BLE advertisements:
| Type Code | Name | Model |
|---|---|---|
0xF1 | ARANET4 | Aranet4 (CO₂ Monitor) |
0xF2 | ARANET2 | Aranet2 (Temp/Humidity) |
0xF3 | ARANET_RADON | Aranet Radon Plus |
0xF4 | ARANET_RADIATION | Aranet Radiation |
Manufacturer ID
Section titled “Manufacturer ID”All Aranet devices use SAF Tehnika’s Bluetooth SIG-assigned manufacturer ID:
const MANUFACTURER_ID: u16 = 0x0702; // SAF TehnikaService UUIDs
Section titled “Service UUIDs”Aranet devices expose two service UUIDs depending on firmware version:
| Service | UUID | Notes |
|---|---|---|
| SAF Tehnika (NEW) | 0000fce0-0000-1000-8000-00805f9b34fb | Firmware v1.2.0+ |
| SAF Tehnika (OLD) | f0cd1400-95da-4f4b-9ac8-aa55d312af0c | Pre-v1.2.0 |
Standard BLE Services
Section titled “Standard BLE Services”In addition to the custom SAF Tehnika service, Aranet devices expose standard BLE services:
| Service | UUID | Purpose |
|---|---|---|
| GAP Service | 0x1800 | Device name, appearance |
| Device Information | 0x180a | Model, serial, firmware, manufacturer |
| Battery Service | 0x180f | Battery level (0-100%) |
| Nordic DFU | 0xfe59 | Firmware updates |
Communication Patterns
Section titled “Communication Patterns”Reading Data
Section titled “Reading Data”- Scan for devices advertising the SAF Tehnika service
- Connect to the device
- Discover services and characteristics
- Read characteristic values directly
Historical Data
Section titled “Historical Data”Two protocols exist for downloading measurement history:
| Version | Method | Characteristic | Firmware |
|---|---|---|---|
| V1 | Notification-based | f0cd2003 | Older devices |
| V2 | Read-based | f0cd2005 | Newer devices |
Writing Settings
Section titled “Writing Settings”Settings are modified by writing command bytes to the command characteristic (f0cd1402):
| Command | Byte | Purpose |
|---|---|---|
| Set Interval | 0x90 | Change measurement interval |
| Toggle Smart Home | 0x91 | Enable/disable integrations |
| Set BT Range | 0x92 | Standard or extended range |
CO₂ Status Colors
Section titled “CO₂ Status Colors”Aranet4 devices report CO₂ status as a color indicator:
| Value | Color | CO₂ Range | Meaning |
|---|---|---|---|
| 0 | ERROR | — | Sensor error |
| 1 | GREEN | < 1000 ppm | Good air quality |
| 2 | AMBER | 1000-1400 ppm | Moderate, ventilate soon |
| 3 | RED | > 1400 ppm | Poor, ventilate now |
Further Reading
Section titled “Further Reading”- UUID Reference — Complete characteristic UUID list
- Data Parsing — Byte-level data formats
- Aranet4-Python Docs — Original reference
Made with ❤️ by Cameron Rye