2.2.2.2.3 Bluetooth: Advertising Beacon

Bluetooth devices advertise over a beacon. This is the basic beacon structure:


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Length

0xFF

Microsoft ID

Beacon Data (24 bytes)

...

...

Length (1 byte): Set to 30 (0x1E).

0xFF (1 byte): Fixed value 0xFF.

Microsoft ID (2 bytes): Set to 0006

Beacon Data (24 bytes): The beacon data section is further broken down. Note that the Scenario and Subtype Specific Data section requirements will differ based on the Scenario and Subtype.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Scenario_Type

Version_and_Device_Type

Version_and_Flags

Flags_and_Device_Status

Salt

Device_Hash (19 bytes)

...

...

...

Scenario_Type (1 byte): Set to (1) Bluetooth scenario.

Version_and_Device_Type (1 byte): The high three bits are set to 001 for the version number; the lower 5 bits are set to Device Type SKU values as follows, as defined in section 2.2.2.2.2.

Value

Meaning

1

Xbox One

6

Apple iPhone

7

Apple iPad

8

Android device

9

Windows 10 Desktop

11

Windows 10 Phone

12

Linux device

13

Windows IoT

14

Surface Hub

15

Windows laptop

16

Windows tablet

Version_and_Flags (1 byte): The high 3 bits are set to 001; the lower 5 bits are set to 00000 or 00001. Setting the lower 5 bits to 00001 indicates that the NearBy share setting is everyone rather than only my devices.

Flags_and_Device_Status (1 byte): The field has the following structure.

0

1

2

3

4

5

6

7

A

B

C

D

A (2 bits): Unused.

B - Bluetooth_Address_As_Device_ID (1 bit): When set, indicates that the Bluetooth address can be used as the device ID.

C (1 bit): Unused.

D - ExtendedDeviceStatus (4 bits): One of the values in the following table. Values may be ORed.

Value

Meaning

None
0x00

None.

RemoteSessionsHosted
0x01

Hosted by remote session.

RemoteSessionsNotHosted
0x02

Indicates the device does not have session hosting status available.<5>

NearShareAuthPolicySameUser
0x04

Indicates the device supports NearShare if the user is the same for the other device.

NearShareAuthPolicyPermissive
0x08

Indicates the device supports NearShare.<6>

Salt (4 bytes): Four random bytes.

Device_Hash (19 bytes): SHA256 Hash of Salt plus Device Thumbprint.