BlueBeacon Configuration GATT firmware v.6.x

The following guide describes in detail the Configuration GATT related to the BlueBeacon beacons.

BlueUp Advertising Packet

Byte Index BLE Advertisement Value
0 AD_LEN 2
1 AD_TYPE_FLAGS 0x01
2 FLAGS 0x06
3 AD_LEN 4
4 AD_TYPE_SERVICE_DATA 0x16
5 SERVICE_UUID
[BATTERY_SERVICE]
0x0F
6 0x18
7 BATTERY_LEVEL -
8 AD_LEN 4
9 AD_TYPE_SERVICE_DATA 0x16
10 SERVICE_UUID
[BLUEUP_SERVICE]
0x00
11 0x88
12 BLUEUP_FLAGS - (see BlueUp proprietary flags)
13 AD_LEN 17
14 AD_TYPE_COMPLETE_NAME 0x09
15 BlueUp-[MN]-[SN] 0x42 [ASCII: ‘B’]
16 0x6C [ASCII: ‘l’]
17 0x75 [ASCII: ‘u’]
18 0x65 [ASCII: ‘e’]
19 0x55 [ASCII: ‘U’]
20 0x70 [ASCII: ‘p’]
21 0x2D [ASCII: ‘-’]
22 - (see Model Number)
23 - (see Model Number)
24 0x2D [ASCII: ‘-’]
25 - (Serial Number: digit 1)
26 - (Serial Number: digit 2)
27 - (Serial Number: digit 3)
28 - (Serial Number: digit 4)
29 - (Serial Number: digit 5)
30 - (Serial Number: digit 6)

BlueUp proprietary flags

Bit Flag value
7 [MSB] ALARM_ACTIVE
6 ALARM_SUPPORTED
5 RFU
4 SAFETY_FRAME_ACTIVE
3 SENSOR_FRAME_ACTIVE
2 QUUPPA_FRAME_ACTIVE
1 IBEACON_FRAME_ACTIVE
0 [LSB] EDDYSTONE_FRAME_ACTIVE

Model Number

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

BlueUp Configuration Service

As for the Firmware v.5.x, the BlueBeacon implements the BlueUp Configuration Service.

BlueUp Configuration Service
A3C88800-8ED3-4BDF-8A39-A01BEBEDE295

Firmware v.6.x implements an enlarged subset of the characteristics that are implemented in v.5.x.

The implemented characteristics of the BlueUp Configuration Service are the following:

Characteristic UUID Characteristic Short Name Characteristic Description
8801 Firmware Command (v6.2) Sending custom commands
8802 Current Time Beacon clock configuration
8803 Clock Advertising (Start Time) Start Advertising time configuration
8804 Clock Advertising (End Time) End Advertising time configuration
8805 Anonymous Mode Anonymous mode configuration
8806 Accelerometer Configuration Accelerometer features configuration
8807 Active Slot Selection of the Slot to be configured
8808 Advertising Interval Slot Advertising interval configuration
8809 Radio Tx Power Slot Transmission Power configuration
880A Advertised Tx Power Slot Calibrated Transmission Power configuration
880B RW Adv Slot Data BlueUp proprietary slot configuration
880C Button Configuration Button features configuration
880D GPIO Configuration Beacon I/O configuration and drive
880E Alarm Configuration Alarm configuration and Alarm trigger on the beacon
880F Hardware Capabilities Report of the hardware characteristics

Firmware Command (0x8801)

Features used to send custom commands/data to the beacon.

Size (Byte) Range Format
Variable [1-16] N/A [Command_ID, Command_Data]

As for the Firmware v.6.2, the supported commands are:

