0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

藍(lán)牙設(shè)備地址的類型 藍(lán)牙Random靜態(tài)設(shè)備地址的生成與設(shè)置

STM32單片機(jī) ? 來源:STM32單片機(jī) ? 2024-01-03 09:37 ? 次閱讀

01藍(lán)牙設(shè)備地址的類型

所有藍(lán)牙設(shè)備都應(yīng)具有一個藍(lán)牙設(shè)備地址 (BD_ADDR),該地址(及其地址類型)可以唯一地(一定范圍內(nèi)唯一)標(biāo)識該設(shè)備。使用者如果不了解其概念,看上去可能會有很多疑惑,甚至容易造成侵權(quán)問題。

藍(lán)牙的設(shè)備地址分為兩大類,一類是 Public,一類是 Random 的。其中 Random 類地址里面又分為靜態(tài)地址和私有地址。私有地址又分為不可解析的私有地址和可以解析的私有地址。這些地址類型列舉如下:
? Public Bluetooth address // 1
? Random Bluetooth address
o Static address // 2
o Private address
Non-resolvable private address // 3
Resolvable private address // 4

上述 4 種地址類型都使用 48bit 的地址長度。地址類型不同,48bit 地址的格式也會不同;設(shè)備地址類型和設(shè)備地址共同用于唯一標(biāo)識該設(shè)備。另外需要注意以下幾點:
? Public 或者 Random 地址類型的標(biāo)識在鏈路層的廣播包 PDU Header 中,不在48bit 地址的內(nèi)容中。
? Random 類型下的三種地址類型,使用 48bit 地址的高 2bit 進(jìn)行標(biāo)識。
? 48bit 地址都相同的兩個設(shè)備,如果它們分別屬于 Public 或者 Random 地址類型,則它們是兩個不同身份的藍(lán)牙設(shè)備。

設(shè)備應(yīng)至少使用一種類型的設(shè)備地址,也可以同時使用兩種。該設(shè)備可以通過它使用的任何設(shè)備地址來尋址。設(shè)備的身份地址是它在傳輸?shù)臄?shù)據(jù)包中使用的 Public 設(shè)備地址或Random 靜態(tài)設(shè)備地址。如果一個設(shè)備使用可解析的私有地址,它也應(yīng)該有一個身份地址。每當(dāng)比較兩個設(shè)備地址時,比較應(yīng)包括設(shè)備地址類型(即如果兩個地址的類型不同,即使兩個 48 位地址相同,它們也不同)。

如果公司有購買 Public 地址,則建議用 Public。如果沒有購買地址,又沒有設(shè)備地址隱私需求,則建議使用 Random Static Device Address。

1.1. Public Bluetooth Address

在傳統(tǒng)藍(lán)牙和 BLE 中,原則上來說,使用 Public 地址需要向 IEEE 申請購買,使用未授權(quán)的 Public 地址如果和已授權(quán)的 Public 地址發(fā)生地址沖突,可能會面臨法律糾紛。使用Public 地址還需要涉及到地址的管理、購買等流程。本文的后面舉例描述了購買 Public 地址的流程。

1.2. Random Static Device Address

藍(lán)牙更新到了 BLE 版本之后,為了讓設(shè)備廠商可以節(jié)省購買 Public 地址授權(quán)的費用,引入了 Random 類型的地址。從前文可知,Random 地址類型又分為靜態(tài)(Static)類型和隱私(Private)類型。靜態(tài)類型的地址格式如下:

84605070-a97f-11ee-8b88-92fbcf53809c.jpg

靜態(tài)地址是隨機(jī)生成的48位地址,應(yīng)滿足以下要求 :
? 地址的隨機(jī)部分至少有一位應(yīng)為 0
? 地址的隨機(jī)部分至少有一位應(yīng)為 1


設(shè)備可以選擇在每次電源循環(huán)后將其靜態(tài)地址初始化為新值。設(shè)備在初始化后不得更改其靜態(tài)地址值,直到設(shè)備重新上電。


