BlueBeacon Advertising Packets format
BlueUp has developed a custom firmware for its BLE beacons (BlueBeacon series) that simultaneously supports iBeacon and Eddystone technologies (with full support of Eddystone specifications, including GATT and EID frame), together with other technologies such as Quuppa for precise localization of beacons and BlueUp Sensors for environment sensing.
The total number of time slots available for these packets is 8: 4 for Eddystone frames, and 4 for other frames (iBeacon, Quuppa, BlueUp Sensors). These packets are individually configurable for data, transmission power and advertising interval, and are always non-connectable.
The format of these packets is strictly compliant to the specifications of each technology:
- iBeacon
- Eddystone (UID, URL, TLM, EID)
- Quuppa: proprietary format
- Sensors
Interleaved with (and independently from) these packets, BlueBeacon beacons periodically broadcast an Advertising Packet that contains the following information:
- local name Service, with the unique identifier of the device, composed by manufacturer name (“BlueUp”), model number (2 digits) and serial number (6 digits)
- battery Service, with estimated status of the battery (expressed in %)
- 16-bit custom Service, with beacon-status flags, identifying the enabled advertising-packet technologies (iBeacon, Eddystone, Quuppa, BlueUp Sensors)
This Advertising Packet is broadcast at fixed non-modifiable power (-8dBm) and with a periodic interval according the following rule:
- v5.x firmware: every 300msec for 5 minutes after power-up (or every disconnection) and, subsequently, every 2 seconds
- v6.x firmware: every 300msec for 30sec after power-up (or every disconnection) and, subsequently, every 2 seconds
This solution allows to balance between a short response delay for configuring the beacon after power-up and an ultra-low energy consumption during operating life.
The Advertising Packet allows to uniquely identify the beacon (manufacturer name, model and serial numbers are always printed on the sticker applied on the beacon) and access to its status (battery level, configured packets), without connecting to it. It is noted that this packet is always broadcast (unless the beacon is configured in “Anonymous Mode”), also when no slot is configured for advertising packets (Eddystone, iBeacon, Quuppa or BlueUp Sensors frames).
When (and only when) the beacon is connectable (by default, beacons are always connectable unless configured in “Non-Connectable Mode”), it also broadcast a Scan-Response Packet, that contains the Eddystone configuration GATT service UUID as a 128-bit Service UUID.
BlueUp Advertising Packet
Byte | Value (hex) | Property | Description | Comments |
---|---|---|---|---|
0 | 0x02 | Fixed | AD Length | Length of packet data |
1 | 0x01 | Fixed | AD Type: Flags | |
2 | 0x06 | Fixed | BR/EDR Not Supported / LE General Discoverable | |
3 | 0x04 | Fixed | AD Length | |
4 | 0x16 | Fixed | AD Type: Service Data | |
5 | 0x0F | Fixed | Battery Service UUID (1st byte) | |
6 | 0x18 | Battery Service UUID (2nd byte) | ||
7 | - | Variable | Battery value | Battery %, from 0x64 (100%) to 0x00 (0%) |
8 | 0x04 | Fixed | AD Length | |
9 | 0x16 | Fixed | AD Type: Service Data | |
10 | 0x00 | Fixed | Custom Service UUID (1st byte) | Custom 16-bit service UUID (0x8800) |
11 | 0x88 | Custom Service UUID (2nd byte) | ||
12 | - | Variable | Advertised frames flags | Logical OR between:0x01: Eddystone packet0x02: iBeacon packet0x04: Quuppa packet0x08: BlueUp Sensors packet0x10: BlueUp Safety packet0x20: RFU0x40: Alarm supported0x80: Alarm active |
13 | 0x11 | Fixed | AD Length | |
14 | 0x09 | Fixed | AD Type: Complete Local Name | |
15 | 0x42 | Fixed | ASCII Character “B” | Complete Local Name “BlueUp-nn-ssssss”, where -BlueUp is manufacturer name-nn (2 decimal digits) is model number-ssssss (6 dec. digits) is serial number (serial number ranges from 000000 to 999999) |
16 | 0x6C | ASCII Character “l” | ||
17 | 0x75 | ASCII Character “u” | ||
18 | 0x65 | ASCII Character “e” | ||
19 | 0x55 | ASCII Character “U” | ||
20 | 0x70 | ASCII Character “p” | ||
21 | 0x2D | ASCII Character “-” | ||
22 | - | Variable | Model number (ASCII Characters) | |
23 | - | Model number (ASCII Characters) | ||
24 | 0x2D | Fixed | ASCII Character “-” | |
25 | - | Variable | Serial Number (ASCII Characters) | |
26 | - | Serial Number (ASCII Characters) | ||
27 | - | Serial Number (ASCII Characters) | ||
28 | - | Serial Number (ASCII Characters) | ||
29 | - | Serial Number (ASCII Characters) | ||
30 | - | Serial Number (ASCII Characters) |
Model numbers
Model Name | Model Number |
---|---|
Mini | 01 |
Maxi | 02 |
USB | 03 |
Forte / Forte+ | 04 |
Tag | 05 |
Board | 06 |
Card | 08 |
Badge - Holder | 08 |
Ultra | 09 |
SafeX / SafeX Lite | 10 |
Bangle | 11 |
Brick | 12 |
TagX | 20 |
Scan - Response packet
Byte | Value (hex) | Property | Description | Comments |
---|---|---|---|---|
0 | 0x11 | Fixed | AD Length | Length of packet data |
1 | 0x07 | Fixed | AD Type: Flags | Complete List of 128-bit Service Class UUIDs |
2 | 0x95 | Fixed | 128-bit Service UUID (1st byte) | Eddystone Configuration GATT Service UUID:a3c87500-8ed3-4bdf-8a39-a01bebede295 (little-endian)(see: https://github.com/google/eddystone/tree/master/configuration-service) |
3 | 0xE2 | 128-bit Service UUID (2nd byte) | ||
4 | 0xED | 128-bit Service UUID (3d byte) | ||
5 | 0xEB | 128-bit Service UUID (4th byte) | ||
6 | 0x1B | 128-bit Service UUID (5th byte) | ||
7 | 0xA0 | 128-bit Service UUID (6th byte) | ||
8 | 0x39 | 128-bit Service UUID (7th byte) | ||
9 | 0x8A | 128-bit Service UUID (8th byte) | ||
10 | 0xDF | C128-bit Service UUID (9th byte) | ||
11 | 0x4B | 128-bit Service UUID (10th byte) | ||
12 | 0xD3 | 128-bit Service UUID (11th byte) | ||
13 | 0x8E | 128-bit Service UUID (12th byte) | ||
14 | 0x00 | 128-bit Service UUID (13th byte) | ||
15 | 0x75 | 128-bit Service UUID (14th byte) | ||
16 | 0xC8 | 128-bit Service UUID (15th byte) | ||
17 | 0xA3 | 128-bit Service UUID (16th byte) |
iBeacon
BlueBeacons periodically broadcast an Advertising Packet, with an advertising interval that can be set to a value between 100 msecs and 1 second (at steps of 100 msecs). Default value is 400 msecs, except of BlueBeacon USB where it is 100 msecs). Apple iBeacon technology specifications require 100 msecs.
Advertising Packet is formatted according to iBeacon technology specifications. Advertising Packet contains the identifier of the beacon (20 bytes), which is composed by:
- Proximity UUID (16 bytes);
- Major number (2 bytes);
- Minor number (2 bytes).
Additionally, Advertising Packet contains (last byte) the calibrated RSSI (Received Signal Strength Indicator), which represents the power received by the smartphone at distance of 1 meter, in front of the beacon. This value is used to estimate the proximity from the beacon. Calibrated RSSI is automatically updated when TX power level is modified. By default, the iBeacon measured power value is auto-set by the beacon, based on the used TX power value.
In iOS, Advertising Packet data is only accessible using CoreLocation APIs.
Byte | Value (hex) | Property | Description | Comments |
---|---|---|---|---|
0 | 0x02 | Fixed | AD Length | Length of packet data |
1 | 0x01 | Fixed | AD Type: Flags | |
2 | 0x06 | Fixed | BR/EDR Not Supported / LE General Discoverable | |
3 | 0x1A | Fixed | AD Length | |
4 | 0xFF | Fixed | AD Type: Manufacturer specific data | |
5 | 0x4C | Fixed | Manufacturer data (1st byte) | Apple Company ID |
6 | 0x00 | Manufacturer data (2nd byte) | ||
7 | 0x02 | Manufacturer data (3rd byte) | Beacon Type | |
8 | 0x15 | Manufacturer data (4th byte) | ||
9 | - | Variable | Proximity UUID (1st byte) | Proximity UUID |
10 | - | Proximity UUID (2nd byte) | ||
11 | - | Proximity UUID (3rd byte) | ||
12 | - | Proximity UUID (4th byte) | ||
13 | - | Proximity UUID (5th byte) | ||
14 | - | Proximity UUID (6th byte) | ||
15 | - | Proximity UUID (7th byte) | ||
16 | - | Proximity UUID (8th byte) | ||
17 | - | Proximity UUID (9th byte) | ||
18 | - | Proximity UUID (10th byte) | ||
19 | - | Proximity UUID (11th byte) | ||
20 | - | Proximity UUID (12th byte) | ||
21 | - | Proximity UUID (13th byte) | ||
22 | - | Proximity UUID (14th byte) | ||
23 | - | Proximity UUID (15th byte) | ||
24 | - | Proximity UUID (16th byte) | ||
25 | - | Variable | Major number (1st byte) | Major number |
26 | - | Major number (2nd byte) | ||
27 | - | Variable | Minor number (1st byte) | Minor number |
28 | - | Minor number (2nd byte) | ||
29 | - | Variable | Measured Power | RSSI at 1 meter in front of the beacon |
Safety
“Safety” packet is an Advertising packet supported by BlueBeacon-series beacons, developed for safety applications. Safety packet contains information about internal data of the beacon, including:
- battery status
- button activation
- motion detection
- man-down detection
Safety Packet is formatted according to iBeacon technology specifications, with Minor number used in a custom way. The identifier of the beacon is reduced to 18 bytes, and composed by:
- Proximity UUID (16 bytes);
- Major number (2 bytes);
Minor number (2 bytes) is used to advertise internal status, with the following format:
- Battery level (1 byte);
- Safety flags (1 byte)
Additionally, Safety Packet contains (last byte) the calibrated RSSI (Received Signal Strength Indicator), which represents the power received by the smartphone at distance of 1 meter, in front of the beacon. This value is used to estimate the proximity of the beacon. Calibrated RSSI is automatically updated when TX power level is modified.
In iOS, Safety Packet data is only accessible using CoreLocation APIs (as any iBeacon frame).
Byte | Value (hex) | Property | Description | Comments |
---|---|---|---|---|
0 | 0x02 | Fixed | AD Length | Length of packet data |
1 | 0x01 | Fixed | AD Type: Flags | |
2 | 0x04 | Fixed | BR/EDR Not Supported / LE General Discoverable | |
3 | 0x1A | Fixed | AD Length | |
4 | 0xFF | Fixed | AD Type: Manufacturer specific data | |
5 | 0x4C | Fixed | Manufacturer data (1st byte) | |
6 | 0x00 | Manufacturer data (2nd byte) | ||
7 | 0x02 | Manufacturer data (3rd byte) | ||
8 | 0x15 | Manufacturer data (4th byte) | ||
9 | - | Variable | Proximity UUID (1st byte) | Proximity UUID is used to identify the beacon (usually a set of beacons share the same UUID). |
10 | - | Proximity UUID (2nd byte) | ||
11 | - | Proximity UUID (3rd byte) | ||
12 | - | Proximity UUID (4th byte) | ||
13 | - | Proximity UUID (5th byte) | ||
14 | - | Proximity UUID (6th byte) | ||
15 | - | Proximity UUID (7th byte) | ||
16 | - | Proximity UUID (8th byte) | ||
17 | - | Proximity UUID (9th byte) | ||
18 | - | Proximity UUID (10th byte) | ||
19 | - | Proximity UUID (11th byte) | ||
20 | - | Proximity UUID (12th byte) | ||
21 | - | Proximity UUID (13th byte) | ||
22 | - | Proximity UUID (14th byte) | ||
23 | - | Proximity UUID (15th byte) | ||
24 | - | Proximity UUID (16th byte) | ||
25 | - | Variable | Major number (1st byte) | Major number is used to identify the beacon (there must not be a pair of beacons with the same UUID and major) |
26 | - | Major number (2nd byte) | ||
27 | - | Variable | Minor number (1st byte) | Battery level |
28 | - | Minor number (2nd byte) | Safety flags | |
29 | - | Variable | Measured Power | RSSI at 1 meter in front of the beacon |
Battery Level (byte #27)
Contains an encoded battery voltage. Voltage value (in mV) can be computed using the following relation:
Safety Flags (byte #28)
Contains safety flags encoded as follows:
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
RFU | RFU | RFU | RFU | MD | MV | BL | BS |
BS = Button Pressed (short pressure) flag
BL = Button Pressed (long pressure) flag
MV = Motion detection flag
MD = Man-Down flag
Example: Byte #27
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Battery = (10000001) base 2 = 0x81 = 129
Battery voltage (mV) = (19 x 10) +1700 = 1290 + 1700 = 2990 mV
Byte #28
7 |
6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Safety flags:
- MD = 0 (no man-down event detected)
- MV = 1 (motion detected)
- BL = 0 (no button long detected)
- BS = 0 (no button short detected)
Eddystone
Eddystone is an open beacon format from Google for Bluetooth Low Energy (BLE) beacons. The Eddystone Specification includes a number of broadcast frame types: UID, URL, TLM, EID.
Eddystone - UID
The Eddystone – UID frame broadcasts a unique 16-byte Beacon ID, composed by:
- 10-byte Namespace ID
- 6-byte Instance ID
The Beacon ID may be useful when mapping a device to a record in an external storage. The Namespace ID may be used to group a particular set of beacons, while the Instance ID identifies individual devices in a group.
Byte | Value (hex) | Property | Description | Comments |
---|---|---|---|---|
0 | 0x02 | Fixed | AD Length | Length of packet data |
1 | 0x01 | Fixed | AD Type: Flags | |
2 | 0x06 | Fixed | BR/EDR Not Supported / LE General Discoverable | |
3 | 0x03 | Fixed | AD Length | |
4 | 0x03 | Fixed | AD type: Complete list of 16-bit Service Class UUIDs | |
5 | 0xAA | Fixed | Eddystone UUID (1st byte) | Eddystone UUID |
6 | 0xFE | Eddystone UUID (2nd byte) | ||
7 | 0x17 | Fixed | AD Length | Manufacturer data (3rd byte) |
8 | 0x16 | Fixed | AD Type: Service Data | |
9 | 0xAA | Fixed | Eddystone UUID (1st byte) | Eddystone UUID |
10 | 0xFE | Eddystone UUID (1st byte) | ||
11 | 0x00 | Fixed | Frame Type (UID) | |
12 | - | Variable | Ranging Data | Calibrated TX Power at 0 m |
13 | - | Variable | Namespace ID (1st byte) | Namespace ID |
14 | - | Namespace ID (2nd byte) | ||
15 | - | Namespace ID (3d byte) | ||
16 | - | Namespace ID (4th byte) | ||
17 | - | Namespace ID (5th byte) | ||
18 | - | Namespace ID (6th byte) | ||
19 | - | Namespace ID (7th byte) | ||
20 | - | Namespace ID (8th byte) | ||
21 | - | Namespace ID (9th byte) | ||
22 | - | Namespace ID (10th byte) | ||
23 | - | Variable | Instance ID (1st byte) | Instance ID |
24 | - | Instance ID (2nd byte) | ||
25 | - | Instance ID (3d byte) | ||
26 | - | Instance ID (4th byte) | ||
27 | - | Instance ID (5th byte) | ||
28 | - | Instance ID (6th byte) | ||
29 | 0x00 | Fixed | RFU | |
30 | 0x00 | Fixed | RFU |
Eddystone - URL
The Eddystone-URL frame broadcasts a URL using a compressed encoding format in order to fit more within the limited advertisement packet. The Encoded URL field is a variable length field, ranging from 1 up to 17 bytes, depending on the encoded URL length.
Byte | Value (hex) | Property | Description | Comments |
---|---|---|---|---|
0 | 0x02 | Fixed | AD Length | Length of packet data |
1 | 0x01 | Fixed | AD Type: Flags | |
2 | 0x06 | Fixed | BR/EDR Not Supported / LE General Discoverable | |
3 | 0x03 | Fixed | AD Length | |
4 | 0x03 | Fixed | AD type: Complete list of 16-bit Service Class UUIDs | |
5 | 0xAA | Fixed | Eddystone UUID (1st byte) | Eddystone UUID |
6 | 0xFE | Eddystone UUID (2nd byte) | ||
7 | - | Variable | AD Length | Manufacturer data (3rd byte) |
8 | 0x16 | Fixed | AD Type: Service Data | |
9 | 0xAA | Fixed | Eddystone UUID (1st byte) | Eddystone UUID |
10 | 0xFE | Eddystone UUID (1st byte) | ||
11 | 0x10 | Fixed | Frame Type (URL) | |
12 | - | Variable | Ranging Data | Calibrated TX Power at 0 m |
13 | - | Variable | URL Scheme | |
14 | - | Variable | Encoded URL (1st byte) | Encoded URL |
15 | - | Encoded URL (2nd byte) | ||
16 | - | Encoded URL (3rd byte) | ||
17 | - | Encoded URL (4th byte) | ||
18 | - | Encoded URL (5th byte) | ||
19 | - | Encoded URL (6th byte) | ||
20 | - | Encoded URL (7th byte) | ||
21 | - | Encoded URL (8th byte) | ||
22 | - | Encoded URL (9th byte) | ||
23 | - | Encoded URL (10th byte) | ||
24 | - | Encoded URL (11th byte) | ||
25 | - | Encoded URL (12th byte) | ||
26 | - | Encoded URL (13th byte) | ||
27 | - | Encoded URL (14th byte) | ||
28 | - | Encoded URL (15th byte) | ||
29 | - | Encoded URL (16th byte) | ||
30 | - | Encoded URL (17th byte) |
Eddystone - TLM
The Eddystone-TLM frame broadcasts telemetry information about the beacon itself, such as battery voltage, device temperature, and count of broadcast packets.
- Battery voltage is the current battery charge in millivolts, expressed in 1mV per bit. If not supported (for example in a USB-powered beacon) the value should be zero.
- Beacon Temperature is the temperature in Celsius degrees sensed by the beacon and expressed in a signed 8.8 fixed-point notation. If not supported, the value should be set to 0x8000, -128°C.
- Advertising PDU Count is the running count of advertisement frames of all types emitted by the beacon since power-up or reboot, useful for monitoring performance metrics that scale per broadcast frame. If this value is reset (e.g. on reboot), the current field must also be reset.
- Time since power-up / Reboot is a 0.1 second resolution counter that represents time since beacon power-up or reboot. If this value is reset (e.g. on reboot), the Advertising PDU Count field must also be reset.
Unencrypted Advertisement Format
Byte | Value (hex) | Property | Description | Comments |
---|---|---|---|---|
0 | 0x02 | Fixed | AD Length | Length of packet data |
1 | 0x01 | Fixed | AD Type: Flags | |
2 | 0x06 | Fixed | BR/EDR Not Supported / LE General Discoverable | |
3 | 0x03 | Fixed | AD Length | |
4 | 0x03 | Fixed | AD type: Complete list of 16-bit Service Class UUIDs | |
5 | 0xAA | Fixed | Eddystone UUID (1st byte) | Eddystone UUID |
6 | 0xFE | Eddystone UUID (2nd byte) | ||
7 | 0x11 | Fixed | AD Length | |
8 | 0x16 | Fixed | AD Type: Service Data | |
9 | 0xAA | Fixed | Eddystone UUID (1st byte) | Eddystone UUID |
10 | 0xFE | Eddystone UUID (1st byte) | ||
11 | 0x20 | Fixed | Frame Type (TLM) | |
12 | 0x00 | Fixed | TLM Version | |
13 | - | Variable | Battery Voltage (1st byte) | UINT16_BE |
14 | - | Battery Voltage (2nd byte) | ||
15 | - | Variable | Temperature (1st byte) | UINT16_BE, Fixed Point 8.8. Temp [°C] = Temperature / 256 |
16 | - | Temperature (2nd byte) | ||
17 | - | Variable | Advertising PDU Count | UINT32_BE |
18 | - | |||
19 | - | |||
20 | - | |||
21 | - | Variable | Time since Power-on / Reboot | [0.1 s] UINT32_BE |
22 | - | |||
23 | - | |||
24 | - |
Encrypted Advertisement Format
Byte | Value (hex) | Property | Description | Comments |
---|---|---|---|---|
0 | 0x02 | Fixed | AD Length | Length of packet data |
1 | 0x01 | Fixed | AD Type: Flags | |
2 | 0x06 | Fixed | BR/EDR Not Supported / LE General Discoverable | |
3 | 0x03 | Fixed | AD Length | |
4 | 0x03 | Fixed | AD type: Complete list of 16-bit Service Class UUIDs | |
5 | 0xAA | Fixed | Eddystone UUID (1st byte) | Eddystone UUID |
6 | 0xFE | Eddystone UUID (2nd byte) | ||
7 | 0x15 | Fixed | AD Length | |
8 | 0x16 | Fixed | AD Type: Service Data | |
9 | 0xAA | Fixed | Eddystone UUID (1st byte) | Eddystone UUID |
10 | 0xFE | Eddystone UUID (1st byte) | ||
11 | 0x20 | Fixed | Frame Type (TLM) | |
12 | 0x01 | Fixed | TLM Version | |
13 | - | Variable | Encrypted TLM Data | |
14 | - | |||
15 | - | |||
16 | - | |||
17 | - | |||
18 | - | |||
19 | - | |||
20 | - | |||
21 | - | |||
22 | - | |||
23 | - | |||
24 | - | |||
25 | - | Variable | Salt | |
26 | - | |||
27 | - | Variable | Message Integrity Check | |
28 | - |
Eddystone – EID
Byte | Value (hex) | Property | Description | Comments |
---|---|---|---|---|
0 | 0x02 | Fixed | AD Length | Length of packet data |
1 | 0x01 | Fixed | AD Type: Flags | |
2 | 0x06 | Fixed | BR/EDR Not Supported /LE General Discoverable | |
3 | 0x03 | Fixed | AD Length | |
4 | 0x03 | Fixed | AD type: Complete list of 16-bit Service Class UUIDs | |
5 | 0xAA | Fixed | Eddystone UUID (1st byte) | Eddystone UUID |
6 | 0xFE | Eddystone UUID (2nd byte) | ||
7 | 0x0D | Fixed | AD Length | |
8 | 0x16 | Fixed | AD Type: Service Data | |
9 | 0xAA | Fixed | Eddystone UUID (1st byte) | Eddystone UUID |
10 | 0xFE | Eddystone UUID (1st byte) | ||
11 | 0x30 | Fixed | Frame Type (EID) | |
12 | - | Variable | Ranging Data | Calibrated TX Power at 0 m |
13 | - | Variable | Ephemeral Identifier | |
14 | - | |||
15 | - | |||
16 | - | |||
17 | - | |||
18 | - | |||
19 | - | |||
20 | - |
Sensor
BlueBeacon beacons with second-generation firmware (ver. 5.0 or higher), support a new frame type, Sensors packet.
Sensors packet is identified by a 16-byte Service UUID 0x181A (the UUID for standard Environmental Sensing Service defined by Bluetooth specifications has been adopted).
Sensors packet is individually configurable for interval (from 100 msec to 5 secs) and transmission power (from -40dBm to +4dBm).
Sensors packet is accessible using native Bluetooth Low Energy libraries for iOS or Android:
Sensor - Legacy
Accelerometer Data are present only on beacons having the accelerometer mounted.
- Accelerometer Data are Little-Endian encoded in range [-512, 511]. To obtain values in mg unit: $$mg = value \cdot (4000/1024)$$
- Beacons without environmental sensors will set the Temperature, Humidity and Pressure values to all zeros.
- Environmental Sensors Data are all Little-Endian encoded.
- Temperature is expressed as a 16-bit signed integer in 0.01 Celsius degrees units
- Humidity is expressed as a 16-bit signed integer in 0.01 percentage units
- Pressure is expressed as a 16-bit signed integer in 0.1 Pascal units
Byte | Value (hex) | Property | Description | Comments |
---|---|---|---|---|
0 | 0x02 | Fixed | AD Length | Length of packet data |
1 | 0x01 | Fixed | AD Type: Flags | |
2 | 0x06 | Fixed | BR/EDR Not Supported / LE General Discoverable | |
3 | - | Variable | AD Length | |
4 | 0x16 | Fixed | AD Type: Service Data | |
5 | 0x1A | Fixed | Environmental Sensing Service UUID | |
6 | 0x18 | |||
7 | 0x6E | Fixed | Temperature UUID | UINT16_LE |
8 | 0x2A | |||
9 | - | Variable | Temperature Value | INT16_LE Temp [°C] = Temperature / 100 |
10 | - | |||
11 | 0x6F | Fixed | Humidity UUIDs | UINT16_LE |
12 | 0x2A | |||
13 | - | Variable | Humidity Value | UINT16_LEHumidity [%] = Humidity / 100 |
14 | - | |||
15 | 0x6D | Fixed | Pressure UUID | UINT16_LE |
16 | 0x2A | |||
17 | - | Variable | Pressure Value | UINT16_LEPressure [Pa] = Pressure / 10 |
18 | - | |||
19 | - | |||
20 | - | |||
21 | 0xAC | Fixed | Accelerometer UUID | UINT16_LE |
22 | 0xCE | |||
23 | - | Variable | Accelerometer X-Axis | UINT16_LEAcc.X [mg] = (AccX)*(4000/1240) |
24 | - | |||
25 | - | Variable | Accelerometer Y-Axis | UINT16_LEAcc.Y [mg] = (AccY)*(4000/1240) |
26 | - | |||
27 | - | Variable | Accelerometer Z-Axis | UINT16_LEAcc.Z [mg] = (AccZ)*(4000/1240) |
28 | - |
Sensor - Advanced
Accelerometer data are present only on beacons that have the accelerometer mounter. To configure the beacon to send accelerometer data, the accelerometer has to be configured in “Continuous Sampling” mode.
Beacons can have different sensors, so the length of the packet is variable depending on which sensors are present on the beacon. If a sensor is not present on the beacon, the data related to that sensor will not be included in the packet.
Byte | Value (hex) | Property | Description | Comments |
---|---|---|---|---|
0 | 0x02 | Fixed | AD Length | Length of packet data |
1 | 0x01 | Fixed | AD Type: Flags | |
2 | 0x06 | Fixed | BR/EDR Not Supported / LE General Discoverable | |
3 | - | Variable | AD Length | |
4 | 0xFF | Fixed | AD Type: Manufacturer Data | |
5 | 0x59 | Fixed | BlueUp company ID | |
6 | 0x08 | |||
7 | 0x02 | Fixed | Advanced Sensor Packet ID | |
8 | - | Variable | Device ID | Device ID = (Model Number * 1000000) + Serial Number |
9 | - | |||
10 | - | |||
11 | - | |||
12 | - | Variable | Battery Voltage | Battery [mV] = (Battery *10) +1700 |
- | 0x6E | Fixed | Temperature Sensor ID | |
- | - | Variable | Temperature | UINT16_BE, Fixed point 8.8Temp [°C] = Temperature / 256 |
- | - | |||
- | 0x6F | Fixed | Humidity Sensor ID | |
- | - | Variable | Humidity | UINT16_BE, Fixed point 8.8Humidity [%] = Humidity / 256 |
- | - | |||
- | 0x6D | Fixed | Pressure Sensor ID | |
- | - | Variable | Pressure | UINT16_BE, Fixed point 8.8Pressure [kPa] = Pressure / 256 |
- | - | |||
- | 0x6C | Fixed | CO2 Sensor ID | |
- | - | Variable | CO2 [ppm] | UINT16_BE |
- | - | |||
- | 0xAC | Fixed | Accelerometer UUID | |
- | - | Variable | Accelerometer X-Axis | UINT16_BE, Fixed point 8.8Acc.X [mg] = Accelerometer X / 256 |
- | - | |||
- | - | Variable | Accelerometer Y-Axis | UINT16_BE, Fixed point 8.8Acc.Y [mg] = Accelerometer Y / 256 |
- | - | |||
- | - | Variable | Accelerometer Z-Axis | UINT16_BE, Fixed point 8.8Acc.Z [mg] = Accelerometer Z / 256 |
- | - |