Command Command Data Description
FW_COMMAND_REBOOT_DFU (0xF1) None
FW_COMMAND_SCD41_PERFORM_FRC (0xF4) UINT16-BE Command to perform the Forced Calibration of the SCD41 sensor (if present).
The UINT16-BE value passed as a parameter corresponds to the CO2 target.
FW_COMMAND_SCD41_STATUS (0xF5) None Command to read the status of the SCD41 sensor (if present).
Status is sent via notification on this same feature.
FW_COMMAND_SD_PARAMS (0xF6) None [READ SD_PARAMS] Command to read the advertising parameters of SD.
The parameters are sent as a notification on this same feature.
The data sent on the notification is as follows:
[0]: FW_COMMAND_SD_PARAMS (0xF6)
[1]: SD_ADV_TX_POWER
[2,3] : SD_ADV_INTERVAL (UINT16-BE)
1 byte (TX_POWER) +
2 bytes UINT16-BE (ADV_INTRVL)
[WRITE SD_PARAMS]
SD advertising parameter configuration command.
The write command must have the following format:
[0]: FW_COMMAND_SD_PARAMS (0xF6)
[1]: SD_ADV_TX_POWER
[2,3] : SD_ADV_INTERVAL (UINT16-BE)
The configured parameters will be reported via notification on this same
feature in the same format used for the READ_SD_PARAMS command.

Current Time (0x8802)

Configures the current time of the beacons internal system.

The current time is expressed as the number of seconds elapsed starting from 00:00:00. Since a day has 86400 seconds, the read / write range of this characteristic is [0, 86399].

Size (Byte) Range Format
4 [0, 86399] Little-Endian

Clock Advertising – Start Time (0x8803)

Configures the start time of the advertising procedure.

The start time is expressed as the number of seconds elapsed starting from 00:00:00. Since a day has 86400 seconds, the read / write range of this characteristic is [0, 86399].

Size (Byte) Range Format
4 [0, 86399] Little-Endian

Clock Advertising – End Time (0x8804)

Configures the end time of the advertising procedure.

The end time is expressed as the number of seconds elapsed starting from 00:00:00. Since a day has 86400 seconds, the read / write range of this characteristic is [0, 86399].

Size (Byte) Range Format
4 [0, 86399] Little-Endian

Anonymous Mode (0x8805)

Configures the operation in Anonymous mode.
When configured to operate in Anonymous mode, the firmware stops sending BlueUp proprietary packet. In Anonymous mode the beacon behaves as a pure beacon, without transmitting any proprietary information. However, in Anonymous mode the beacon will no longer be connectable or visible through the BlueBeacon Manager app. Therefore, a reconfiguration of the beacon has to be performed after a hard-reset of the device.

Size (Byte) Range Format
1 N/A N/A

Accelerometer Configuration (0x8806)

Configures the beacons accelerometer functionalities.
All the BlueUp beacons, even those that do not have the accelerometer, implement 8806 accelerometer configuration characteristic.
When reading, the possible values of the characteristic are the following:

Value Accelerometer Functionality
0x0F Accelerometer not mounted
0x00 Accelerometer disabled
0x01 Horizontal-To-Sleep
0x02 Horizontal-To-Unset
0x03 Advertising-On-Shake
0x04 Advertising-On-Move (High-Sense)
0x05 Advertising-On-Move (Mid-Sense)
0x06 Advertising-On-Move (Low-Sense)
0x07 Continuous Sampling

In BlueBeacon beacons with firmware v.5.x, but without the accelerometer, the reading of the 8806 characteristic returned the value 0x00 (disabled). This behavior was not flexible enough (some beacons could be assembled with or without the accelerometer), for this reason for beacons having firmware v.6.x, if the beacon does not have the accelerometer, the 8806 characteristic returns the value 0x0F (not mounted).

When writing, 0x0F value is not allowed, therefore when trying to write this value on the characteristic, the WRITE_NOT_PERMITTED error will be returned.

In firmware v6.0 and v6.1 the accelerometer was configured using a single byte (called ACCEL_MODE), however, starting from firmware v6.2, the 8806 feature has been made variable length and the following modes have been added:

Value Accelerometer Functionality
0x11 Position Detection
0x12 Motion Detection
0x13 FreeFall Detection
0x14 Continuous Sampling v2

