<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

藍牙設備地址的類型 藍牙Random靜態設備地址的生成與設置

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

01藍牙設備地址的類型

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

藍牙的設備地址分為兩大類,一類是 Public,一類是 Random 的。其中 Random 類地址里面又分為靜態地址和私有地址。私有地址又分為不可解析的私有地址和可以解析的私有地址。這些地址類型列舉如下:
? 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 地址的格式也會不同;設備地址類型和設備地址共同用于唯一標識該設備。另外需要注意以下幾點:
? Public 或者 Random 地址類型的標識在鏈路層的廣播包 PDU Header 中,不在48bit 地址的內容中。
? Random 類型下的三種地址類型,使用 48bit 地址的高 2bit 進行標識。
? 48bit 地址都相同的兩個設備,如果它們分別屬于 Public 或者 Random 地址類型,則它們是兩個不同身份的藍牙設備。

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

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

1.1. Public Bluetooth Address

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

1.2. Random Static Device Address

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

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

靜態地址是隨機生成的48位地址,應滿足以下要求 :
? 地址的隨機部分至少有一位應為 0
? 地址的隨機部分至少有一位應為 1


設備可以選擇在每次電源循環后將其靜態地址初始化為新值。設備在初始化后不得更改其靜態地址值,直到設備重新上電。


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

1.3. Random Non-Resolvable Private Address

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

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

? 地址的隨機部分至少有一位應為 1
? 地址的隨機部分至少有一位應為 0
? 地址不得等于 Public 地址


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

1.4. Random Resolvable Private Address

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

要生成可解析的私有地址,設備必須具有本地身份解析密鑰 (IRK) 或對端身份解析密鑰 (IRK)??山馕龅乃接械刂窇褂?IRK 和隨機生成的 24 位數字生成。隨機數稱為prand,應滿足以下要求:
? prand 的隨機部分至少有一位為 0
? prand 的隨機部分至少有一位為 1

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

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

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

02MAC 地址相關函數

下面介紹兩個比較重要的和 MAC 設置相關的函數。

// 配置 MAC 地址的函數

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


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

//配置使用哪種 MAC 地址的函數:

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

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

03藍牙 Random 靜態設備地址的生成與設置參考方法

為了方便一些客戶生成免費的相對唯一的 MAC 地址,下面列舉一個使用芯片出廠唯一的 UID 來生成 MAC 地址的參考方法?;驹硎峭ㄟ^讀取芯片的 UID,然后再進行 Hash計算,截取需要的 46bit 作為隨機部分的靜態地址。理論上這種方法生成的 MAC 地址重復的幾率很小,在 2 的 40 多次方分之一的幾率重復,因此實際工程應用中可以認為它相對比較唯一。

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

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

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

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

// 生成靜態 MAC 地址參考函數

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

04藍牙 Public 設備地址的購買流程

全球唯一設備號,標準化組織是 IEEE,以前的網卡 Ma 地址、PC,現在藍牙設備、BLE 設備若需要認證的,官方的唯一設備標識,即藍牙地址,也是 Mac 地址,需向 IEEE申請,并登記付費。即可獲得授權。

4.1. OUI 介紹

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

通常情況下,IEEE 標準協會將前 24 位組織唯一標識符(OUI)分配給生產企業,剩下的 24 位由廠家自行分配代碼。

目前,OUI 只能通過 IEEE 標準協會直接購買,其總價格大概在 3500 美元左右。

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

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

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

4.2. 購買流程

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

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

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

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

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有的 MAC 地址使用率已達到 95%,否則不予申請,選擇 No 之后需要在方框內填寫上次申請 OUI 的公司名稱并提供再次申請的理由,同時還需提供公司類型,是母公司還是子公司,還是兩者皆否

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

完成以上內容后在線提交即可。

4.3. 購買后檢查確認

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

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

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


05小結

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Mac
    Mac
    +關注

    關注

    0

    文章

    1067

    瀏覽量

    50847
  • 函數
    +關注

    關注

    3

    文章

    3904

    瀏覽量

    61311
  • BLE
    BLE
    +關注

    關注

    12

    文章

    608

    瀏覽量

    58855
  • 藍牙設備
    +關注

    關注

    0

    文章

    28

    瀏覽量

    6544

原文標題:實戰經驗 | BLE 設備地址相關簡介

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何在DA14580中為設備設置獨立的藍牙地址

    分享一個自己寫的文檔,主要是關于如何在DA14580中設置藍牙地址的,當然,不是在程序中固定藍牙地址,而是程序不變,不同芯片不同
    發表于 03-31 18:55

    【方案】藍牙MAC地址二維碼標簽掃描打印方案

    )后期再錄入系統,操作麻煩。 為了實現藍牙產品MAC地址的讀取及二維碼的打印,深圳市天工測控技術有限公司開發了包含藍牙MAC地址讀取設備、M
    發表于 08-17 17:24

    SKYLAB最新推出藍牙MAC地址掃描打印解決方案

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

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

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

    請問藍牙如何區分設備類型?

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

    請問CH573藍牙通訊及通訊地址如何設置?

    幾下幾個疑問:1>在RF_Init(void)函數中的rfConfig.accessAddress = 0x71764129;表示為要發送給目標設備地址,那設備本身的地址又要在哪里
    發表于 08-15 07:25

    請問藍牙分析儀軟件怎么篩選掃描設備地址?

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

    如何設置靜態ip地址

    如何設置靜態ip地址    Q:一局域網劃分為數個子網,10.10.1.X~10.10.16.X。子網掩碼為255.255.255.192,DHCP服務器為10.10.0.4.登錄Internet
    發表于 02-24 11:34 ?2671次閱讀

    藍牙MAC地址掃描打印解決方案

    藍牙MAC地址掃描打印解決方案
    發表于 08-22 11:26 ?12次下載

    藍牙MAC地址打印解決方案

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

    藍牙方案:藍牙MAC地址轉二維碼打印解決方案

    ? ? ?針對用戶的需求:需要藍牙MAC地址藍牙產品一一對應,便于使用和管理藍牙設備,SKYLAB開發了包含
    的頭像 發表于 09-07 10:26 ?2465次閱讀

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

    讀取軟件、MAC地址管理軟件、二維碼生成軟件、二維碼打印驅動。藍牙MAC地址掃描打印硬件產品生產廠家:大致的流程是藍牙MAC
    的頭像 發表于 10-30 18:47 ?5822次閱讀

    SKYLAB藍牙方案|藍牙MAC地址二維碼打印解決方案

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

    SKYLAB藍牙方案|藍牙MAC地址二維碼打印解決方案

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

    什么是靜態IP地址?什么是DHCP?DHCP與靜態IP到底有何區別呢?

    什么是靜態IP地址?什么是DHCP?DHCP與靜態IP到底有何區別呢?DHCP與靜態IP地址哪個好?
    的頭像 發表于 12-27 14:09 ?2178次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>