注意:如果設(shè)備的靜態(tài)地址發(fā)生更改,則存儲在對端設(shè)備中的地址將無效,并且將失去使用舊地址重新連接的能力。

1.3. Random Non-Resolvable Private Address

隱私地址主要是為了解決隱私問題。根據(jù)其是否可解析,又分成不可解析地址類型和可解析地址類型,不可解析地址類型的地址格式如下:

84713070-a97f-11ee-8b88-92fbcf53809c.jpg

? 地址的隨機(jī)部分至少有一位應(yīng)為 1
? 地址的隨機(jī)部分至少有一位應(yīng)為 0
? 地址不得等于 Public 地址


不可解析地址會周期更新(建議值是 15 分鐘),這類地址在實際應(yīng)用中比較少用。

1.4. Random Resolvable Private Address

所謂可解析地址(RPA),是指可以把一個周期變化的地址解析為唯一的身份地址。使用隨機(jī)可解析地址類型的設(shè)備應(yīng)具備兩個地址,一個地址用于標(biāo)識該設(shè)備,稱為身份地址(Identity Address),另一個則為隨機(jī)可解析地址(RPA)。一般情況下,設(shè)備會廣播RPA,身份地址保存在本地。對端設(shè)備可通過解析 PRA 進(jìn)一步獲得其身份地址。

要生成可解析的私有地址,設(shè)備必須具有本地身份解析密鑰 (IRK) 或?qū)Χ松矸萁馕雒荑€ (IRK)??山馕龅乃接械刂窇?yīng)使用 IRK 和隨機(jī)生成的 24 位數(shù)字生成。隨機(jī)數(shù)稱為prand,應(yīng)滿足以下要求:
? prand 的隨機(jī)部分至少有一位為 0
? prand 的隨機(jī)部分至少有一位為 1

84750722-a97f-11ee-8b88-92fbcf53809c.jpg

特征如下:
1)由兩部分組成:
高位 24bits 是隨機(jī)數(shù)部分,其中最高兩個 bit 為“10”,用于標(biāo)識地址類型;
低位 24bits 是隨機(jī)數(shù)和 IRK 經(jīng)過 hash 運算得到的 hash 值,運算的公式為 hash = ah(IRK, prand)。

2)當(dāng)對端 BLE 設(shè)備掃描到該類型的藍(lán)牙地址后,會使用保存在本機(jī)的 IRK,和該地址中的 prand,進(jìn)行同樣的 hash 運算,并將運算結(jié)果和地址中的 hash 字段比較,相同的時候,才進(jìn)行后續(xù)的操作。這個過程稱作 resolve(解析),這也是 Non-Resolvable Private Address/Resolvable Private Address 命名的由來。
3)以 T_GAP(private_addr_int)為周期,定時更新。哪怕在廣播、掃描、已連接等過程中,也可能改變。
4)Resolvable Private Address 不能單獨使用,因此需要使用該類型的地址的話,設(shè)備要選擇 Public Device Address 或者 Static Device Address 中的一種作為其身份地址。

02MAC 地址相關(guān)函數(shù)

下面介紹兩個比較重要的和 MAC 設(shè)置相關(guān)的函數(shù)。

// 配置 MAC 地址的函數(shù)

847c5446-a97f-11ee-8b88-92fbcf53809c.jpg


其中不同的 offset 設(shè)置的數(shù)值不一樣,和 MAC 地址相關(guān)的主要是這兩個:
? 0x00: CONFIG_DATA_PUBADDR_OFFSET
?0x2E: CONFIG_DATA_STATIC_RANDOM_ADDRESS

//配置使用哪種 MAC 地址的函數(shù):

848344fe-a97f-11ee-8b88-92fbcf53809c.jpg

Identity_Address_Type :
? 0x00: Public Address
? 0x01: Static Random Address

03藍(lán)牙 Random 靜態(tài)設(shè)備地址的生成與設(shè)置參考方法

