藍芽Beacon格式詳解

wanguofeng8023發表於2021-01-01

藍芽Beacon格式詳解

目錄

藍芽Beacon格式詳解

廣播幀格式:

廣播幀資料欄位格式:

各大公司自定義beacon幀格式:

各大公司向Bluetooth SIG申請的16bit UUID:


本文重點在結合Bluetooth官網spec和幾個例子來使beacon幀格式更加容易被理解。

廣播幀格式:

首先beacon是藍芽BLE廣播包的一種,藍芽廣播幀格式如下:

PS:其實BLE資料幀除了報頭欄位和資料欄位定義與廣播幀不同之外,前導/接入地址/長度/校驗格式均相同。

廣播幀資料欄位格式:

資料欄位最長為37位元組:6位元組的廣播裝置地址 + 31位元組廣播資料(AD Structure1 + AD Structure2 + ........ + AD Structure N)。

廣播資料的格式如下:AD Structure1 + AD Structure2 + ........ + AD Structure N,最長31位元組。

AD Structure的格式:Length(1位元組)+ AD Type(1位元組)+ AD Data(Length - 1)。

AD Type的型別定義:https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile/

每個AD Type對應的AD Data的格式在《Core Specification Supplement》文件中有介紹,下載地址:https://www.bluetooth.com/specifications/bluetooth-core-specification/

其中有兩種AD Type可以被用來自定義beacon幀,分別是一個是0xFF,另外一個是0x16。

0xFF«Manufacturer Specific Data»Bluetooth Core Specification:Vol. 3, Part C, section 8.1.4 (v2.1 + EDR, 3.0 + HS and 4.0)Vol. 3, Part C, sections 11.1.4 and 18.11 (v4.0)Core Specification Supplement, Part A, section 1.4
0x16«Service Data - 16-bit UUID»Core Specification Supplement, Part A, section 1.11

各大公司自定義beacon幀格式:

使用AD Type為0xFF來定義beacon的公司:蘋果公司的ibeacon,Radius Network的AltBeacon。

使用AD Type為0x16來定義beacon的公司:谷歌公司的Eddystone,小米公司的mibeacon。

蘋果ibeacon的AD Structure:

小米mibeacon的AD Stucture:https://iot.mi.com/new/doc/embedded-development/ble/ble-mibeacon

   AD Length + Type(0x16)+ 16bit Service Data UUID(0xFE95,小米申請的UUID)+ Frame Control(2位元組) + Product ID(2位元組) + Frame Counter (1位元組)+ ......

 

各大公司向Bluetooth SIG申請的16bit UUID:

https://btprodspecificationrefs.blob.core.windows.net/assigned-values/16-bit%20UUID%20Numbers%20Document.pdf

其中百度(0xFDC2,0xFDC3),小米(0xFDAB,0xFDAA,0xFE95),alibaba(0xFE3C),nordic(0xFE59,0xFE58

 

 

相關文章