Web Bluetooth does not function properly on Chromebooks managed by Google Workspace

Hi, everyone.

We have confirmed that Web Bluetooth via Web Assembly does not function properly on Chromebooks managed by Google Workspace. We have confirmed that it functions properly on Chromebooks not managed by Google Workspace and without restrictions.

SUMMARY

I’m building an app using Microsoft’s Blazor to create a WebAssembly application, which then uses JavaScript to access Web Bluetooth.

I have confirmed it runs without issues on my Chromebook development environment.

However, when running this app on a Chromebook in a Japanese school environment using Google Workspace with functional restrictions, the connect operation completes successfully and Characteristics are retrieved. But when sending a Request, the code freezes at that point.

(Note: The transmission itself succeeds, and the Bluetooth device receives the command.)

MINIMAL REPRODUCTION

const serviceFilter = { services: ["service GUID"] };
const option = { filters: [serviceFilter], optionalServices: ["allow GUID"] };
const device = await navigator.bluetooth.requestDevice(option);

const server = await device.gatt.connect();
const service = await server.getPrimaryServices();
const characteristics = await service[0].getCharacteristics();
const characteristic = characteristics.find(x => x.uuid == "f7fce511-7a0b-4b89-a675-a79137223e2c");

const buffer = new ArrayBuffer(1);
const byteBuffer = new Uint8Array(buffer);
byteBuffer[0] = 180;
try {
    await characteristic.writeValueWithoutResponse(byteBuffer); // Freeze!
}
catch (error) {
    console.log(error);
}
finally {
    server.disconnect();
}

DEPLOYMENT

  • Created with Microsoft Blazor (Web Assembly)
  • Runs on Chromebook
    • Issues occurred while restrictions were in place in Google Workspace administration.
    • Bluetooth is enabled in Google Workspace.
  • Communication uses BLE
    • No pairing required

WHAT HAPPENS

  • When attempting to send data using web bluetooth’s writeValueWithoutResponse, the process freezes.
  • The data transmission itself is being performed.
  • When you turn off the device’s power to forcibly disconnect the connection, the error “GATT Server is disconnected. Cannot retrieve services. (Re)connect first with device.gatt.connect” occurs shortly after disconnection.
  • No issues on Chromebooks outside of Google Workspace management

WHAT I HAVE VERIFIED

  • Functionality verified with minimal code
  • Functionality verified for both writeValueWithoutResponse and writeValueWithResponse
  • Verify on multiple devices

CONCLUSION

The portion responsible for receiving responses via Web Bluetooth may be restricted in some way.

REQUEST

I want to know which Google Workspace settings might restrict web Bluetooth.
Or I would like to know how to avoid this phenomenon.

Hey,

Hope you’re keeping well.

On Google Workspace–managed Chromebooks, Web Bluetooth behavior can be affected by admin policies set in the Admin console under Devices > Chrome > Settings > User & browser settings. Even if Bluetooth is enabled globally, certain Content and URL permissions or JavaScript API restrictions can limit navigator.bluetooth operations, especially write operations without responses. Check if Web Bluetooth API is set to “Allowed” for the organizational unit, and ensure no restrictive flags are applied via ChromeOS Device Settings > Security and Privacy such as disabling peripheral APIs or enforcing HTTPS-only contexts.

Thanks and regards,
Taz

Thanks!

I’ll check the above.