為了方便一些客戶生成免費的相對唯一的 MAC 地址,下面列舉一個使用芯片出廠唯一的 UID 來生成 MAC 地址的參考方法。基本原理是通過讀取芯片的 UID,然后再進(jìn)行 Hash計算,截取需要的 46bit 作為隨機(jī)部分的靜態(tài)地址。理論上這種方法生成的 MAC 地址重復(fù)的幾率很小,在 2 的 40 多次方分之一的幾率重復(fù),因此實際工程應(yīng)用中可以認(rèn)為它相對比較唯一。

Hash 計算這部分參考了開源的算法庫,鏈接地址如下:
https://github.com/B-Con/crypto-algorithms/blob/master/sha256.c

sha256.c這個庫文件在當(dāng)前開發(fā)平臺上需要修改前面一個頭文件包含:

將 “#include” 更改為 “#include”

以下部分偽代碼適用于 BlueNRG 系列和 STM32WB 系列

// 生成靜態(tài) MAC 地址參考函數(shù)

848d1740-a97f-11ee-8b88-92fbcf53809c.jpg

04藍(lán)牙 Public 設(shè)備地址的購買流程

全球唯一設(shè)備號,標(biāo)準(zhǔn)化組織是 IEEE,以前的網(wǎng)卡 Ma 地址、PC,現(xiàn)在藍(lán)牙設(shè)備、BLE 設(shè)備若需要認(rèn)證的,官方的唯一設(shè)備標(biāo)識,即藍(lán)牙地址,也是 Mac 地址,需向 IEEE申請,并登記付費。即可獲得授權(quán)。

4.1. OUI 介紹

Organizationally Unique Identifier(OUI) 被稱作“組織唯一標(biāo)識符”,在任何一塊網(wǎng)卡中燒錄的 6 字節(jié) MAC 地址中,前三個字節(jié)就體現(xiàn)了 OUI,通常情況下,該標(biāo)識符是唯一的。因此,OUI 可以用來創(chuàng)建 MAC 地址、藍(lán)牙設(shè)備地址或以太網(wǎng)地址。另外,OUI 也可作為一個公司的 SNAP 協(xié)議標(biāo)識符使用。

通常情況下,IEEE 標(biāo)準(zhǔn)協(xié)會將前 24 位組織唯一標(biāo)識符(OUI)分配給生產(chǎn)企業(yè),剩下的 24 位由廠家自行分配代碼。

目前,OUI 只能通過 IEEE 標(biāo)準(zhǔn)協(xié)會直接購買,其總價格大概在 3500 美元左右。

如果如果沒有保密需求,支付$3500 就可獲得一個 OUI(可生成 1600 萬個地址),即上述所指的 publicly registered MA-L,也就是說此類公司的名稱和地址是公開的,公眾可以訪問

https://regauth.standards.ieee.org/standards-ra-web/pub/view.html#registries
輸入公司名稱查詢該公司擁有的 MA-L,或者輸入 MA-L查詢公司的名稱和地址。

如果生產(chǎn)廠商希望對以上信息保密,可以選擇 Privately registered MA-L,價格會貴很多,且每年需要支付保密費用大概幾千美元。

4.2. 購買流程

如果需要購買 Public 地址,需要先申請一個 IEEE 賬號。登入后點擊如下入口開始申請。

圖1.申請購買 public 地址入口

84957c50-a97f-11ee-8b88-92fbcf53809c.jpg

圖2. 選擇購買的 MAC 地址數(shù)量和類型

849cce88-a97f-11ee-8b88-92fbcf53809c.jpg

如果申請的類型是 MA-L 大概有 1677 萬個地址,MA-M 大概有 100 多萬個。

圖3.申請過程中的 4 個步驟

84a605c0-a97f-11ee-8b88-92fbcf53809c.jpg

主要填寫:申請人信息,包括姓名、職位、公司名稱、地址及郵箱電話等;

公司信息,如果貴公司為首次申請,initial corporate assignment request 后選擇YES,如果不是首次申請 OUI,一定要確?,F(xiàn)有的 MAC 地址使用率已達(dá)到 95%,否則不予申請,選擇 No 之后需要在方框內(nèi)填寫上次申請 OUI 的公司名稱并提供再次申請的理由,同時還需提供公司類型,是母公司還是子公司,還是兩者皆否

