FeasyBeacon Advertising Protocol

v1.1

Introduction

FeasyBeacon device is capable of advertising up to 10 frames of advertisement simultaneously, therefore, if the developers use an mobile app or an central device to scan the nearby FeasyBeacon device, they may receive more than one advertising frame.

FeasyBeacon mobile SDK and app are designed to be able to parse all of the FeasyBeacon Advertising Frames, the FeasyBeacon mobile SDK and app are completely free and would be kept updating periodically by Feasycom.

General Advertising Frame

FeasyBeacon General Advertising Frame includes content like Firmare Version, MAC Address, Battery Life and so on. This advertisement is not configurable, it’s readonly advertisement.

General Advertising Frame can be find in Service Data( Tag 0x16 ):

Len(1Byte)

Tag(1Byte)

Service(2Byte)

Model(1Byte)

Version(2Byte)

Feature(1Byte)

MAC (6Byte)

Battery Level(1Byte)

0x0D

0x16

0xFFF0

Len : 1 byte, the length of the frame that exclude the Len word.

Tag : 1 byte, type of frame, 0x16 represents General Advertising Frame

Service : 2 bytes, 0xFFF0

Model : 1 byte, device model number:

Value

Model Number

0x15

FSC-BP102

0x19

FSC-BP109

0x1A

FSC-BP103

0x1B

FSC-BP104

0x1C

FSC-BP201

0x1D

FSC-BP106

0x1E

FSC-BP101

0x24

FSC-BP120

0x27

FSC-BP108

0x28

FSC-BP108N

Version : 2 bytes, device firmware version

Feature : 1 byte, features that are supported:

Bits

Description

Definition

Bit0 ~ bit1

Connectivity state

0: Not connectable
1: Connectable, no password required
2: Connectable, password required

Bit2 ~ bit3

Reserved

must set to 0

Bit4

LED availability

0: No LED applied
1: LED is applied

Bit5

buzzer availability

0: No buzzer applied
1: Buzzer is applied

Bit6

G-sensor availability

0: No G-sensor applied
1: G-sensor is applied

Bit7

Button availability

0: No button applied
1: Button is applied

MAC : 6 bytes, the MAC address of the device

Battery Level : 1 byte, the current battery level

Value

Model Number

0x00 – 0x64

0~100%

0x65

non-battery power supply

An advertisement that containing General Advertising Frame

Byte offset

value

Description

Properties

0

0x02

Data length – 2 bytes

readonly

1

0x01

Data type – flags

readonly

2

0x06

LE and BR/EDR flag

readonly

3 Note1

0x0E

Data length – 26 bytes

readonly

4

0x16

Data type - manufacturer specific data

readonly

5

0xF0

16-bit Service UUID 1st byte

readonly

6

0xFF

16-bit Service UUID 2nd byte

readonly

7

0x1A Note2

Model Number

readonly

8

0x02

Firmware version 1st byte

readonly

9

0x05

Firmware version 2nd byte

readonly

10

0x02

Feature

readonly

11

0xDC

MAC address 1st byte

readonly

12

0x0D

MAC address 2nd byte

readonly

13

0x30

MAC address 3rd byte

readonly

14

0x00

MAC address 4th byte

readonly

15

0x1F

MAC address 5th byte

readonly

16

0xA5

MAC address 6th byte

readonly

17

0x64

Battery level

readonly

Note1 : From byte 3 to byte 17 is the data block of General Advertising Frame, the byte order of it is constant, but the byte order of the whole advertisement may vary by model.

Note2 : Bytes like model number, firmware version, feature, MAC, and battery level may vary by beacon.

iBeacon Advertising Frame

iBeacon Advertising packet structure

Byte offset

Default value

Description

Properties

0

0x02

Data length – 2 bytes

constant preamble

1

0x01

Data type – flags

constant preamble

2

0x06

LE and BR/EDR flag

constant preamble

3

0x1A

Data length – 26 bytes

constant preamble

4

0xFF

Data type - manufacturer specific data

constant preamble

5

0x4C

Manufacturer data

constant preamble

6

0x00

Manufacturer data

constant preamble

7

0x02

Manufacturer data

constant preamble

8

0x15

Manufacturer data

constant preamble

9

0xFD

Proximity UUID 1st byte

set user UUID

10

0xA5

Proximity UUID 2nd byte

set user UUID

11

0x06

Proximity UUID 3rd byte

set user UUID

12

0x93

Proximity UUID 4th byte

set user UUID

13

0xA4

Proximity UUID 5th byte

set user UUID

14

0xE2

Proximity UUID 6th byte

set user UUID

15

0x4F

Proximity UUID 7th byte

set user UUID

16

0xB1

Proximity UUID 8th byte

set user UUID

17

0xAF

Proximity UUID 9th byte

set user UUID

18

0xCF

Proximity UUID 10th byte

set user UUID

19

0xC6

Proximity UUID 11th byte

set user UUID

20

0xEB

Proximity UUID 12th byte

set user UUID

21

0x07

Proximity UUID 13th byte

set user UUID

22

0x64

Proximity UUID 14th byte

set user UUID

23

0x78

Proximity UUID 15th byte

set user UUID

24

0x25

Proximity UUID 16th byte

set user UUID

25

0x27

Major 1st byte

set major value

26

0x51

Major 2nd byte

set major value

27

0x65

Minor 1st byte

set minor value

28

0xC1

Minor 2nd byte

set minor value

29

0xB5

Signal power (calibrated RSSI@1m)

signal power value

Eddystone Advertising Frame

You can read the complete specification of all Eddystone packets on Google’s GitHub (https://github.com/google/eddystone).

Sensor Data Frame

Sensor Data Frame includes content like temperature, humidity and so on. This advertisement is not configurable, it’s readonly advertisement.

General Advertising Frame can be find in vendor specified field ( Tag 0xFF ) :

Len (1 Byte)

Tag (1 Byte)

Company (2 Bytes)

Version (1 Byte)

Data (N Bytes)

0xFF

0xFFF0

0x01

Tag1 + Tag2 +…

Len : 1 byte, the length of the frame that exclude the Len word.

Tag : 1 byte, type of frame, 0xFF represents vendor specified field

Company : 2 bytes, 0xFFF0

Version : 1 byte, protocol version, start from 0x01

Data : N bytes, sensor data, use Tag structure (len + tag + data)

Temperature and Humidity Sensor

Len (1 Byte)

Tag (1 Byte)

Temperature (2 Bytes)

Humidity (2 Bytes)

0x05

0x01

Len : 1 byte, the length of the tag-frame that exclude the Len word.

Tag : 1 byte, type of frame, 0x01 represents temperature and humidity.

Temperature : 2 bytes, the first byte represents the integer portion and it’s a signed number (can be nagative or positive), the second byte represents the fractional portion, the unit is centigrade.

Humidity : 2 bytes, the first byte represents the integer portion, the second byte represents the fractional portion, the unit is percentage.

Appendix

PDF Download