These modes (which have the most significant NIB set to a value of 1), are operating modes that require the configuration of additional parameters.

The accelerometer configuration parameters are encoded on an array of up to 8 bytes, as follows:

Index Parameter
0 Accelerometer Scale
0: ±2G
1: ±4G
2: ±8G
3: ±16G
1 Accelerometer ODR
0: PowerDown
1: 1Hz
2: 10Hz
3: 25Hz
3: 50Hz
4: 100Hz
5: 200Hz
6: 400Hz
2 Accelerometer Axis
(1 « 0): Enable X axis
(1 « 1): Enable Y axis
(1 « 2): Enable Z axis
3 Accelerometer ACT_THS
Activity threshold on INT2, range [0 - 127]
4 Accelerometer ACT_DUR
Activity duration threshold, range [0 - 255]
5 Accelerometer FreeFall_THS
FreeFall threshold on INT1, range [0 - 127]
6 Accelerometer FreeFall_DUR
FreeFall duration threshold on INT1, range [0 - 255]
7 Accelerometer FreeFall Timeouts
MSN (Most Significant NIB): FreeFall Debounce Time (s)
LSN (Least Significant NIB): FreeFall Delay Time (s)

Not all new modes require configuration of all parameters, the parameters that require configuration for each mode are the following:

Value Accelerometer functionality Parameters
0x11 Position Detection - Scale
- ODR
- Axis
- ACT_THS
- ACT_DUR
0x12 Motion Detection - Scale
- ODR
- Axis
- ACT_THS
- ACT_DUR
0x13 FreeFall Detection - Scale
- ODR
- Axis
- ACT_THS
- ACT_DUR
- FF_THS
- FF_DUR
- FF_TIMERS
0x14 Continuous Sampling v2 - Scale
- ODR
- Axis

If e.g., you want to configure the accelerometer in Motion Detection mode with Scale = ±2G, ODR = 10Hz, Axis = XYZ, Activity Threshold = 25, Activity Duration = 5, you will have to write the following array on characteristic 8806:

  • [0] : 0x12 (Movement Detection)
  • [1] : 0x00 (Scale = ±2G)
  • [2] : 0x02 (ODR = 10Hz)
  • [3] : 0x07 (Axis = XYZ)
  • [4] : 0x19 (ACT_THS = 25)
  • [5] : 0x05 (ACT_DUR = 5)
Size (Byte) Range Format
[1, 9] N/A N/A

Active Slot (0x8807)

As for Eddystone Configuration Service, selects the slot to configure.

Size (Byte) Range Format
1 [0, 3] N/A

Advertising Interval (0x8808)

As for Eddystone Configuration Service, configures the advertising interval for the selected slot.

Size (Byte) Range Format
1 [100, 5000] Big-Endian

Radio Tx Power (0x8809)

As for Eddystone Configuration Service, configures the advertising power for the selected slot.

Size (Byte) Range Format
1 Possible values
[-40, -20, -16, -12, -8, -4, 0, 4]
N/A

Advertised Tx Power (0x880A)

As for Eddystone Configuration Service, configures the calibrated power for the selected slot. The -128 (0x80) value represents the default value (AUTO) using which the firmware performs the auto-tuning of the calibrated power, based on the Transmitted power and on the factory calibrated power.

Size (Byte) Range Format
1 [-127, 127] N/A

RW Adv Slot Data (0x880B)

As for Eddystone Configuration Service, configures data related to the selected slot. The BlueUp proprietary slots are:

  • iBeacon
  • Quuppa
  • Sensor
  • Safety (starting from FW v.6.2)

iBeacon Slot

Reading iBeacon slot:

Index Value Size Format
0 iBeacon Frame Type (0xC0) 1 N/A
1-2 iBeacon Beacon Type 2 N/A
3-18 iBeacon UUID 16 N/A
19-20 iBeacon Major 2 Big-Endian
21-22 iBeacon Minor 2 Big-Endian
23 iBeacon Calibrated RSSI 1 N/A

Writing iBeacon slot:

Index Value Size Format
0 iBeacon Frame Type (0xC0) 1 N/A
1-16 iBeacon UUID 16 N/A
17-18 iBeacon Major 2 Big-Endian
19-20 iBeacon Minor 2 Big-Endian

Quuppa Slot

Reading Quuppa slot:

Index Value Size Format
0 Quuppa Frame Type (0xC0) 1 N/A
1 Quuppa Packet ID 1 N/A
2 Quuppa Device Type 1 N/A
3 Quuppa Header 1 N/A
4-9 Quuppa Tag ID 6 N/A
10 Quuppa CRC 1 N/A
11-.. Quuppa DF Field 14 N/A

Writing Quuppa slot:

Index Value Size Format
0 Quuppa Frame Type (0xC0) 1 N/A
1 Quuppa Header 1 N/A
2-7 Quuppa Tag ID 6 N/A

If Quuppa Header has TAG_ID_TYPE set to:

  • TAG_ID_TYPE_NOT_USED: the firmware will overwrite Quuppa Tag ID with 0x00 array;
  • TAG_ID_TYPE_SW: Quuppa Tag ID will be configured according to [2, 7] bytes;
  • TAG_ID_TYPE_MAC: the firmware will overwrite Quuppa Tag ID with the MAC Address of the SoC;
  • TAG_ID_TYPE_RFU: the firmware will overwrite Quuppa Tag ID with 0x00 array.

Sensor Slot V1

Reading Sensor slot:

Index Value Size Format
0 Sensor Frame Type (0xC2) 1 N/A
1-2 Temperature UUID 2 Little-Endian
2-3 Temperature 2 Little-Endian (signed)
4-5 Humidity UUID 2 Little-Endian
6-7 Humidity (unsigned) 2 Little-Endian
8-9 Pressure UUID 2 Little-Endian (unsigned)
10-13 Pressure 4 Little-Endian
14-15 Accelerometer UUID 2 Little-Endian
16-17 Accelerometer X 2 Little-Endian (signed)
18-19 Accelerometer Y 2 Little-Endian (signed)
20-21 Accelerometer Z 2 Little-Endian (signed)

Writing Sensor slot:

Index Value Size Format
0 Sensor Frame Type (0xC2) 1 N/A

Sensor Slot V2

Reading Sensor slot V2:

Index Value Size Format
0 Sensor Frame Type (0xC2) 1 N/A
1 Sensor Frame Version (0x02) 1 N/A
2-3 Sensor Measure Interval 2 Big-Endian (unsigned)

Writing Sensor slot V2:

Index Value Size Format
0 Sensor Frame Type (0xC2) 1 N/A
1 Sensor Frame Version (0x02) 1 N/A
2-3 Sensor Measure Interval 2 Big-Endian (unsigned)

Safety Slot

Reading / Writing Safety slot:

Index Value Size Format
0 Safety Frame Type (0xC3) 1 N/A
1-16 Safety UUID 1 N/A
17-18 Safety Major 1 Big-Endian
19 Safety Triggers 1 N/A
20 Safety Advertising Params 1 N/A
21 Safety Triggers Duration 1 N/A
22 Safety Movement ACT_THS 1 N/A
23 Safety Movement ACT_DUR 1 N/A
24 Safety FreeFall THS 1 N/A
25 Safety FreeFall DUR 1 N/A
26 Safety FreeFall TIMES 1 N/A
Safety Triggers

Encodes a bitmask of the possible triggers that the beacon is able to manage.

BIT 7- BIT 6 - BIT 5 - BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
RFU Accelerometer
FreeFall
Accelerometer
Movement
Button
LongPress
Button
ShortPress
Safety Advertising Params

Encodes the advertising parameters for the case when the beacon detects one or more triggers.

BIT 7- BIT 6 - BIT 5 - BIT 4 - BIT 3 BIT 2 - BIT 1 - BIT 0
Triggered Advertising Interval Triggered Radio Tx Power
Triggered Advertising Interval