如果公司類型選擇了母公司或者是子公司,需要填寫至少 3 家聯(lián)營公司的具體信息,如果公司類型選擇了 neither,該部分可不填;為保密信息,如果選擇購買的是 publicly registered MA-L,該部分選擇 No,反之選擇 Yes 并提供理由;目前 IEEE 標(biāo)準(zhǔn)協(xié)會接受的付款方式包括郵寄美國銀行匯票、美元電匯及信用卡在線支付。如果需要提供形式發(fā)票,請選擇 please send a proforma invoice 之前的復(fù)選框。

完成以上內(nèi)容后在線提交即可。

4.3. 購買后檢查確認(rèn)

如果需要購買 public 地址,需要先申請一個 IEEE 賬號。登入后點擊如下入口開始申請。通常 IEEE 收到款后的第二天,即可郵件收到一個 Mac 地址的生成軟件,填上日期等信息后,會生成一個 6BYTE(48bits)的地址段,前 3BYTE 數(shù)據(jù)為公司名,后面 3BYTE是序號。

圖4.在更新的列表中檢查申請的地址

84af9d1a-a97f-11ee-8b88-92fbcf53809c.jpg


05小結(jié)

本文介紹了 BLE MAC 地址的類型,基于芯片 ID 生成靜態(tài)隨機(jī) MAC 地址,以及購買Public MAC 地址的流程。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Mac
    Mac
    +關(guān)注

    關(guān)注

    0

    文章

    1108

    瀏覽量

    51567
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4344

    瀏覽量

    62810
  • BLE
    BLE
    +關(guān)注

    關(guān)注

    12

    文章

    661

    瀏覽量

    59471
  • 藍(lán)牙設(shè)備
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    6760

原文標(biāo)題:實戰(zhàn)經(jīng)驗 | BLE 設(shè)備地址相關(guān)簡介

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32WB55開發(fā)(2)----修改藍(lán)牙地址

    在嵌入式藍(lán)牙開發(fā)中,特別是針對STM32WB系列,修改或配置藍(lán)牙設(shè)備地址是常見的需求。不論是為了實現(xiàn)特定的測試、滿足隱私要求,還是為了區(qū)分開發(fā)和生產(chǎn)
    的頭像 發(fā)表于 12-01 15:42 ?913次閱讀
    STM32WB55開發(fā)(2)----修改<b class='flag-5'>藍(lán)牙</b><b class='flag-5'>地址</b>

    如何在DA14580中為設(shè)備設(shè)置獨立的藍(lán)牙地址

    分享一個自己寫的文檔,主要是關(guān)于如何在DA14580中設(shè)置藍(lán)牙地址的,當(dāng)然,不是在程序中固定藍(lán)牙地址,而是程序不變,不同芯片不同
    發(fā)表于 03-31 18:55

    【方案】藍(lán)牙MAC地址二維碼標(biāo)簽掃描打印方案

    )后期再錄入系統(tǒng),操作麻煩。 為了實現(xiàn)藍(lán)牙產(chǎn)品MAC地址的讀取及二維碼的打印,深圳市天工測控技術(shù)有限公司開發(fā)了包含藍(lán)牙MAC地址讀取設(shè)備、M
    發(fā)表于 08-17 17:24

    SKYLAB最新推出藍(lán)牙MAC地址掃描打印解決方案

    的MAC地址掃描打印解決方案。針對這一市場需求,深圳市天工測控技術(shù)有限公司開發(fā)了包含藍(lán)牙MAC地址讀取設(shè)備、MAC地址讀取軟件、MAC
    發(fā)表于 08-18 17:20

    模塊專家天工測控:藍(lán)牙模塊SKB360及藍(lán)牙MAC地址掃描打印解決方案

    、MAC地址管理軟件、二維碼生成軟件、二維碼打印驅(qū)動的一整套解決方案。藍(lán)牙MAC地址讀取設(shè)備把低功耗藍(lán)牙
    發(fā)表于 08-21 16:04

    請問藍(lán)牙如何區(qū)分設(shè)備類型

    我想請問一下,在手機(jī)藍(lán)牙設(shè)備搜索時,它可以識別設(shè)備類型(手機(jī)、電腦、耳機(jī)等)并且以圖標(biāo)顯示,大家知道手機(jī)是如何區(qū)分這些設(shè)備
    發(fā)表于 01-22 06:19

    請問藍(lán)牙分析儀軟件怎么篩選掃描設(shè)備地址?

    請問藍(lán)牙分析儀軟件怎么篩選掃描設(shè)備地址,包過濾里面沒有scanAddress的條件
    發(fā)表于 08-22 06:59

    如何設(shè)置靜態(tài)ip地址

    如何設(shè)置靜態(tài)ip地址    Q:一局域網(wǎng)劃分為數(shù)個子網(wǎng),10.10.1.X~10.10.16.X。子網(wǎng)掩碼為255.255.255.192,DHCP服務(wù)器為10.10.0.4.登錄Internet
    發(fā)表于 02-24 11:34 ?2788次閱讀

    藍(lán)牙MAC地址掃描打印解決方案

    藍(lán)牙MAC地址掃描打印解決方案
    發(fā)表于 08-22 11:26 ?12次下載

    (方案)藍(lán)牙MAC地址二維碼標(biāo)簽掃描打印方案

    每個藍(lán)牙產(chǎn)品(比如智能藍(lán)牙手環(huán))的 MAC 地址都不一樣,如果在藍(lán)牙產(chǎn)品的包裝盒上貼上對應(yīng)的由MAC地址
    發(fā)表于 08-28 16:48 ?15次下載

    藍(lán)牙MAC地址打印解決方案

    很多廠家為方便設(shè)備的管理,需要在產(chǎn)品的包裝盒或者產(chǎn)品外殼上貼藍(lán)牙MAC地址的二維碼或者條碼,更甚至是二維碼和條碼的組合。
    發(fā)表于 05-21 02:29 ?4635次閱讀

    藍(lán)牙方案:藍(lán)牙MAC地址轉(zhuǎn)二維碼打印解決方案

    ? ? ?針對用戶的需求:需要藍(lán)牙MAC地址藍(lán)牙產(chǎn)品一一對應(yīng),便于使用和管理藍(lán)牙設(shè)備,SKYLAB開發(fā)了包含
    的頭像 發(fā)表于 09-07 10:26 ?2828次閱讀

    干貨|藍(lán)牙MAC地址二維碼掃描打印解決方案的工作原理

    讀取軟件、MAC地址管理軟件、二維碼生成軟件、二維碼打印驅(qū)動。藍(lán)牙MAC地址掃描打印硬件產(chǎn)品生產(chǎn)廠家:大致的流程是藍(lán)牙MAC
    的頭像 發(fā)表于 10-30 18:47 ?6218次閱讀

    SKYLAB藍(lán)牙方案|藍(lán)牙MAC地址二維碼打印解決方案

    MAC地址讀取設(shè)備放置在防信號干擾金屬盒中--安裝有MAC地址讀取軟件、MAC地址管理軟件、二維碼生成軟件、二維碼打印驅(qū)動的電腦讀取MAC
    的頭像 發(fā)表于 08-24 18:47 ?1318次閱讀

    SKYLAB藍(lán)牙方案|藍(lán)牙MAC地址二維碼打印解決方案

    藍(lán)牙MAC地址二維碼打印方案,藍(lán)牙Mac地址的掃描、二維碼的打印,一套設(shè)備全搞定,終端用戶只要手機(jī)掃一掃,就能輕松完成綁定。
    的頭像 發(fā)表于 09-04 17:41 ?1043次閱讀
    SKYLAB<b class='flag-5'>藍(lán)牙</b>方案|<b class='flag-5'>藍(lán)牙</b>MAC<b class='flag-5'>地址</b>二維碼打印解決方案