Skip to content

Latest commit

 

History

History
119 lines (97 loc) · 8.33 KB

implementation-status.md

File metadata and controls

119 lines (97 loc) · 8.33 KB

Implementation Status

This document shows the implementation status of Web Bluetooth on the different browsers.

Chrome browser logoSamsung Internet browser logoOpera browser logoServo browser logoFirefox browser logoMicrosoft Edge browser logoSafari browser logo

Chrome

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() and watchAdvertisements() APIs are behind the chrome://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 🚩 🚩

Implementation issue

Tip: Chrome channel releases are tracked at https://googlechromelabs.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
  • Windows: Requires Windows 10 version 1706 (Creators Update) or later.

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.

Samsung Internet

In Samsung Internet v6.4, the GATT Communication API is shipped without any flag.

Opera

Available behind a flag opera://flags/#enable-web-bluetooth.

Servo

https://szeged.github.io/servo/

Firefox

Microsoft Edge

https://dev.windows.com/en-us/microsoft-edge/platform/status/webbluetooth

Safari

Node.js

Node.js ports are available: