<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Microsoft Windows Bluetooth Core Team Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/btblog/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/btblog/feed.xml</link>
    <description>How-to articles, guides, tips and tricks for Windows Bluetooth development</description>
    <lastBuildDate>Tue, 16 Apr 2019 04:50:14 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Peripheral Makers: Building Swift Pair Peripherals</title>
      <link>https://docs.microsoft.com/archive/blogs/btblog/enable_streamlined_pairings</link>
      <pubDate>Fri, 02 Feb 2018 06:00:01 GMT</pubDate>
      <dc:creator><![CDATA[Steven[MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/btblog/?p=145</guid>
      <description><![CDATA[NOTE: We now have official MSDN documentation online, which we recommend you use to build against....]]></description>
      <content:encoded><![CDATA[<span style="color: #ff0000"><strong>NOTE:</strong></span> We now have <a href="https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/bluetooth-swift-pair">official MSDN documentation online</a>, which we recommend you use to build against. This is where we will update you if we need to add or change anything for clarity.
<h1 style="text-align: center"><a href="https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/bluetooth-swift-pair">Link to Official MSDN Documentation</a></h1>

<hr />

This post will detail the requirements for a Bluetooth peripheral to support Swift Pair on Windows. There will be additional details on MSDN coupled with the next release of Windows 10.

A core pillar while we built this feature was to keep it as simple and easy to implement for others in the ecosystem. We’ve identified two sets of requirements needed to ensure your peripheral works well with Windows. One set is for the peripheral’s behavior, and another for the structure and values in a Microsoft defined vendor section. By meeting these requirements all peripheral makers should now be able to try this feature out using this latest Insider build.
<h1>Peripheral Behavior</h1>
Adhering to the core principle of making pairing easy and predictable for our users, we have identified the following set of peripheral behaviors.
<h3><span>Required</span></h3>
<ul>
 	<li>Support Bluetooth Low Energy (LE)</li>
 	<li>Add one of the vendor defined sections (Fig 1-3) to your main advertising packet while in pairing mode</li>
 	<li>Stop advertising the defined vendor section 30 seconds before you exit pairing mode</li>
 	<li>Remove the vendor section more than 30 seconds before the exiting pairing mode
<ul>
 	<li>We do not want users to try to pair to peripherals that are no longer available</li>
 	<li>The peripheral can continue to advertise without the vendor defined section afterwards</li>
</ul>
</li>
 	<li>For peripherals that support multiple pairings, if there are no available pairings when Windows attempts to pair, remove the pairing that has not been connected to for the longest amount of time
<ul>
 	<li>This is to keep the experience predictable for our users</li>
</ul>
</li>
 	<li>For users to easily identify your peripheral, you must include either a name of the peripheral <strong><em>OR</em></strong> an icon for the type of peripheral in the same advertisement as the vendor section. This is required as we will not actively scan for both power and privacy concerns. You can implement this in the following ways:
<ul>
 	<li>Peripheral Name:
<ul>
 	<li>It is recommended to use the Bluetooth friendly name section</li>
 	<li>If this is not possible we provide a fallback “Display Name” mechanism in the vendor section (Fig 1-3)
<ul>
 	<li>This field is uncapped in size, so all available space may be used</li>
 	<li>This name will show in all markets, so it is recommended to use model numbers, trademarks, or brands here</li>
</ul>
</li>
</ul>
</li>
 	<li>Peripheral appearance:
<ul>
 	<li>For Bluetooth LE only peripherals: include the Bluetooth LE appearance section in the same advertisement that contains the vendor section</li>
 	<li>For Dual Mode peripherals, The vendor defined section already includes the 3 bytes the <a href="https://www.bluetooth.com/specifications/assigned-numbers/baseband">Bluetooth SIG defined</a> for the Major and Minor Class of Device (CoD)</li>
</ul>
</li>
</ul>
</li>
 	<li>For Dual Mode peripherals, where you intend to pair over both Bluetooth LE and BR/EDR, support Secure Connections over both protocols
<ul>
 	<li>This allows a peripheral to pair over both, by first pairing over Bluetooth LE</li>
</ul>
</li>
 	<li>For peripherals that beacon without user consent, support Bluetooth LE privacy
<ul>
 	<li>It is recommended to suspend rotating the Bluetooth LE address during the pairing session due to the privacy efforts associated with Bluetooth LE Privacy</li>
 	<li>Each change to the public address will appear as a new Swift Pair request</li>
</ul>
</li>
</ul>
<h3>Recommended</h3>
<ul>
 	<li>Enter pairing mode on the very first power on</li>
 	<li>Do not beacon for this experience indefinitely or for an extended period before exiting paring mode</li>
 	<li>Beacon/advertise at a consistent rate while in a Swift Pair session. We've found every 100ms works best.</li>
 	<li>Dual mode peripherals should consider supporting pairing over both Bluetooth LE and BR/EDR using Secure Connections to save payload space</li>
</ul>
<h1>Payload Structures</h1>
Bluetooth LE is required, but that does not mean audio and other BR/EDR peripherals can’t get in on the action. We have 3 payloads which will trigger the seamless pairing experience; one for solely Bluetooth LE peripherals, and then two for dual mode peripherals. The dual mode payloads help address whether the peripheral in question will pair over both Bluetooth LE and BR/EDR using secure connections or is leveraging this Bluetooth LE advertisement to pair over only BR/EDR.

[caption id="attachment_266" align="alignnone" width="641"]<img width="641" height="236" class="size-full wp-image-266" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/LE_Only_Payload.png" /> Figure 1: Pairing over Bluetooth LE only[/caption]

[caption id="attachment_255" align="alignnone" width="836"]<img width="836" height="236" class="wp-image-255 size-full" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/LE_BRDER_Payload.png" /> Figure 2: Paring over Bluetooth LE and BR/EDR with Secure Connections[/caption]

[caption id="attachment_235" align="alignnone" width="824"]<img width="824" height="236" class="size-full wp-image-235" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/BREDR_Payload.png" /> Figure 3: Pairing over BR/EDR only, using Bluetooth LE for discovery[/caption]
<h3>Section Header</h3>
<ul>
 	<li>This is a Bluetooth SIG defined vendor section</li>
 	<li>The header consists of the Length, Vendor defined flag, and Microsoft Vendor ID 0x0006</li>
</ul>
<h3>Payload Content</h3>
<ul>
 	<li>Microsoft Beacon ID &amp; Sub Scenario
<ul>
 	<li>The Microsoft Beacon ID helps identify that the advertisement is for this experience</li>
 	<li>The sub scenario helps detail how the peripheral will pair, each ID has a unique payload</li>
</ul>
</li>
 	<li>Reserved RSSI Byte
<ul>
 	<li>We’re asking to reserve this byte and set it to 0x80. This will help maintain forwards and backwards compatibility</li>
 	<li>In future releases we will provide guidance on how to provide RSSI calibration values for improved proximity detection</li>
</ul>
</li>
 	<li>Display Name
<ul>
 	<li>As mentioned above, this variable size field can allow payload constrained peripherals to display the name of the peripheral on the notification</li>
 	<li>This name will not be localized and will need to work for all markets</li>
</ul>
</li>
</ul>
<h3>Classic BR/EDR Pairings</h3>
<ul>
 	<li>For BR/EDR peripheral icon appearance
<ul>
 	<li>It is the same as the <a href="https://www.bluetooth.com/specifications/assigned-numbers/baseband">Major and Minor Class of Device</a>(CoD) mapping provided by the Bluetooth SIG</li>
</ul>
</li>
 	<li>BR/EDR Address
<ul>
 	<li>If a peripheral will pair over BR/EDR only, the BR/EDR address must be included in the main advertising packet
<ul>
 	<li>Must be in little endian format</li>
</ul>
</li>
 	<li>Supporting Secure Connections and pairing over both Bluetooth LE and BR/EDR removes this requirement</li>
</ul>
</li>
</ul>
<h1>Frequently Asked Questions</h1>
<strong>How does Windows detect if a peripheral is in range?</strong>

In addition to the new experience, we've also added a Bluetooth proximity service that reads the signal strength from a peripheral to determine its proximity to Windows. When determined to be close by, the notification will show.

Since the signal strength varies between hosts and peripherals, we are always looking to increase the precision of our proximity service to make our proximity detection more predictable. This is what the reserved Received Signal Strength (RSSI) byte in the payload will be used for.

<strong>How does Windows listen for these peripherals without draining power?</strong>

The pattern Windows is looking for will be offloaded to the radio via <a href="https://docs.microsoft.com/en-us/windows-hardware/drivers/bluetooth/microsoft-defined-bluetooth-hci-commands-and-events">Hardware Offload</a>. The offloaded pattern will listen for a match to the vendor section without waking Windows up or active scanning. If the radio does not support <a href="https://docs.microsoft.com/en-us/windows-hardware/drivers/bluetooth/microsoft-defined-bluetooth-hci-commands-and-events">Hardware Offload</a>, then the feature is not supported, and this is represented in Settings by not having the “Connect to certain Bluetooth devices quickly”.

<strong>How does Windows detect and display Bluetooth peripheral information?</strong>

The name and the type of peripheral need to be in the same advertisement that has the vendor section. We will not active scan for this feature, and all peripheral info must be included in this single advertisement. If friendly name section can’t fit in this advertisement, we provide the fallback mechanism at the end of the payload to have the peripheral name show.

<strong>There are competing implementations of this feature for other platforms, are there long-term plans to interop with them?</strong>

Currently, this is specific to Windows, however we are looking to standardize this functionality across all platforms in the future with the Bluetooth SIG.
<h1>Contact Us</h1>
If you’d like to take advantage of this great new feature and make a peripheral that supports Swift Pair, please reach out to a Microsoft representative, or leave a comment here and we'll get back to you. We would love to work together as we evolve this experience.]]></content:encoded>
    </item>
    <item>
      <title>Swift Pair for Bluetooth Peripherals</title>
      <link>https://docs.microsoft.com/archive/blogs/btblog/streamlined_pairing_for_bluetooth</link>
      <pubDate>Tue, 30 Jan 2018 06:00:37 GMT</pubDate>
      <dc:creator><![CDATA[Steven[MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/btblog/?p=165</guid>
      <description><![CDATA[Welcome everyone to Swift Pair, the newest way to pair your Bluetooth peripherals to Windows 10 PCs....]]></description>
      <content:encoded><![CDATA[Welcome everyone to Swift Pair, the newest way to pair your Bluetooth peripherals to Windows 10 PCs. This post will detail the feature and will answer any questions about how this quick and convenient feature works.

This is the next evolution of our constant quest to make Bluetooth the best it can be. No longer does a user need to navigate the Settings App and find their peripheral to pair. Windows can now do this for them by popping a notification when a new peripheral is nearby and ready to pair. The steps for a user to use and benefit from this feature are simple:
<ol>
 	<li>Put the Bluetooth peripheral in pairing mode</li>
 	<li>If the peripheral is close by, Windows will show a notification to the user</li>
 	<li>Selecting “Connect” starts pairing</li>
 	<li>When the peripheral is no longer in pairing mode or is no longer nearby, Windows will remove the notification from the Action Center</li>
</ol>
<img width="720" height="405" class="aligncenter size-full wp-image-395" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/NotificationPairSmall.gif" />

If at any time, a user wishes to turn Swift Pair off, they can do so in the “Bluetooth &amp; other devices” page. Enterprises will also be able to control this feature through any existing Mobile Device Management solution.

We are working hard to bring this to as many of your favorite peripherals as possible. To try it out today, go pick up a <a href="https://www.microsoft.com/en-us/store/d/microsoft-surface-precision-mouse/8qc5p0d8ddjt?activetab=pivot:overviewtab">Surface Precision Mouse</a>, the first peripheral enabled with Swift Pair!
<h3>Our Partners</h3>
A huge thanks to the teams and partners we’ve worked with to get this feature ready. Through their help, turning this on in other peripherals should be easy. Please <a href="https://blogs.msdn.microsoft.com/btblog/2018/02/02/enable_streamlined_pairings/">learn more here</a> if you would like to build a peripheral that supports effortless pairing.

&nbsp;

<em> “[Swift Pair] aims at improving initial connectivity. It represents a very important element of the overall "out-of-box" experience of our devices. We are delighted to contribute to this important technical milestone and make our devices compatible with it.”</em>
<strong>Frederic Frappereau, Developer Relations at Logitech</strong>

<em> “Nordic Semiconductor is glad to collaborate in the development of [Swift Pair]. Our nRF5x SoCs are ideal platform for continuously supporting user experience evolution lead by Microsoft. We have developed the feature on nRF52 platform in record time. We are happy to say that the feature will be released in an upcoming Nordic Software Development Kit”</em>

<strong>Kjetil Holstad, Product Manager Short Range Low Power Wireless at Nordic</strong>

&nbsp;

If any issues or bugs are found, they can be reported along with any other feedback or suggestions using the <a href="https://aka.ms/BTFeedbackHubPairingConnecting">Feedback Hub</a>. We have fixes for some issues, which haven’t quite made it to these Insider builds yet.
<h1>Frequently Asked Questions</h1>
<strong>Does this mean the similar experiences on other platforms will work on Windows?</strong>

At this time, only certain enabled peripherals can trigger Swift Pair. We are however looking to standardize this in the long term.

<strong>I can’t get a notification to show, and I don’t have an option in the Settings page. What is going on?</strong>

If there isn’t a settings option that reads “Connect to certain Bluetooth devices quickly”, then this means the Bluetooth radio in your Windows device does not have the needed hardware support. If so, please let us know via the <a href="https://aka.ms/BTFeedbackHubPairingConnecting">Feedback Hub</a>.]]></content:encoded>
    </item>
    <item>
      <title>Bluetooth LE Explorer code is open source now!</title>
      <link>https://docs.microsoft.com/archive/blogs/btblog/bluetooth-le-explorer-code-is-open-source-now</link>
      <pubDate>Mon, 21 Aug 2017 13:59:57 GMT</pubDate>
      <dc:creator><![CDATA[Aruna [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/btblog/?p=125</guid>
      <description><![CDATA[After watching our Build 2017 videos many of you reached out to us asking for the source code to our...]]></description>
      <content:encoded><![CDATA[After watching our <a href="https://channel9.msdn.com/Events/Build/2017/P4177">Build 2017 videos</a> many of you reached out to us asking for the source code to our Bluetooth LE Explorer app. We heard your requests and have made our app fully open-sourced! You can use our app to enumerate, connect and interact with nearby LE devices, read their services, characteristics and write to them.

Our <a href="https://www.microsoft.com/store/apps/9N0ZTKF1QD98">Bluetooth LE Explorer app</a> is available for download in the Windows 10 store, and the app source code can be found in our <a href="https://github.com/Microsoft/BluetoothLEExplorer">Github page.</a>

We welcome our developer community to browse the app, play around with the code, make changes and send us pull requests. Give us feedback on the usability of a feature and how it could be improved. There is much to do with our open-source project. We look forward to hearing from you!

Links and Resources:
<ul>
 	<li><a href="https://channel9.msdn.com/Events/Build/2017/P4177">Build 2017 videos</a></li>
 	<li><a href="https://www.microsoft.com/store/apps/9N0ZTKF1QD98">Bluetooth LE Explorer app</a></li>
 	<li><a href="https://github.com/Microsoft/BluetoothLEExplorer">App Source Code</a></li>
 	<li><a href="https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/bluetooth">Windows Bluetooth Dev Center</a></li>
 	<li><a href="https://github.com/MicrosoftDocs/windows-uwp/blob/docs/windows-apps-src/devices-sensors/bluetooth-low-energy-overview.md">Windows Bluetooth github page</a></li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Introducing BluetoothLEHelper</title>
      <link>https://docs.microsoft.com/archive/blogs/btblog/introducing-bluetoothlehelper</link>
      <pubDate>Fri, 07 Jul 2017 14:44:56 GMT</pubDate>
      <dc:creator><![CDATA[Aruna [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/btblog/?p=85</guid>
      <description><![CDATA[We would like to introduce our much awaited BluetoothLEHelper, a new module that provides...]]></description>
      <content:encoded><![CDATA[We would like to introduce our much awaited <a href="https://docs.uwpcommunitytoolkit.com/en/master/helpers/BluetoothLEHelper/">BluetoothLEHelper</a>, a new module that provides functionality to enumerate, connect, and interact with Bluetooth LE Peripherals. It is part of our open-source <a href="https://blogs.windows.com/buildingapps/2017/07/05/announcing-uwp-community-toolkit-1-5/#0l7WLJ4lxo3yX1KU.97">UWP Community Toolkit version 1.5</a> that enables the developer community to collaborate and contribute new capabilities on top of the SDK.

The BluetoothLEHelper class uses the core engine of our <a href="https://www.microsoft.com/store/apps/9n0ztkf1qd98">Bluetooth LE Explorer app</a> which allows users to find and interrogate nearby LE devices, read their services, characteristics and write to them. We are almost at the point of open-sourcing the app in its entirety. For more details on how to use the app, check out our <a href="https://channel9.msdn.com/Events/Build/2017/P4177">Build 2017 videos</a>!

The <a href="https://www.microsoft.com/en-us/store/p/uwp-community-toolkit-sample-app/9nblggh4tlcq?rtc=1">UWP Community Toolkit Sample App</a> is available on the Windows 10 store. Please download the app and play with the controls to see what they do before jumping into the code!

To learn more about our work in Bluetooth BR/EDR and LE, check out these links:
<ul>
 	<li><a href="https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/bluetooth">Windows Dev Center</a></li>
 	<li><a href="https://github.com/MicrosoftDocs/windows-uwp/blob/docs/windows-apps-src/devices-sensors/bluetooth-low-energy-overview.md">Github page</a></li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Welcome to the Windows Bluetooth Core Team blog!</title>
      <link>https://docs.microsoft.com/archive/blogs/btblog/welcome-to-the-new-windows-bluetooth-core-team-blog</link>
      <pubDate>Thu, 11 May 2017 15:17:54 GMT</pubDate>
      <dc:creator><![CDATA[Aruna [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/btblog/?p=55</guid>
      <description><![CDATA[Bluetooth is powering new innovations in wireless connectivity across computers, smart devices, and...]]></description>
      <content:encoded><![CDATA[Bluetooth is powering new innovations in wireless connectivity across computers, smart devices, and the Internet-of-Things. Besides being the input of choice for the new Surface accessories such as mice, keyboards, Surface Pen, and Surface Dial, it's become the preferred protocol for wearables and health monitoring systems like Fitbit and Garmin. Because of Bluetooth, a Jabra Sport Pulse headphone can stream music to power your workout, while simultaneously transferring your heart rate data to your smartphone. Bluetooth also makes it easy to track products on a shop floor. Finally, Bluetooth flagship applications, audio and automotive, are two key areas where it continues to innovate: from truly wireless earbuds with great battery life, to using Cortana's voice for map navigation, Bluetooth cannot be beat!

Hi, I'm Aruna, a new PM on the Bluetooth team, helping our dev community enable great Bluetooth experiences on Windows!

Check out our January blog post about our much anticipated release of <a href="https://blogs.windows.com/buildingapps/2017/01/13/new-bluetooth-features-in-creators-update-gatt-server-bluetooth-le/#dYvR36eBXpBqfqeh.97">new Bluetooth features</a> in our Windows 10 Creators Update! Not only did we make improvements to our GATT server, and LE device connectivity, we also improved Bluetooth audio functionality. Now, your Skype audio will sound much better over Bluetooth!

As a part of that, we're excited to present our three-part video series* for <a href="https://microsoft.sharepoint.com/sites/msw/Events/Build2017/Pages/default.aspx">Microsoft Build 2017.</a> Our videos dive deep into:
<ul>
 	<li><a href="https://channel9.msdn.com/Events/Build/2017/P4177">Introduction to the Bluetooth LE Explorer app</a></li>
 	<li><a href="https://channel9.msdn.com/Events/Build/2017/P4178">How to enumerate and connect to an unpaired Bluetooth peripheral</a></li>
 	<li><a href="https://channel9.msdn.com/Events/Build/2017/P4179">How to write your own GATT server</a></li>
</ul>
* The BTVS sniffer tool, shown in the videos, is still work in progress. We'll keep you updated on its release timeline.

Other Microsoft Build 2017 sessions are available on <a href="https://channel9.msdn.com/Events/Build/2017">Channel 9</a>.

To learn more about our work in Bluetooth BR/EDR and LE, check out these links:
<ul>
 	<li><a href="https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/bluetooth">Windows Dev Center</a></li>
 	<li><a href="https://go.microsoft.com/fwlink/p/?LinkId=820786">Bluetooth LE sample code</a></li>
 	<li><a href="https://www.microsoft.com/store/apps/9n0ztkf1qd98">Bluetooth LE Explorer</a></li>
</ul>
Update on 08/21/2017:

We've <a href="https://github.com/Microsoft/BluetoothLEExplorer">open sourced our app</a>! Please check out our new <a href="https://blogs.msdn.microsoft.com/btblog/2017/08/21/bluetooth-le-explorer-code-is-open-source-now/">blog post</a> for more details!

If you have any questions, or would like us to discuss more about any of the topics in this post, please let us know in the comments below!]]></content:encoded>
    </item>
  </channel>
</rss>