BLE Frame Specifications - ELA Innovation
General Bluetooth Information
| Resource | Link |
|---|---|
| General information | https://www.bluetooth.com/bluetooth-technology |
| BLE Specifications | https://www.bluetooth.com/specifications |
| BLE Services and Characteristics | https://www.bluetooth.com/specifications/gatt |
Applicable Products
- Identification and sensors Blue family.
- Wirepas family for emulated BLE.
Data Information
Service Data vs Manufacturer Specific Data
Starting from firmware version 2.0.0, it is possible to send data via Manufacturer Specific Data by enabling the Mfr. Data Enable parameter in the NFC configuration.
ELA Innovation Company Identifier (CIN): 0x0757
Scan Response Frame
Certain formats allow sending a "Scan Response" frame containing additional information (tag name, battery, etc.).
"ID" Format
| Byte | Service Data Type | Mfr Spec. Data Type (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: ≤0x10 | Length: 0x0A |
| 5 | Type: 0x09 | Type: 0xFF |
| 6 | Name[0] | ELA_CIN_LSB: 0x57 |
| 7 | Name[1] | ELA_CIN_MSB: 0x07 |
| 8 | Name[2] | MFR_Num[0] |
| 9 | Name[3] | MFR_Num[1] |
| 10 | Name[4] | MFR_Num[2] |
| 11 | Name[5] | MFR_Num[3] |
| 12 | Name[6] | MFR_Num[4] |
| 13 | Name[7] | MFR_Num[5] |
| 14 | Name[8] | MFR_Num[6] |
| 15 | Name[9] | Length: ≤0x10 |
| 16-31 | Name / Not used | Type: 0x09 + Name[0-14] |
"iBeacon" Format
| Byte | Version 1.0.0, 2.0.0 | Version ≥2.1.0 |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x04 | Data: 0x06 |
| 4 | Length: 0x1A | Length: 0x1A |
| 5 | Type: 0xFF | Type: 0xFF |
| 6 | Apple CIN_LSB: 0x4C | Apple CIN_LSB: 0x4C |
| 7 | Apple CIN_MSB: 0x00 | Apple CIN_MSB: 0x00 |
| 8 | Beacon type: 0x02 | Beacon type: 0x02 |
| 9 | Data size: 0x15 | Data size: 0x15 |
| 10-25 | UUID[0-15] | UUID[0-15] |
| 26-27 | Major[0-1] | Major[0-1] |
| 28-29 | Minor[0-1] | Minor[0-1] |
| 30 | Power TX at 1m | Power TX at 1m |
Note: The tag name is transmitted in the Scan Response.
"Eddystone" Format
| Byte | Value |
|---|---|
| 1 | Length: 0x02 |
| 2 | Type: 0x01 |
| 3 | Data: 0x06 |
| 4 | Length: 0x03 |
| 5 | Type: 0x03 |
| 6 | Eddystone_UUID_LSB: 0xAA |
| 7 | Eddystone_UUID_MSB: 0xFE |
| 8 | Length: 0x17 |
| 9 | Type: 0x16 |
| 10 | Eddystone_UUID_LSB: 0xAA |
| 11 | Eddystone_UUID_MSB: 0xFE |
| 12 | Frame type UUID: 0x00 |
| 13 | Power TX at 0m |
| 14-23 | NID[0-9] |
| 24-29 | BID[0-5] |
| 30-31 | Reserved |
Note: The tag name is transmitted in the Scan Response.
"T" / "T EN" / "T Probe" Format (Temperature)
| Byte | Service Data (≥1.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Temperature carac. LSB: 0x6E | ELA_CIN_LSB: 0x57 |
| 7 | Temperature carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | T° Data (0.01°C) LSB | TEMP_ID: 0x12 |
| 9 | T° Data (0.01°C) MSB | T° Data (0.01°C) LSB |
| 10 | Length: ≤0x10 | T° Data (0.01°C) MSB |
| 11-26 | Type: 0x09 + Name[0-14] | Length: ≤0x10 + Type: 0x09 + Name[0-14] |
Resolution: 0.01°C
Example: 0x0A6C = 2668 → 26.68°C
"RHT" Format (Temperature + Humidity)
| Byte | Service Data (≥1.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x08 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Temperature carac. LSB: 0x6E | ELA_CIN_LSB: 0x57 |
| 7 | Temperature carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | T° Data (0.01°C) LSB | RHT_DATA_ID: 0x21 |
| 9 | T° Data (0.01°C) MSB | RH Data (%) |
| 10 | Length: 0x04 | TEMP_DATA_ID: 0x12 |
| 11 | Type: 0x16 | T° Data (0.01°C) LSB |
| 12 | Humidity carac. LSB: 0x6F | T° Data (0.01°C) MSB |
| 13 | Humidity carac. MSB: 0x2A | Length: ≤0x10 |
| 14 | RH Data (%) | Type: 0x09 |
| 15-31 | Length: ≤0x10 + Type: 0x09 + Name[0-14] | Name[0-14] |
Temperature Resolution: 0.01°C
Humidity Resolution: 1%
"MAG" Format (Magnetic)
| Byte | Service Data (≥2.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Alert Level carac. LSB: 0x06 | ELA_CIN_LSB: 0x57 |
| 7 | Alert Level carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | MAG Data (cnt + state) LSB | MAG_DATA_ID: 0x32 |
| 9 | MAG Data (cnt + state) MSB | MAG Data (cnt + state) LSB |
| 10 | Length: 0x04 | MAG Data (cnt + state) MSB |
| 11 | Type: 0x16 | Length: ≤0x10 |
| 12 | Alert Status carac. LSB: 0x3F | Type: 0x09 |
| 13 | Alert Status carac. MSB: 0x2A | Name[0-14] |
| 14-31 | Data: 0x00 + Length: ≤0x10 + Type: 0x09 + Name[0-14] |
MAG Data:
- Bits 0-14: Event counter (0-32767)
- Bit 15: Magnet state (0 = absent, 1 = present)
"MOV" Format (Movement)
| Byte | Service Data (≥2.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Alert Level carac. LSB: 0x06 | ELA_CIN_LSB: 0x57 |
| 7 | Alert Level carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | MOV Data (cnt + state) LSB | MOV_DATA_ID: 0x42 |
| 9 | MOV Data (cnt + state) MSB | MOV Data (cnt + state) LSB |
| 10 | Length: 0x04 | MOV Data (cnt + state) MSB |
| 11 | Type: 0x16 | Length: ≤0x10 |
| 12 | Alert Status carac. LSB: 0x3F | Type: 0x09 |
| 13 | Alert Status carac. MSB: 0x2A | Name[0-14] |
| 14-31 | Data: 0x01 + Length: ≤0x10 + Type: 0x09 + Name[0-14] |
MOV Data:
- Bits 0-14: Event counter (0-32767)
- Bit 15: Movement state (0 = no movement, 1 = movement in progress)
"ANG" Format (3-Axis Accelerometer)
| Byte | Service Data (≥1.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x09 | Length: 0x0A |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | MAG 3D carac. LSB: 0xA1 | ELA_CIN_LSB: 0x57 |
| 7 | MAG 3D carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | Accel. Data X axis (mg) LSB | ANG_DATA_ID: 0x56 |
| 9 | Accel. Data X axis (mg) MSB | Accel. Data X axis (mg) LSB |
| 10 | Accel. Data Y axis (mg) LSB | Accel. Data X axis (mg) MSB |
| 11 | Accel. Data Y axis (mg) MSB | Accel. Data Y axis (mg) LSB |
| 12 | Accel. Data Z axis (mg) LSB | Accel. Data Y axis (mg) MSB |
| 13 | Accel. Data Z axis (mg) MSB | Accel. Data Z axis (mg) LSB |
| 14-31 | Length: ≤0x10 + Type: 0x09 + Name[0-14] | Accel. Data Z axis (mg) MSB + Length: ≤0x10 + Type: 0x09 + Name[0-14] |
Resolution: 1 mg (milli-g)
Format: Signed 16-bit (two's complement)
"DIGI IN" Format (Digital Input)
| Byte | Service Data (≥2.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Alert Level carac. LSB: 0x06 | ELA_CIN_LSB: 0x57 |
| 7 | Alert Level carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | DI Data (cnt + state) LSB | DIGI_IN_DATA_ID: 0x62 |
| 9 | DI Data (cnt + state) MSB | DI Data (cnt + state) LSB |
| 10 | Length: 0x04 | DI Data (cnt + state) MSB |
| 11 | Type: 0x16 | Length: ≤0x10 |
| 12 | Alert Status carac. LSB: 0x3F | Type: 0x09 |
| 13 | Alert Status carac. MSB: 0x2A | Name[0-14] |
| 14-31 | Data: 0x02 + Length: ≤0x10 + Type: 0x09 + Name[0-14] |
DI Data:
- Bits 0-14: Event counter (0-32767)
- Bit 15: Input state (0 = released, 1 = pressed)
"Analog IN" Format (Analog Input)
| Byte | Service Data (≥2.0.0) | Mfr Spec. Data (≥2.0.0) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Analog Out carac. LSB: 0x58 | ELA_CIN_LSB: 0x57 |
| 7 | Analog Out carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | Analog Data measure (mV) LSB | AN_IN_DATA_ID: 0x72 |
| 9 | Analog Data measure (mV) MSB | Analog Data measure (mV) LSB |
| 10-31 | Length: ≤0x10 + Type: 0x09 + Name[0-14] | Analog Data measure (mV) MSB + Length: ≤0x10 + Type: 0x09 + Name[0-14] |
Resolution: 1 mV
Format: Unsigned 16-bit
"DIGI OUT" Format (Digital Output)
| Byte | Value |
|---|---|
| 1 | Length: 0x02 |
| 2 | Type: 0x01 |
| 3 | Data: 0x06 |
| 4 | Length: 0x0A |
| 5 | Type: 0xFF |
| 6 | ELA_CIN_LSB: 0x57 |
| 7 | ELA_CIN_MSB: 0x07 |
| 8 | MFR_NUM_ID: 0x86 |
| 9-14 | MFR_Num[0-5] |
| 15 | Length: ≤0x10 |
| 16 | Type: 0x09 |
| 17-31 | Name[0-14] |
MFR_Num: Configurable hexadecimal number (max 0xFFFFFFFFFFFF)
"PIR" Format (Presence Detector)
| Byte | Service Data (≥3.0.1) | Mfr Spec. Data (≥3.0.1) |
|---|---|---|
| 1 | Length: 0x02 | Length: 0x02 |
| 2 | Type: 0x01 | Type: 0x01 |
| 3 | Data: 0x06 | Data: 0x06 |
| 4 | Length: 0x05 | Length: 0x06 |
| 5 | Type: 0x16 | Type: 0xFF |
| 6 | Rainfall Carac. LSB: 0x78 | ELA_CIN_LSB: 0x57 |
| 7 | Rainfall Carac. MSB: 0x2A | ELA_CIN_MSB: 0x07 |
| 8 | PIR Data (cnt + state) LSB | PIR_DATA_ID: 0x92 |
| 9 | PIR Data (cnt + state) MSB | PIR Data (cnt + state) LSB |
| 10-31 | Length: ≤0x0F + Type: 0x09 + Name[0-14] | PIR Data (cnt + state) MSB + Length: ≤0x0F + Type: 0x09 + Name[0-14] |
PIR Data:
- Bits 0-14: Event counter (0-32767)
- Bit 15: Detection state (0 = no movement detected, 1 = movement detected)
Battery Information
Battery capacity
Battery capacity is transmitted in the Scan Response when it drops below 15%.
Service Data (Version 1.0.0, 2.0.0, 2.1.x)
| Byte | Value |
|---|---|
| 1 | Length: 0x04 |
| 2 | Type: 0x16 |
| 3 | Battery Serv. LSB: 0x0F |
| 4 | Battery Serv. MSB: 0x18 |
| 5 | Batt. data (%) |
Service Data (Version ≥2.2.0)
| Byte | Value |
|---|---|
| 1 | Length: 0x04 |
| 2 | Type: 0x16 |
| 3 | Battery Serv. LSB: 0x19 |
| 4 | Battery Serv. MSB: 0x2A |
| 5 | Batt. data (%) |
Mfr Spec. Data (Version ≥2.0.0)
| Byte | Value |
|---|---|
| 1 | Length: 0x05 |
| 2 | Type: 0xFF |
| 3 | ELA_CIN_LSB: 0x57 |
| 4 | ELA_CIN_MSB: 0x07 |
| 5 | BATT_DATA_ID: 0xF1 |
| 6 | Batt. data (%) |
Battery Voltage (Version ≥3.0.0)
Available if the "Battery voltage presence" parameter is enabled in the NFC configuration.
| Byte | Value |
|---|---|
| 1 | Length: 0x06 |
| 2 | Type: 0xFF |
| 3 | ELA_CIN_LSB: 0x57 |
| 4 | ELA_CIN_MSB: 0x07 |
| 5 | BATT_DATA_ID: 0xF2 |
| 6 | Batt. voltage (mV) LSB |
| 7 | Batt. voltage (mV) MSB |
Resolution: 1 mV
Release Notes
Version 1.0.0
- Battery Service transmission in Scan Response when battery drops below 15%
- Nordic UART Service (NUS) removed from Scan Response
Version 2.0.0
- Tag name sent in Scan Response for iBeacon/Eddystone
- ELA Innovation Company Identifier: 0x0757
- Addition of "ID Manufacturer Data" field for ELA_ID and DIGI_OUT formats
Version 2.1.0
- Rename TOR IN → DIGI IN and TOR OUT → DIGI OUT
Version 2.2.0
- Battery data in Battery Level service (0x2A19)
- MAC address type changed from Random to Public
Version 3.0.0
- Ability to transmit battery voltage in Scan Response
Resources
Sample code available at: https://github.com/elaInnovation
Complete documentation: www.elainnovation.com
Non-contractual document - Specifications may be modified without notification