{"id":6543,"date":"2017-07-23T17:54:28","date_gmt":"2017-07-23T17:54:28","guid":{"rendered":"http:\/\/blog.bachi.net\/?p=6543"},"modified":"2018-11-17T16:24:06","modified_gmt":"2018-11-17T16:24:06","slug":"bluetooth","status":"publish","type":"post","link":"https:\/\/blog.bachi.net\/?p=6543","title":{"rendered":"Bluetooth"},"content":{"rendered":"<p><a href=\"https:\/\/people.csail.mit.edu\/albert\/bluez-intro\/index.html\">An Introduction to Bluetooth Programming<\/a>, TCP\/IP vs. Bluetooth<\/p>\n<p><a href=\"https:\/\/www.rs-online.com\/designspark\/eleven-internet-of-things-iot-protocols-you-need-to-know-about\">11 Internet of Things (IoT) Protocols You Need to Know About<\/a><\/p>\n<p>&#8220;Hybride Ger\u00e4te, die sowohl Bluetooth Classic als auch Bluetooth Low Energy unterst\u00fctzen, werden \u201eSmart Ready\u201c genannt&#8221;, Wikipedia<br \/>\n&#8220;Bluetooth Low Energy (BLE), sometimes referred to as &#8220;Bluetooth Smart&#8221;, is a light-weight subset of classic Bluetooth and was introduced as part of the Bluetooth 4.0 core specification.&#8221;, Adafruit<\/p>\n<ul>\n<li>HCI = Host Controller Interface (Host [uC] <==> Controller [BT])<\/li>\n<li>VHCI = Virtual HCI<\/li>\n<li>H4 = UART protocol support<\/li>\n<li>BTE = Bluetooth Embedded System<\/li>\n<li>BTA = Bluetooth Application Layer<\/li>\n<\/ul>\n<ul>\n<li>Single Mode \/ Dual Mode: BR\/EDR vs. LE<\/li>\n<li>Basic Rate (BR)<\/li>\n<li>Low Energy (LE)<\/li>\n<li>Enhanced Data Rate (EDR)<\/li>\n<li>Media Access Control (MAC)<\/li>\n<li>Physical (PHY)<\/li>\n<li>Alternate MAC\/PHY (AMP)<\/li>\n<li>PAL (Protocol Adaptation Layer)<\/li>\n<\/ul>\n<ul>\n<li>link manager protocol (LMP)<\/li>\n<li>link layer protocol (LL)<\/li>\n<li>LE asynchronous connection logical transport (LE ACL)<\/li>\n<li>Protocol Adaptation Layer (PAL)<\/li>\n<li>Security Manager (SM)<\/li>\n<li>Attribute Protocol (ATT)<\/li>\n<li>Generic Attribute Profile (GATT)<\/li>\n<li>Generic Access Profile (GAP)<\/li>\n<li>basic acknowledgement\/repeat request (ARQ)<\/li>\n<li>Security Manager Protocol (SMP)<\/li>\n<li>Asynchronous Connection-Oriented (ACL)<\/li>\n<li>Synchronous Connection-Oriented (SCO)<\/li>\n<li>Extended SCO (eSCO)<\/li>\n<li>Active Slave Broadcast (ASB)<\/li>\n<li>LE Advertising Broadcast (ADVB)<\/li>\n<li>a<\/li>\n<\/ul>\n<p>Layer Protocol Architecture<\/p>\n<ul>\n<li>Generic Access Profile (GAP)<\/li>\n<li>Service Discovery Protocol (SDP)<\/li>\n<li>RFCOMM \/ SMP \/ ATT<\/li>\n<li>L2CAP<\/li>\n<li>Link Manager \/ Link Layer<\/li>\n<li>Baseband \/ Link Controller \/ PHY<\/li>\n<\/ul>\n<p>Profile:<\/p>\n<ul>\n<li>Personal Area Networking (PAN)<\/li>\n<li>LAN Access Point (LAP)<\/li>\n<li>Dial-Up Networking (DUN)<\/li>\n<li>Serial Port Profile (SPP)<\/li>\n<\/ul>\n<h3>Wikipedia<\/h3>\n<p><a href=\"https:\/\/de.wikipedia.org\/wiki\/Bluetooth\">Bluetooth<\/a> (de)<br \/>\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Bluetooth\">Bluetooth<\/a> (en)<br \/>\n<a href=\"https:\/\/de.wikipedia.org\/wiki\/Bluetooth-Profile\">Bluetooth-Profile<\/a> (de)<br \/>\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_Bluetooth_profiles\">List of Bluetooth profiles<\/a> (en)<br \/>\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Bluetooth_stack\">Bluetooth stack<\/a> (en)<br \/>\n<a href=\"https:\/\/de.wikipedia.org\/wiki\/Bluetooth_Low_Energy\">Bluetooth Low Energy, BLE, LE<\/a> (de)<br \/>\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Bluetooth_Low_Energy\">Bluetooth Low Energy, BLE, LE<\/a> (en)<br \/>\n<a href=\"https:\/\/developer.mbed.org\/teams\/Bluetooth-Low-Energy\/\">mbed: Bluetooth Low Energy<\/a><br \/>\n<a href=\"https:\/\/developer.android.com\/guide\/topics\/connectivity\/bluetooth-le.html\">android: Bluetooth Low Energy<\/a><br \/>\n<a href=\"https:\/\/de.wikipedia.org\/wiki\/Near_Field_Communication\">Near Field Communication (NFC)<\/a> (de)<\/p>\n<p>Stacks:<\/p>\n<ul>\n<li>BlueZ (Linux)<\/li>\n<li>BlueDroid (Android)<\/li>\n<li>lwBT<\/li>\n<\/ul>\n<h3>Adafruit<\/h3>\n<p><a href=\"https:\/\/learn.adafruit.com\/introduction-to-bluetooth-low-energy\/introduction\">Adafruit BLE \/ Bluetooth Smart<\/a><\/p>\n<h2>bluetooth.com<\/h2>\n<p><a href=\"https:\/\/www.bluetooth.com\/develop-with-bluetooth\/developer-resources-tools\">Develop with Bluetooth &#8211; Developer Tools &#038; Resources<\/a><br \/>\n<a href=\"https:\/\/blog.bluetooth.com\/category\/bluetooth-developer\">Develop with Bluetooth &#8211; Blog<\/a><br \/>\n<a href=\"https:\/\/www.bluetooth.com\/develop-with-bluetooth\/developer-resources-tools\/developer-training-videos\">Develop with Bluetooth &#8211; Training Videos<\/a><br \/>\n<a href=\"https:\/\/www.bluetooth.com\/specifications\/bluetooth-core-specification\">Bluetooth Core Specification<\/a><\/p>\n<h2>Nordic<\/h2>\n<p><a href=\"https:\/\/devzone.nordicsemi.com\/tutorials\/\">Tutorials<\/a><br \/>\n<a href=\"https:\/\/devzone.nordicsemi.com\/tutorials\/5\/\">Bluetooth low energy Advertising, a beginner&#8217;s tutorial<\/a><br \/>\n<a href=\"https:\/\/devzone.nordicsemi.com\/tutorials\/8\/\">Bluetooth low energy Services, a beginner&#8217;s tutorial<\/a><br \/>\n<a href=\"https:\/\/devzone.nordicsemi.com\/tutorials\/17\/\">Bluetooth low energy Characteristics, a beginner&#8217;s tutoria<\/a><\/p>\n<p><a href=\"https:\/\/devzone.nordicsemi.com\/question\/43670\/how-to-distinguish-between-random-and-public-gap-addresses\/\">How to distinguish between random and public GAP addresses?<\/a><\/p>\n<h4>GATT<\/h4>\n<p><a href=\"https:\/\/www.bluetooth.com\/specifications\/gatt\">GATT Specifications<\/a> (Profi\u200ble \u200b\u200bSpecification\u200b)<br \/>\n<a href=\"https:\/\/www.bluetooth.com\/specifications\/gatt\/services\">GATT Services<\/a><\/p>\n<h2>ESP32<\/h2>\n<p><a href=\"https:\/\/www.esp32.com\/viewtopic.php?f=13&#038;t=879\">Bluetooth LE APIs<\/a><br \/>\n<a href=\"https:\/\/esp-idf.readthedocs.io\/en\/v2.0\/api\/bluetooth\/esp_blufi.html\">BLUFI API<\/a> (2.0)<br \/>\n<a href=\"http:\/\/esp-idf.readthedocs.io\/en\/latest\/api-reference\/bluetooth\/esp_blufi.html\">BLUFI API<\/a> (latest)<br \/>\n<a href=\"https:\/\/github.com\/espressif\/esp-idf\/issues\/357\">Example routing UART to VHCI directly<\/a><br \/>\n<a href=\"https:\/\/github.com\/micropython\/micropython-esp32\/issues\/68\">Implement Bluetooth BLE &#8212; RFC on API<\/a><\/p>\n<h4>BTstack<\/h4>\n<p><a href=\"https:\/\/bluekitchen-gmbh.com\/btstack\/\">BTstack Manual v1.0<\/a><br \/>\n<a href=\"https:\/\/github.com\/bluekitchen\/btstack\">github.com\/bluekitchen\/btstack<\/a>, BTstack Source<br \/>\n<a href=\"https:\/\/github.com\/bluekitchen\/btstack\/tree\/master\/chipset\">github.com\/bluekitchen\/btstack\/tree\/master\/chipset<\/a>, Bluetooth chipset<br \/>\n<a href=\"https:\/\/github.com\/bluekitchen\/btstack\/tree\/master\/port\/esp32\">github.com\/bluekitchen\/btstack\/tree\/master\/port\/esp32<\/a>, BTstack Port for the Espressif ESP32 Platform<br \/>\n<a href=\"https:\/\/github.com\/bluekitchen\/btstack\/tree\/master\/port\/nrf5x\">github.com\/bluekitchen\/btstack\/tree\/master\/port\/nrf5x<\/a>, Experimental port for Nordic nRF5 Series<\/p>\n<h2>Android<\/h2>\n<p><a href=\"https:\/\/source.android.com\/devices\/bluetooth\">Android Bluetooth Stack<\/a><br \/>\n<a href=\"https:\/\/zpcat.blogspot.com\/2014\/01\/bluedroid-stack-in-android.html\">Bluedroid stack in android<\/a><br \/>\n<a href=\"http:\/\/processors.wiki.ti.com\/index.php\/Android-Adding_Bluetooth_Profile\">Android-Adding Bluetooth Profile<\/a> (old!!)<\/p>\n<h2>Linux<\/h2>\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/43703507\/direct-control-of-hci-device-bypass-bluetooth-drivers-on-linux\">Direct Control of HCI Device (Bypass Bluetooth Drivers) on Linux<\/a><br \/>\n<a href=\"https:\/\/github.com\/sandeepmistry\/node-bluetooth-hci-socket\">node-bluetooth-hci-socket<\/a>, Bluetooth HCI socket binding for Node.js<br \/>\n<a href=\"https:\/\/www.acmesystems.it\/bluetooth\">Bluetooth: Using USB bluetooth adapters<\/a><\/p>\n<h4>Wireshark<\/h4>\n<p><a href=\"https:\/\/networkengineering.stackexchange.com\/questions\/22612\/structural-unknown-hci-command-in-bluetooth-le-logs\/22632\">Structural unknown HCI Command in Bluetooth LE logs<\/a><\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n$ hcitool scan\r\n$ sdptool search OPUSH 00:25:48:FC:98:6D\r\n$ obexftp --nopath --noconn --uuid none --bluetooth 00:25:48:FC:98:6D --channel 6 -p tuxcase.jpg \r\n<\/pre>\n<pre class=\"brush: plain; collapse: true; light: false; title: Linux dmesg; toolbar: true; notranslate\" title=\"Linux dmesg\">\r\n&#x5B;   20.560100] Bluetooth: Core ver 2.21\r\n&#x5B;   20.560118] Bluetooth: HCI device and connection manager initialized\r\n&#x5B;   20.560121] Bluetooth: HCI socket layer initialized\r\n&#x5B;   20.560124] Bluetooth: L2CAP socket layer initialized\r\n&#x5B;   20.560132] Bluetooth: SCO socket layer initialized\r\n&#x5B;   20.579146] Bluetooth: HCI UART driver ver 2.3\r\n&#x5B;   20.579148] Bluetooth: HCI UART protocol H4 registered\r\n&#x5B;   20.579149] Bluetooth: HCI UART protocol BCSP registered\r\n&#x5B;   20.579150] Bluetooth: HCI UART protocol LL registered\r\n&#x5B;   20.579151] Bluetooth: HCI UART protocol ATH3K registered\r\n&#x5B;   20.579151] Bluetooth: HCI UART protocol Three-wire (H5) registered\r\n&#x5B;   20.579183] Bluetooth: HCI UART protocol Intel registered\r\n&#x5B;   20.579200] Bluetooth: HCI UART protocol BCM registered\r\n&#x5B;   20.579201] Bluetooth: HCI UART protocol QCA registered\r\n&#x5B;   20.579202] Bluetooth: HCI UART protocol AG6XX registered\r\n&#x5B;   20.601412] Bluetooth: hci0: Firmware revision 0.1 build 103 week 50 2016\r\n&#x5B;   21.097388] Bluetooth: BNEP (Ethernet Emulation) ver 1.3\r\n&#x5B;   21.097390] Bluetooth: BNEP filters: protocol multicast\r\n&#x5B;   21.097393] Bluetooth: BNEP socket layer initialized\r\n&#x5B;   36.597632] Bluetooth: RFCOMM TTY layer initialized\r\n&#x5B;   36.597638] Bluetooth: RFCOMM socket layer initialized\r\n&#x5B;   36.597643] Bluetooth: RFCOMM ver 1.11\r\n&#x5B; 8399.532221] Bluetooth: hci0: Bootloader revision 0.0 build 26 week 38 2015\r\n&#x5B; 8399.539943] Bluetooth: hci0: Device revision is 16\r\n&#x5B; 8399.539945] Bluetooth: hci0: Secure boot is enabled\r\n&#x5B; 8399.539945] Bluetooth: hci0: OTP lock is enabled\r\n&#x5B; 8399.539946] Bluetooth: hci0: API lock is enabled\r\n&#x5B; 8399.539946] Bluetooth: hci0: Debug lock is disabled\r\n&#x5B; 8399.539947] Bluetooth: hci0: Minimum firmware build 1 week 10 2014\r\n&#x5B; 8399.542654] Bluetooth: hci0: Found device firmware: intel\/ibt-12-16.sfi\r\n&#x5B; 8400.960872] Bluetooth: hci0: Waiting for firmware download to complete\r\n&#x5B; 8400.961274] Bluetooth: hci0: Firmware loaded in 1398407 usecs\r\n&#x5B; 8400.961342] Bluetooth: hci0: Waiting for device to boot\r\n&#x5B; 8400.977322] Bluetooth: hci0: Device booted in 15614 usecs\r\n&#x5B; 8400.977601] Bluetooth: hci0: Found Intel DDC parameters: intel\/ibt-12-16.ddc\r\n&#x5B; 8400.979328] Bluetooth: hci0: Applying Intel DDC parameters completed\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>An Introduction to Bluetooth Programming, TCP\/IP vs. Bluetooth 11 Internet of Things (IoT) Protocols You Need to Know About &#8220;Hybride Ger\u00e4te, die sowohl Bluetooth Classic als auch Bluetooth Low Energy unterst\u00fctzen, werden \u201eSmart Ready\u201c genannt&#8221;, Wikipedia &#8220;Bluetooth Low Energy (BLE), sometimes referred to as &#8220;Bluetooth Smart&#8221;, is a light-weight subset of classic Bluetooth and was [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6543","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/6543","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6543"}],"version-history":[{"count":18,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/6543\/revisions"}],"predecessor-version":[{"id":8835,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=\/wp\/v2\/posts\/6543\/revisions\/8835"}],"wp:attachment":[{"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6543"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6543"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bachi.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6543"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}