{"id":6669,"date":"2018-12-20T13:18:38","date_gmt":"2018-12-20T13:18:38","guid":{"rendered":"http:\/\/putridparrot.com\/blog\/?p=6669"},"modified":"2018-12-20T13:19:16","modified_gmt":"2018-12-20T13:19:16","slug":"the-bluetooth-device-address-bd_addr","status":"publish","type":"post","link":"https:\/\/putridparrot.com\/blog\/the-bluetooth-device-address-bd_addr\/","title":{"rendered":"The Bluetooth device address (BD_ADDR)"},"content":{"rendered":"<p>As you&#8217;d expect, a Bluetooth device has a <a href=\"https:\/\/en.wikipedia.org\/wiki\/MAC_address\" rel=\"noopener\" target=\"_blank\">MAC address<\/a> assigned to it, however the BD_ADDR (Bluetooth Device Address), at least in my experiments, doesn&#8217;t necessarily map to the MAC address you see in, for example, the Window Device Manager properties page for the Bluetooth device. I will update this document if I find my findings have changed.<\/p>\n<p><em>The information listed below is taken from a few sources, some of which I&#8217;ve referenced at the end of the post, my knowledge on the subject is taken from those and my own experiments.<\/em><\/p>\n<p>The BD_ADDR is a unique identifier using 48-bit address space. For example<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n11:22:33:44:55:66\r\n<\/pre>\n<p>The address denotes several pieces of information, as follows<\/p>\n<ul>\n<li><strong>NAP<\/strong>\n<p>\nThe Non-significant Address Part is denoted by the first 16 bits, using our example this would be the 11:22 value. The NAP is used in Frequency Hopping Synchronization frames\/packets.<\/p>\n<\/li>\n<li><strong>UAP<\/strong>\n<p>\nThe Upper Address Part is denoted by the next 8 bits, using our example this would be the 33 value. The UAP is used for seeding various Bluetooth specification algorithms.<\/p>\n<\/li>\n<li><strong>OUI<\/strong>\n<p>\nThe Organizationally Unique Identifier (the first 24 bits) is actually the combination of the NAP and UAP, hence in our example the NAP + UAP gives us the OU which is 11:22:33<\/p>\n<p>\nWith the knowledge on the make up of the BD_ADDR, we can see that by taking the OUI value, we should be able to fairly easily lookup the manufacturer of a device. For example using the <a href=\"http:\/\/standards-oui.ieee.org\/oui.txt\" rel=\"noopener\" target=\"_blank\">OUI List<\/a>.\n<\/p>\n<\/li>\n<li><strong>LAP<\/strong>\n<p>\nThe Lower Address Part is made up of the final 24-bits, hence in our example this would be the 44:55:66 and is allocated by the device vendor. The LAP identifies a Bluetooth device and is transmitted with each frame\/packet as part of the packet header.<\/p>\n<\/li>\n<\/ul>\n<p><strong>References<\/strong><\/p>\n<p><a href=\"https:\/\/www.nccgroup.trust\/us\/about-us\/newsroom-and-events\/blog\/2012\/february\/bluetooth-defining-nap-uap-lap\/\" rel=\"noopener\" target=\"_blank\">Bluetooth: Defining NAP + UAP + LAP<\/a><a href=\"https:\/\/macaddresschanger.com\/what-is-bluetooth-address-BD_ADDR\" rel=\"noopener\" target=\"_blank\">Bluetooth MAC Address Changer for Windows<\/a><br \/>\n<a href=\"http:\/\/standards-oui.ieee.org\/oui.txt\" rel=\"noopener\" target=\"_blank\">OUI List<\/a><br \/>\n<a href=\"https:\/\/community.cypress.com\/community\/wiced-smart\/wiced-smart-forums\/blog\/2014\/09\/26\/bdaddr-how-do-you-get-one\" rel=\"noopener\" target=\"_blank\">BD_ADDR &#8211; how do you get one?<\/a><br \/>\n<a href=\"http:\/\/ubertooth.blogspot.com\/2014\/06\/discovering-bluetooth-uap.html\" rel=\"noopener\" target=\"_blank\">Discovering the Bluetooth UAP<\/a><br \/>\n<a href=\"https:\/\/www.quora.com\/Does-each-Bluetooth-device-has-its-own-unique-MAC-Address-How-can-we-access-it-in-an-app\" rel=\"noopener\" target=\"_blank\">Does each Bluetooth device has its own unique MAC Address? How can we access it in an app?<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As you&#8217;d expect, a Bluetooth device has a MAC address assigned to it, however the BD_ADDR (Bluetooth Device Address), at least in my experiments, doesn&#8217;t necessarily map to the MAC address you see in, for example, the Window Device Manager properties page for the Bluetooth device. I will update this document if I find my [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[231],"tags":[],"class_list":["post-6669","post","type-post","status-publish","format-standard","hentry","category-bluetooth"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts\/6669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/comments?post=6669"}],"version-history":[{"count":5,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts\/6669\/revisions"}],"predecessor-version":[{"id":6676,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/posts\/6669\/revisions\/6676"}],"wp:attachment":[{"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/media?parent=6669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/categories?post=6669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/putridparrot.com\/blog\/wp-json\/wp\/v2\/tags?post=6669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}