WebBluetooth in Servo

Servo » WebBluetooth » Demos »

Introduction

Servo is a modern, high-performance browser engine designed for both application and embedded use.

Sponsored by Mozilla and written in the new language Rust, the Servo project aims to achieve better parallelism, security, modularity, and performance.

Bluetooth is a standard for short-range wireless communication between devices. The Web Bluetooth Community Group is developing a specification for Bluetooth APIs to allow websites to communicate with devices in a secure and privacy-preserving way. In particular, the Web Bluetooth API focuses on minimizing the device attack surface exposed to malicious websites, possibly by removing access to some existing Bluetooth features that are hard to implement securely. Further, the API takes the approach of a user interface to select and approve access to devices as opposed to using certification and installation.


Implementation Status

Platform Prerequisites Status
Linux Requires Kernel 3.19+ and BlueZ 5.39+ installed.
You can read more about here.
Supported
Android Android 4.3 (Jelly Bean) Supported*
Windows Requires Windows 8.1. No progress
macOS/iOS N/A No progress
Important: No support for notifications or events. You can subcribe for them, but there won't be any trigger.
* No popup support on Android
Feature Status
getAvailability() Done
Referring Device (Physical Web) No progress
Discovery Done
└ Service list Done
└ Name or prefix Done
└ Manufacturer/Service data Done
└ acceptAllDevices Done
Chooser UI Done
Permission API integration Done
└ permissions.request() Done
└ permissions.query() Done
└ permissions.revoke() Done
watchAdvertisements() Partial
Persistent Device IDs No progress
GATT Server Connect Done
GATT Server Disconnect Done
Hanging connect() abortable by disconnect() No progress
GATT Advertising event Partial
getPrimaryService*() Done
getIncludedService*() Done
getCharacteristic*() Done
Characteristic Properties Done
Read Characteristic Done
Write Characteristic Done
Start GATT Notifications Partial
Stop GATT Notifications Partial
{start,stop}Notifications returns `this` Done
getDescriptor*() Done
Read Descriptor Done
Write Descriptor Done
Event bubbling Partial
Device Disconnected Event No progress
Service Changed Event No progress
BluetoothUUID Done
TypeError for bad UUIDs Done
Invalidate GATT attributes upon disconnect Done
GATT Blocklist Done
Low-latency Blocklist Updates No progress

Servo Blog

Weekly news, status about Servo.


View details »

WBT Setup

How to setup WebBluetooth.


View details »

Testing

Testing WebBluetooh features.


View details »