This document shows the implementation status of Web Bluetooth on the different browsers.
Work is in progress:
- Know How to file Web Bluetooth Bugs.
- In Android, Chrome OS, Mac and Windows, the GATT Communication API is shipped without any flag.
- Linux is partially implemented and not supported. The
chrome://flags/#enable-experimental-web-platform-features
flag must be enabled. - The Windows implementation is available in Chrome 70.0.3526.0 and requires Windows 10 version 1703 (Creators Update).
- 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)
- The
getDevices()
andwatchAdvertisements()
APIs are behind thechrome://flags/#enable-experimental-web-platform-features
🚩 flag. - The Persistent Device Permissions feature is behind the
chrome://flags/#enable-web-bluetooth-new-permissions-backend
🚩 flag.
Feature/Platform | Chrome OS | Android | Mac | Linux | Windows |
---|---|---|---|---|---|
getAvailability() | ✓ | ✓ | ✓ | ✓ | ✓ |
Referring Device (Physical Web) | |||||
Discovery | ✓ | ✓ | ✓ | ✓ | ✓ |
└ Service list | ✓ | ✓ | ✓ | ✓ | ✓ |
└ Name or prefix | ✓ | ✓ | ✓ | ✓ | ✓ |
└ Manufacturer Data | 92 | 92 | 92 | 92 | 92 |
└ Service Data | |||||
└ acceptAllDevices | ✓ | ✓ | ✓ | ✓ | ✓ |
└ Exclusion filters | 114 | 114 | 114 | 114 | 114 |
Chooser UI | ✓ | ✓ | ✓ | ✓ | ✓ |
permissions.request() | |||||
permissions.query() | |||||
permissions.revoke() | |||||
getDevices() | 83 🚩 | 83 🚩 | 83 🚩 | 83 🚩 | 83 🚩 |
watchAdvertisements() | 85 🚩 | 85 🚩 | 85 🚩 | ||
Persistent Device Permissions | 83 🚩 | 83 🚩 | 83 🚩 | 83 🚩 | 83 🚩 |
GATT Server Connect | ✓ | ✓ | ✓ | ✓ | ✓ |
GATT Server Disconnect | ✓ | ✓ | ✓ | ✓ | ✓ |
Hanging connect() abortable by disconnect() | |||||
getPrimaryService*() | ✓ | ✓ | ✓ | ✓ | ✓ |
getIncludedService*() | |||||
getCharacteristic*() | ✓ | ✓ | ✓ | ✓ | ✓ |
Characteristic Properties | ✓ | ✓ | ✓ | ✓ | 70 |
Read Characteristic | ✓ | ✓ | ✓ | ✓ | ✓ |
Write Characteristic | ✓ | ✓ | ✓ | ✓ | ✓ |
└ With Response | 85 | 85 | 85 | 85 | 85 |
└ Without Response | 85 | 85 | 85 | 85 | 85 |
Start/Stop Notifications | ✓ | ✓ | ✓ | ✓ | 70 |
Descriptors | ✓ | ✓ | ✓ | ✓ | 70 |
Event bubbling | |||||
Device Disconnected Event | ✓ | ✓ | ✓ | ✓ | 70 |
Service Changed Event | |||||
BluetoothUUID | ✓ | ✓ | ✓ | ✓ | ✓ |
TypeError for bad UUIDs | ✓ | ✓ | ✓ | ✓ | ✓ |
Invalidate GATT attributes upon disconnect | ✓ | ✓ | ✓ | ✓ | ✓ |
GATT Blocklist | ✓ | ✓ | ✓ | ✓ | ✓ |
Low-latency Blocklist Updates | ✓ | ✓ | ✓ | ✓ | ✓ |
On-demand device pairing | ✓ | ✓ |
Partial development. chrome://flags/#enable-experimental-web-platform-features
🚩 flag required.
Feature/Platform | Chrome OS | Android | Mac | Linux | Windows |
---|---|---|---|---|---|
Advertisements Scanning | 🚩 | 🚩 |
Tip: Chrome channel releases are tracked at https://googlechromelabs.github.io/current-versions/.
- 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 10 version 1706 (Creators Update) or later.
- 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.
In Samsung Internet v6.4, the GATT Communication API is shipped without any flag.
- https://medium.com/samsung-internet-dev/lets-connect-with-samsung-internet-v6-4-stable-1f197d43a812
- https://samsunginter.net/docs/web-bluetooth
Available behind a flag opera://flags/#enable-web-bluetooth
.
https://szeged.github.io/servo/
- https://mozilla.github.io/standards-positions/#web-bluetooth
- mozilla/standards-positions#95 (comment)
- https://bugzilla.mozilla.org/show_bug.cgi?id=1204396
https://dev.windows.com/en-us/microsoft-edge/platform/status/webbluetooth
- https://webkit.org/tracking-prevention/#anti-fingerprinting
- https://bugs.webkit.org/show_bug.cgi?id=101034
Node.js ports are available: