MuseBleDevice
MuseBleDevice is the low-level Web Bluetooth class that handles device pairing, GATT characteristic subscriptions, and packet decoding. BleTransport wraps it to provide the normalized HeadbandTransport interface.
You typically don’t use MuseBleDevice directly — use BleTransport instead.
Supported Protocols
Protocol is auto-detected during connection based on device characteristics.
Classic Protocol
Classic Muse headbands expose 4 EEG channels at 256 Hz. Each channel has its own GATT characteristic:
PPG is available on 3 additional characteristics (
PPG1, PPG2, PPG3).
Athena Protocol
Athena headbands use a different packet format with two main characteristics:
Athena requires a decoder factory. Without one, connection will fail:
MuseDeviceOptions
MuseBoardInfo
Returned bygetBoardInfo() after connection:
Browser Compatibility
Safari/iOS Workarounds
Three strategies for iOS support:- Native app shell (recommended): implement BLE in Swift with CoreBluetooth, bridge frames to web UI
- Companion bridge: native app streams frames over WebSocket/WebRTC to the web app
- Hybrid WebView:
WKWebViewwith native message handlers for BLE
HeadbandFrameV1 schema as the interface boundary so browser and native transports emit the same frame shape.