Implementation Status
This document shows the implementation status of Web Bluetooth on the different browsers.
Chrome
Work is in progress:
- Notes updated 2017-06-09.
- Know How to file Web Bluetooth Bugs.
- The
chrome://flags/#enable-experimental-web-platform-featuresflag must be enabled on Linux and Windows. In Chrome OS, Android, and Mac, the GATT Communication API is available without any flag. - Root Issue 419413: Web Bluetooth and blocking issues are most authorative on status.
- Some Bluetooth GATT operations can't be run in parallel yet. See #188 (comment)
GATT Communication API
| Feature/Platform | Chrome OS | Android | Mac | Linux | Windows |
|---|---|---|---|---|---|
| getAvailability() | |||||
| Referring Device (Physical Web) | |||||
| Discovery | ✓ | ✓ | ✓ | ✓ | ✓ |
| └ Service list | ✓ | ✓ | ✓ | ✓ | ✓ |
| └ Name or prefix | ✓ | ✓ | ✓ | ✓ | ✓ |
| └ Manufacturer/Service data | |||||
| └ acceptAllDevices | ✓ | ✓ | ✓ | ✓ | ✓ |
| Chooser UI | ✓ | ✓ | ✓ | ✓ | ✓ |
| permissions.request() | |||||
| permissions.query() | |||||
| permissions.revoke() | |||||
| watchAdvertisements() | |||||
| Persistent Device IDs | |||||
| GATT Server Connect | ✓ | ✓ | ✓ | ✓ | |
| GATT Server Disconnect | ✓ | ✓ | ✓ | ✓ | |
| Hanging connect() abortable by disconnect() | |||||
| getPrimaryService*() | ✓ | ✓ | ✓ | ✓ | |
| getIncludedService*() | |||||
| getCharacteristic*() | ✓ | ✓ | ✓ | ✓ | |
| Characteristic Properties | ✓ | ✓ | ✓ | ✓ | |
| Read Characteristic | ✓ | ✓ | ✓ | ✓ | |
| Write Characteristic | ✓ | ✓ | ✓ | ✓ | |
| Start/Stop Notifications | ✓ | ✓ | ✓ | ✓ | |
| Descriptors | ✓ | ✓ | ✓ | ✓ | |
| Event bubbling | |||||
| Device Disconnected Event | ✓ | ✓ | ✓ | ✓ | |
| Service Changed Event | |||||
| BluetoothUUID | ✓ | ✓ | ✓ | ✓ | ✓ |
| TypeError for bad UUIDs | ✓ | ✓ | ✓ | ✓ | ✓ |
| Invalidate GATT attributes upon disconnect | ✓ | ✓ | ✓ | ✓ | ✓ |
| GATT Blocklist | ✓ | ✓ | ✓ | ✓ | ✓ |
| Low-latency Blocklist Updates | ✓ | ✓ | ✓ | ✓ | ✓ |
Scanning API
| Feature/Platform | Chrome OS | Android | Mac | Linux | Windows |
|---|---|---|---|---|---|
| Advertisements Scanning |
Tip: Chrome channel releases are tracked at https://googlechrome.github.io/current-versions/.
Notes
- Android: Requires Android 6.0 Marshmallow or later.
- Mac: Requires OS X Yosemite or later.
- Some MacBooks may not work: Check "About this Mac" / "System Report" / "Bluetooth" and verify that Low Energy is supported.
- Linux: Requires Kernel 3.19+ and BlueZ 5.41+ installed. Read How to get Chrome Web Bluetooth working on Linux.
- Note that Bluetooth daemon needs to run with experimental interfaces if BlueZ version is lower than 5.43:
sudo /usr/sbin/bluetoothd -E
- Note that Bluetooth daemon needs to run with experimental interfaces if BlueZ version is lower than 5.43:
- Windows: Requires Windows 8.1 or later.
- To discover devices the user hasn't yet manually paired, requires Windows 10.
- A third-party Windows 10 Polyfill (Chrome Extension + Native Executable) has been created while Windows support is not implemented yet.
Unsupported platforms
- Android WebView: Will be supported in the future.
- iOS: Uses the web exposed APIs as provided by the WKWebView, no implementation planned in the Chromium codebase.
Note: WebBLE is an app for iOS that supports the GATT Communication API. It was created initially for the Puck.js project.
Opera
Same as Chrome unless specified otherwise
Servo
https://szeged.github.io/servo/
Firefox
- https://bugzilla.mozilla.org/show_bug.cgi?id=1204396
- https://bugzilla.mozilla.org/buglist.cgi?quicksearch=%5Bweb-bluetooth%5D
Microsoft Edge
https://dev.windows.com/en-us/microsoft-edge/platform/status/webbluetooth
Safari
https://bugs.webkit.org/show_bug.cgi?id=101034
Samsung Internet
http://developer.samsung.com/forum/board/thread/view.do?boardName=SDK&messageId=296269






