Intent to Ship: Web Serial support for Bluetooth RFCOMM services

212 views
Skip to first unread message

Ajay Rahatekar

unread,
Jul 25, 2023, 4:47:30 PM7/25/23
to blink-dev, Reilly Grant, mattre...@chromium.org, melh...@chromium.org

Contact emails

mattre...@chromium.org, melh...@chromium.org

 

Explainer

https://github.com/WICG/serial/blob/main/EXPLAINER_BLUETOOTH.md


Specification

https://github.com/WICG/serial/pull/189


Summary

Support Bluetooth RFCOMM services in the Web Serial API. The Bluetooth RFCOMM (Radio frequency communication) protocol provides emulated RS-232 serial ports. This feature enables applications to make connections to RFCOMM services on paired Bluetooth Classic devices using the Web Serial API.


Blink component

Blink>Serial


TAG review

https://github.com/w3ctag/design-reviews/issues/854


TAG review status

Pending


Risks



Interoperability and Compatibility

Web Serial API is only implemented in Chromium. Other browser vendors have expressed negative views regarding the API and are unlikely to implement it.


This feature will not affect compatibility in existing apps. The feature only adds support for connecting to new types of devices. There are no changes for currently-supported devices.


Gecko: Negative (https://github.com/mozilla/standards-positions/issues/687) Previous thread: https://github.com/mozilla/standards-positions/issues/336


WebKit: Negative (https://github.com/WebKit/standards-positions/issues/199) See also: https://webkit.org/tracking-prevention/


Web developers: Positive (https://bugs.chromium.org/p/chromium/issues/detail?id=1043300) Other Web developers have asked for this feature privately.


Other signals:


Activation

Developers can take advantage of this feature immediately. A polyfill is not possible because Bluetooth Classic devices cannot be accessed through any other web platform API.


Security

See https://github.com/WICG/serial/blob/main/security-privacy-questionnaire-bluetooth-rfcomm.md and Security Considerations in https://github.com/WICG/serial/blob/main/EXPLAINER_BLUETOOTH.md


WebView application risks

N/A



Debuggability

Debuggability is identical to wired serial ports.


Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?

No, this feature will be supported on desktop platforms only to begin with, matching the existing state of support for the Web Serial API. Support for Android could be added in the future since unlike USB serial devices, Android provides an API for Bluetooth RFCOMM.


Is this feature fully tested by web-platform-tests?

No, the majority of this extension to the API is implemented in the browser process (connecting to Bluetooth devices through the native platform APIs) and so isn’t testable with WPT. 


Flag name

chrome://flags#enable-bluetooth-spp-in-serial-api


Requires code in //chrome?

Yes


Tracking bug

https://bugs.chromium.org/p/chromium/issues/detail?id=1043300


Launch bug

https://launch.corp.google.com/launch/4232649


Estimated milestones

117


Anticipated spec changes

None


Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5686596809523200


Links to previous Intent discussions

Intent to prototype: https://groups.google.com/a/chromium.org/g/blink-dev/c/kOOZ3RIh0Ik


This intent message was generated by Chrome Platform Status.



Alex Russell

unread,
Jul 26, 2023, 12:05:18 PM7/26/23
to blink-dev, ajayra...@google.com, Reilly Grant, Matt Reynolds, melh...@chromium.org
I'm going to have to stay recused on this vote, but just want to lend my fullest non-voting support to shipping ASAP. This is excellent work, and I can see you've dotted i's and crossed t's in anticipation of a full shakedown here. Thanks for doing it.

It might be helpful for others evaluating the proposal to have a demo or video to look at regarding the permissions UI/UX that this will sit behind; is it possible to add something like that to your Explainer? And are there users who can vouch for the utility of this feature for their use-cases?

Thanks,

Alex

Reilly Grant

unread,
Jul 26, 2023, 12:55:25 PM7/26/23
to Alex Russell, blink-dev, ajayra...@google.com, melh...@chromium.org
On Wed, Jul 26, 2023 at 9:05 AM Alex Russell <sligh...@chromium.org> wrote:
I'm going to have to stay recused on this vote, but just want to lend my fullest non-voting support to shipping ASAP. This is excellent work, and I can see you've dotted i's and crossed t's in anticipation of a full shakedown here. Thanks for doing it.

It might be helpful for others evaluating the proposal to have a demo or video to look at regarding the permissions UI/UX that this will sit behind; is it possible to add something like that to your Explainer? And are there users who can vouch for the utility of this feature for their use-cases?

Unfortunately the hardware our partner is working on is still confidential so I can't share a real-world use case. They're very excited about being able to use a web app. We can put together a demo video with a generic Bluetooth serial device but it will be pretty boring because the permissions UI looks identical to selecting a wired serial port. We only support connecting to devices that are already paired with the system so it doesn't use the more complex scanning UX that you see for Web Bluetooth.  

Alex Russell

unread,
Jul 26, 2023, 1:03:51 PM7/26/23
to blink-dev, Reilly Grant, blink-dev, ajayra...@google.com, Matt Reynolds, Alex Russell
A screenshot would go a long way.

Exciting to hear there's a partner that want this.

Also, was there consideration of an OT? A strong reason to avoid?

On Wednesday, July 26, 2023 at 9:55:25 AM UTC-7 Reilly Grant wrote:
On Wed, Jul 26, 2023 at 9:05 AM Alex Russell <sligh...@chromium.org> wrote:
I'm going to have to stay recused on this vote, but just want to lend my fullest non-voting support to shipping ASAP. This is excellent work, and I can see you've dotted i's and crossed t's in anticipation of a full shakedown here. Thanks for doing it.

It might be helpful for others evaluating the proposal to have a demo or video to look at regarding the permissions UI/UX that this will sit behind; is it possible to add something like that to your Explainer? And are there users who can vouch for the utility of this feature for their use-cases?

Unfortunately the hardware our partner is working on is still confidential so I can't share a real-worldᅠuse case. They're very excited about being able to use a web app. We can put together a demo video with a generic Bluetooth serial device but it will be pretty boring because theᅠpermissions UIᅠlooks identical toᅠselecting a wired serial port. We only support connecting to devices that are already paired with the system so it doesn't use the more complex scanning UX that you see for Web Bluetooth.ᅠᅠ

Reilly Grant

unread,
Jul 26, 2023, 4:02:00 PM7/26/23
to Alex Russell, blink-dev, ajayra...@google.com, Matt Reynolds
On Wed, Jul 26, 2023 at 10:03 AM Alex Russell <sligh...@chromium.org> wrote:
A screenshot would go a long way.

Exciting to hear there's a partner that want this.

Also, was there consideration of an OT? A strong reason to avoid?

The change to the API is very small and we had strong developer feedback during development that the API worked for them. I also feel that this kind of feature is a poor fit for an Origin Trial because it's not something where you can measure the impact with or without the capability as the capability is fundamentally necessary for the existence of the web app. At that point the only benefit of an OT would be to ship an end-user application early, but it wouldn't be a true experiment.

Alex Russell

unread,
Jul 26, 2023, 4:20:42 PM7/26/23
to blink-dev, Reilly Grant, blink-dev, ajayra...@google.com, Matt Reynolds, Alex Russell
Sounds good; thanks for explaining.

On Wednesday, July 26, 2023 at 1:02:00 PM UTC-7 Reilly Grant wrote:
On Wed, Jul 26, 2023 at 10:03 AM Alex Russell <sligh...@chromium.org> wrote:
A screenshot would go a long way.

Exciting to hear there's a partner that want this.

Also, was there consideration of an OT? A strong reason to avoid?

The change to the API is very small and we had strong developer feedback during development that the API worked for them. I also feel that this kind of feature is a poor fit for an Origin Trial because it's not something where you can measure the impact with or without the capability as the capability is fundamentallyᅠnecessary for the existenceᅠof the web app. At that point the only benefit of an OT would be to ship an end-user application early, but it wouldn't be a true experiment.

Mike Taylor

unread,
Jul 26, 2023, 5:13:16 PM7/26/23
to Alex Russell, blink-dev, Reilly Grant, ajayra...@google.com, Matt Reynolds

LGTM1 - thanks for the well-written explainer.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/07d9fd57-e4c6-49d9-afac-5adc1c905eabn%40chromium.org.

Matt Reynolds

unread,
Jul 26, 2023, 6:29:21 PM7/26/23
to Mike Taylor, Alex Russell, blink-dev, Reilly Grant, ajayra...@google.com
Here's a short demo video that shows the permission UI:

https://drive.google.com/file/d/1Y_Ito9P-EourYa7ofL_qQMOmmvBIhwpT/view

Demo source:

https://nondebug.github.io/bluetooth-serial-port-demo/

Off-screen I connected a HC-06 wireless Bluetooth serial transceiver to a USB serial adapter. The demo uses Web Serial API to connect to both devices, then sends data over USB and shows that it is received from the HC-06 over Bluetooth.

Mike Taylor

unread,
Jul 27, 2023, 12:03:01 PM7/27/23
to Matt Reynolds, Alex Russell, blink-dev, Reilly Grant, ajayra...@google.com

LGTM1 to ship.

(I'll leave you to figure out why the BT Serial port sometimes sent "2:59:NN PM" and sometimes received ":59:NN PM" :))

Reilly Grant

unread,
Jul 27, 2023, 1:06:37 PM7/27/23
to Mike Taylor, Matt Reynolds, Alex Russell, blink-dev, ajayra...@google.com
That behavior is to be expected. The "2" and ":59:NN PM" are being received as separate events based on how the converter chips decide to pack serial data (which arrives one byte at a time) into Bluetooth or USB packets which contain multiple bytes.
Reilly Grant | Software Engineer | rei...@chromium.org | Google Chrome

Balazs Engedy

unread,
Aug 1, 2023, 9:01:55 AM8/1/23
to blink-dev, Reilly Grant, Matt Reynolds, Alex Russell, blink-dev, ajayra...@google.com, Mike Taylor
For clarity, are the per-device permissions persisted across visits? If so, what device attribute(s) do we use to form a device identifier to key that permission on?

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

Reilly Grant

unread,
Aug 1, 2023, 12:40:59 PM8/1/23
to Balazs Engedy, blink-dev, Matt Reynolds, Alex Russell, ajayra...@google.com, Mike Taylor
On Tue, Aug 1, 2023, 06:01 Balazs Engedy <eng...@chromium.org> wrote:
For clarity, are the per-device permissions persisted across visits? If so, what device attribute(s) do we use to form a device identifier to key that permission on?

Yes, the Bluetooth device MAC address.

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.

Ajay Rahatekar

unread,
Aug 1, 2023, 5:48:37 PM8/1/23
to blink-dev, rei...@chromium.org, blink-dev, mattre...@chromium.org, sligh...@chromium.org, Ajay Rahatekar, mike...@chromium.org, Balazs Engedy
Hello API Owners,

Please let us know if there are any questions we can answer. This feature is planned to ship in M117 (branching Aug 8).  Requesting approval to ship. Thanks in advance.

-Ajay 

Chris Harrelson

unread,
Aug 2, 2023, 11:52:29 AM8/2/23
to Ajay Rahatekar, blink-dev, rei...@chromium.org, mattre...@chromium.org, sligh...@chromium.org, mike...@chromium.org, Balazs Engedy

Daniel Bratell

unread,
Aug 2, 2023, 11:53:53 AM8/2/23
to Chris Harrelson, Ajay Rahatekar, blink-dev, rei...@chromium.org, mattre...@chromium.org, sligh...@chromium.org, mike...@chromium.org, Balazs Engedy

Ajay Rahatekar

unread,
Aug 2, 2023, 12:02:30 PM8/2/23
to blink-dev, Daniel Bratell, blink-dev, rei...@chromium.org, mattre...@chromium.org, sligh...@chromium.org, mike...@chromium.org, Balazs Engedy, Chris Harrelson, Ajay Rahatekar
Thank you all for your comments and review.

-Ajay

Reply all
Reply to author
Forward
0 new messages