Is the Advertising Interval configured on the beacon when one of the enabled triggers is detected. This interval is encoded on 5 bits, with [0, 15] range, and represents the index of the Advertising interval inside the array of possible Advertising Intervals:

[100ms, 150ms, 200ms, 250ms, 300ms, 400ms, 500ms, 600ms, 700ms, 800ms, 900ms, 1s]

Triggered Radio Tx Power

Is the Radio TX Power configured on the beacon when one of the enabled triggers is detected. This TX Power is encoded on 4 bits, with [0, 7] range, and represents the index of the TX Power inside the array of possible Radio TX Powers:

[-40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, 4dBm]

Safety Triggers Duration

It is the minimum duration in seconds for each trigger (in the Safety advertising packet), range [1, 255].

Safety Movement ACT_THS

It is the activation threshold for the movement trigger, range [0, 127].

Safety Movement ACT_DUR

Represents the duration of the movement under the ACT_THR threshold to interrupt the movement trigger on the beacon. The range is [1, 255], but it is set to 1 in the configurations app, and is used Trigger Duration to interrupt the movement trigger from the advertising packet.

Safety FreeFall THS

Represents the activation threshold for the freefall trigger, range [0 127].

Safety FreeFall DUR

Represents the duration of the trigger under the Freefall Threshold, range [0, 255].

Safety FreeFall TIMES

Encodes the timing parameters for the FreeFall Detection algorithm.

BIT 7- BIT 6 - BIT 5 - BIT 4 BIT 3 - BIT 2 - BIT 1 - BIT 0
FreeFall Debounce Time FreeFall Delay Time
FreeFall Debounce Time

Represents the debounce time in seconds in the FreeFall Detection algorithm.

FreeFall Delay Time

Represents the delay time in seconds in the FreeFall Detection algorithm.

Notes:

The configuration of the Safety slot disables automatically all the other configured slots on the beacon (both Eddystone and BlueUp proprietary), because the Safety slot cannot be used combined with the others. The writing of the slot automatically configures the accelerometer. If the triggers that use accelerometer are enabled, the firmware automatically configures the accelerometer in Movement Detection or Freefall Detection mode, based on the enabled triggers. In both Movement and FreeFall Detection modes the accelerometer is configured using the following parameters:

  • Scale: ±2G
  • ODR: 25Hz
  • Axis: XYZ

When using the Safety slot, the beacon advertises iBeacon frames, in which the two bytes of the Minor Number are used in a custom manner by the firmware to transmit the following data:

15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 7 6 5 4 3 2 1 0
BATT RFU RFU RFU RFU FF MV BL BS

The upper byte of the Minor Number contains a representation of the voltage value (in mV) of the battery. The voltage value is obtained as:

MathJax TeX Test Page $$mV = (BATT \cdot 10) + 1700$$

The lower byte of the Minor Number contains a series of flags that represent the triggers detected by the beacon:

  • BS: trigger caused by (short) pressing of the button
  • BL: trigger caused by (long) pressing the button
  • MV: trigger caused by beacon movement
  • FF: trigger caused by a beacon FreeFall event
  • RFU: Reserved for Future Use

Example Minor Number = 33028 = 0x8104

15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 7 6 5 4 3 2 1 0
0x81 (129) 0 0 0 0 0 1 0 0

Battery Level: $$mV = (129 \cdot 10) + 1700 = 2990$$

Triggers:

  • BS = 0
  • BL = 0
  • MV = 1
  • FF = 0

iBeacon/Battery Slot

The iBeacon/Battery slot is identical to an iBeacon slot, except that he firmware replaces the MSB byte of the Minor Number with the coded battery level as in the case of the Safety slot:

$$mV = (BATT \cdot 10) + 1700$$

Reading iBeacon/Battery slot:

Index Value Size Format
0 iBeacon Frame Type (0xC4) 1 N/A
1-2 iBeacon Beacon Type 2 N/A
3-18 iBeacon UUID 16 N/A
19-20 iBeacon Major 2 Big-Endian
21-22 iBeacon Minor 2 Big-Endian
23 iBeacon Calibrated RSSI 1 N/A

Writing iBeacon/Battery slot:

Index Value Size Format
0 iBeacon Frame Type (0xC4) 1 N/A
1-16 iBeacon UUID 16 N/A
17-18 iBeacon Major 2 Big-Endian
19-20 iBeacon Minor 2 Big-Endian

Safety Slot V2

Reading / Writing Safety slot:

Index Value Size Format
0 Safety Frame Type (0xC5) 1 N/A
1 Safety Frame Version 1 N/A
2-17 Safety UUID 2 N/A
18-19 Safety Major 2 Big-Endian
20 Safety Flags 1 1 N/A
21 Safety Flags 2 1 N/A
22 Safety Advertising Params 1 N/A
23 Safety Triggers Duration 1 N/A
24 Safety Movement Threshold 1 N/A
25 Safety Movement Duration 1 N/A
26 Safety AdvancedAccel Param1 1 N/A
27 Safety AdvancedAccel Param2 1 N/A
[] ...
N-2 Safety Mandown Debounce sec. 1 N/A
N-1 Safety Mandown Stationary sec. 1 N/A
N Safety Mandown Alert sec. 1 N/A
Safety Flags 1

Encodes the bitmask of possible triggers that the beacon is able to manage.

BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
Accelerometer
Mandown
Accelerometer
Shock
Accelerometer
Position
Accelerometer
FreeFall
Accelerometer
Movement
Button
LongPress
Button
ShortPress

Note: Shock, Position and FreeFall can be enabled only one at a time.

Safety Advertising Params

Encodes the advertising parameters for the case when the beacon detects one or more triggers.

BIT 7- BIT 6 - BIT 5 - BIT 4 - BIT 3 BIT 2 - BIT 1 - BIT 0
Triggered Advertising Interval Triggered Radio Tx Power
Triggered Advertising Interval

Is the Advertising Interval configured on the beacon when one of the enabled triggers is detected. This interval is encoded on 5 bits, with [0, 15] range, and represents the index of the Advertising interval inside the array of possible Advertising Intervals:

[100ms, 150ms, 200ms, 250ms, 300ms, 400ms, 500ms, 600ms, 700ms, 800ms, 900ms, 1s]

Triggered Radio Tx Power

Is the Radio TX Power configured on the beacon when one of the enabled triggers is detected. This TX Power is encoded on 4 bits, with [0, 7] range, and represents the index of the TX Power inside the array of possible Radio TX Powers:

[-40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, 4dBm]

Safety Triggers Duration

Is the minimum duration in seconds for each trigger (in the Safety advertising packet), range [1, 255].

Safety Movement Threshold

Is the threshold for the movement trigger activation, range [0, 127].

Safety Movement Duration

Represents the duration of the movement such to be detected as movement. The range is [0, 255]. When set to 0 the movement or stationarity is updated immediately. While when MOV_DOR us grater that 0 the movement or stationarity is updated after the device is moving or still for MOV_DUR time.

Safety Position Angle

represents the activation threshold in degrees for the position trigger, range [1, 90].

Safety Position Duration

Represents the duration of the time spent in a position, range [0, 255]. If set to 0 the position change is updated immediately, while when set greater than 0 the position change is updated after the device remains in that position for the configured time duration.

Safety FreeFall Height (cm)

Represents the minimum height that allows to detect the freefall event in cm, range [50, 255].

Safety FreeFall Sensitivity

Configures the sensitivity of detection of the FreeFall event, range [1, 10]. The freefall event is classified as such when there are a certain number of accelerometer samples that have (x,y,z) simultaneously very close to 0. The number of samples is calculated based on the fall height, while the band/threshold around 0 is determined based on the sensitivity parameter.

$$FF THR_{mg} = sensitivity \cdot 50 $$ $$FF THR_{units} = FF THR_{mg} / 16 $$ $$FFTIME_{sec} = \sqrt{2 \cdot h \cdot G}=\sqrt{2\cdot \dfrac{h_{cm}}{100} \cdot G}$$ $$FF TIME_{units} = \lfloor FF TIME_{sec} \cdot 25 \rfloor -1$$

Safety Shock Intensity

Represents the shock event threshold, range [1, 10], where 1 is a light shock and 10 is very violent shock.

$$SHOCK THR_{mg} = 1500 + intensity \cdot 50 $$ $$SHOCK THR_{units} = SHOCK THR_{mg} / 16 $$

Safety FreeFall TIMES

Encodes the timing parameters for the FreeFall Detection algorithm.

BIT 7- BIT 6 - BIT 5 - BIT 4 BIT 3 - BIT 2 - BIT 1 - BIT 0
FreeFall Debounce Time FreeFall Delay Time
FreeFall Debounce Time

Represents the debounce time in seconds in the FreeFall Detection algorithm.

FreeFall Delay Time

Represents the delay time in seconds in the FreeFall Detection algorithm.

Notes:

The configuration of the Safety slot disables automatically all the other configured slots on the beacon (both Eddystone and BlueUp proprietary), because the Safety slot cannot be used combined with the others. The writing of the slot automatically configures the accelerometer. If the triggers that use accelerometer are enabled, the firmware automatically configures the accelerometer in Movement Detection or Freefall Detection mode, based on the enabled triggers. In both Movement and FreeFall Detection modes the accelerometer is configured using the following parameters:

  • Scale: ±2G
  • ODR: 25Hz
  • Axis: XYZ

When using the Safety slot, the beacon advertises iBeacon frames, in which the two bytes of the Minor Number are used in a custom manner by the firmware to transmit the following data:

15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 7 6 5 4 3 2 1 0
BATT RFU RFU RFU RFU FF MV BL BS

The upper byte of the Minor Number contains a representation of the voltage value (in mV) of the battery. The voltage value is obtained as:

$$mV = (BATT \cdot 10) + 1700$$

The lower byte of the Minor Number contains a series of flags that represent the triggers detected by the beacon:

  • BS: trigger caused by (short) pressing of the button
  • BL: trigger caused by (long) pressing the button
  • MV: trigger caused by beacon movement
  • FF: trigger caused by a beacon FreeFall event
  • RFU: Reserved for Future Use

Example Minor Number = 33028 = 0x8104

15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 7 6 5 4 3 2 1 0
0x81 (129) 0 0 0 0 0 1 0 0

Battery Level: $$mV = (129 \cdot 10) + 1700 = 2990$$

Triggers:

  • BS = 0
  • BL = 0
  • MV = 1
  • FF = 0

Button Configuration (0x880C)

Configures the button functionalities of the beacon (only one button managed).

Size (Byte) Range Format
1 N/A N/A

The button configuration is divided in :

  • Short-Press Configuration
  • Long-Press Configuration

At present, the following button functionalities are implemented:

  • Disabled
  • Reboot
    The beacon reboots the firmware.
  • Factory Reset
    The beacon clears the flash memory, restoring the factory configuration.
  • Advertising Toggle (On/Off)
    The beacon enables or interrupts the BLE advertising.
  • Advertising on Push (from FW v.6.11)
    The Advertising is enabled when the button is kept pushed.
  • Advertising 5 seconds (from FW v.6.11)
    The beacon enables advertising for 5 seconds.
  • Advertising 10 seconds (from FW v.6.11)
    The beacon enables advertising for 10 seconds.
  • Advertising 30 seconds (from FW v.6.11)
    The beacon enables advertising for 30 seconds.

The format of the characteristic is:

BIT 7 - BIT 6 - BIT 5 - BIT 4 BIT 3 - BIT 2 - BIT 1 - BIT 0
Long-Press Configuration Short-Press Configuration

Possible values:

Functionality Value
Disabled 0
Reboot 1
Factory Reset 2
Advertising Toggle 3
Advertising on Push 4
Advertising 5 seconds 5
Advertising 10 seconds 6
Advertising 30 seconds 7

If the beacon does not have the button mounted, the read of the characteristic will return 0xFF and the writing of any value will not be allowed.

GPIO Configuration (0x880D)

Configures the I/O functionalities of the beacon (at the moment up to 14 GPIOs are managed).

Size (Byte) Range Format
1 N/A N/A

Every GPIO can be configured in the following modes:

GPIO Mode Value Description
NOT_USED / DISCONNECTED 0 GPIO used as INPUT not connected
OUTPUT 1 GPIO used as OUTPUT Standard-Drive
OUTPUT_HIDRIVE 2 GPIO used as OUTPUT High-Drive
INPUT_NOPULL 3 GPIO used as INPUT
INPUT_PULLUP 4 GPIO used as INPUT with Pull-Up
INPUT_PULLDOWN 5 GPIO used as INPUT with Pull-Down

The configuration of each GPIO is managed by 1 byte:

BIT 7 BIT 6 - BIT 5 - BIT 4 BIT 3 - BIT 2 - BIT 1 - BIT 0
Value Mode index (0 - 14)
0x0F = All GPIOs

Reading: when reading, the characteristic will return a number of bytes equal to the number of GPIO present on the beacon. Each byte represents the GPIO configuration, as in the table above.

Writing: it is possible to write one or more bytes. Each byte has to be represented following the format in the table above.

Alarm Configuration (0x880E)

Sets an alarm on the beacon. An alarm consist of repeating power-ons of Led / Buzzer / Vibration (individually selectable), for a configurable time interval (or until disconnection).

Size (Byte) Range Format
4 N/A N/A

This characteristic is only writable. Each writing has to have a fixed 4 bytes length. Each writing has to have the following format:

BYTE 0 BYTE 1 BYTE 2 - BYTE 3
ALARM_EN ALARM_ID ALARM_TIME

ALARM_EN

A bitmask to enable or disable the alarm peripherals (Led / Buzzer / Vibration). 0x00 value is equivalent to Alarm Disable.

BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
LED5_EN LED4_EN LED3_EN LED2_EN LED1_EN LED0_EN VIBR_EN BUZZ_EN

ALARM_ID

An alarm identifier. The flowing alarms are configurable:

Alarm ID Description Sequence ● ON / ○ OFF
0 Fast signaling ● 100ms / ○ 100ms
1 Mid signaling ● 250ms / ○ 250ms
2 Slow signaling ● 500ms / ○ 500ms
3 1 step signaling ● 75ms / ○ 500ms
4 2 step signaling ● 75ms / ○ 150ms /
● 75ms / ○ 500ms
5 3 step signaling ● 75ms / ○ 150ms /
● 75ms / ○ 150ms /
● 75ms / ○ 500ms
6 5 step signaling ● 75ms / ○ 150ms /
● 75ms / ○ 150ms /
● 75ms / ○ 150ms /
● 75ms / ○ 150ms /
● 75ms / ○ 500ms
7 Continuous fast signaling ● 100ms / ○ 0ms
4kHz / 2kHz
8 Continuous mid signaling ● 250ms / ○ 0ms
4kHz / 2kHz

ALARM_TIME

Time interval of the alarm duration (Big Endian format). If 0 the alarm stops when disconnecting. If 0xFFFF the alarm stops when manually disabled, through a writing on the characteristic (ALARM_EN = 0x00). Any other value is considered as a time interval in seconds during which the alarm remains active.

HW Capabilities (0x880F)

Reports the hardware characteristics (the peripherals available on the board).

Size (Byte) Range Format
4 N/A Bitmask

This characteristic is read-only.

BIT 7 BIT 6 BIT 5 BIT 4 BIT 3 BIT 2 BIT 1 BIT 0
CO2
SENSOR
HUM
SENSOR
TEMP
SENSOR
VIBRATION BUZZER LEDS BUTTON ACCEL