chrome.bluetooth

Description

Use the chrome.bluetooth API to connect to a Bluetooth device. All functions report failures via chrome.runtime.lastError.

Manifest

The following keys must be declared in the manifest to use this API.

"bluetooth"

Types

AdapterState

Properties

  • address

    string

    The address of the adapter, in the format 'XX:XX:XX:XX:XX:XX'.

  • available

    boolean

    Indicates whether or not the adapter is available (i.e. enabled).

  • discovering

    boolean

    Indicates whether or not the adapter is currently discovering.

  • name

    string

    The human-readable name of the adapter.

  • powered

    boolean

    Indicates whether or not the adapter has power.

BluetoothFilter

Chrome 67+

Properties

  • filterType

    FilterType optional

    Type of filter to apply to the device list. Default is all.

  • limit

    number optional

    Maximum number of bluetooth devices to return. Default is 0 (no limit) if unspecified.

Device

Properties

  • address

    string

    The address of the device, in the format 'XX:XX:XX:XX:XX:XX'.

  • batteryPercentage

    number optional

    Chrome 77+

    The remaining battery of the device.

  • connectable

    boolean optional

    Chrome 48+

    Indicates whether the device is connectable.

  • connected

    boolean optional

    Indicates whether the device is currently connected to the system.

  • connecting

    boolean optional

    Chrome 48+

    Indicates whether the device is currently connecting to the system.

  • deviceClass

    number optional

    The class of the device, a bit-field defined by http://www.bluetooth.org/en-us/specification/assigned-numbers/baseband.

  • deviceId

    number optional

  • inquiryRssi

    number optional

    Chrome 44+

    The received signal strength, in dBm. This field is avaliable and valid only during discovery. Outside of discovery it's value is not specified.

  • inquiryTxPower

    number optional

    Chrome 44+

    The transmitted power level. This field is avaliable only for LE devices that include this field in AD. It is avaliable and valid only during discovery.

  • name

    string optional

    The human-readable name of the device.

  • paired

    boolean optional

    Indicates whether or not the device is paired with the system.

  • productId

    number optional

  • transport

    Transport optional

    Chrome 76+

    The transport type of the bluetooth device.

  • type

    DeviceType optional

    The type of the device, if recognized by Chrome. This is obtained from the deviceClass field and only represents a small fraction of the possible device types. When in doubt you should use the deviceClass field directly.

  • uuids

    string[] optional

    UUIDs of protocols, profiles and services advertised by the device. For classic Bluetooth devices, this list is obtained from EIR data and SDP tables. For Low Energy devices, this list is obtained from AD and GATT primary services. For dual mode devices this may be obtained from both.

  • vendorId

    number optional

  • vendorIdSource

    VendorIdSource optional

    The Device ID record of the device, where available.

DeviceType

Common device types recognized by Chrome.

Enum

"computer"

"phone"

"modem"

"audio"

"carAudio"

"video"

"peripheral"

"joystick"

"gamepad"

"keyboard"

"mouse"

"tablet"

"keyboardMouseCombo"

FilterType

Chrome 67+

Types for filtering bluetooth devices.

Enum

"all"

"known"

Transport

Chrome 76+

Transport type of the bluetooth device.

Enum

"invalid"

"classic"

"le"

"dual"

VendorIdSource

Allocation authorities for Vendor IDs.

Enum

"bluetooth"

"usb"

Methods

getAdapterState()

Promise
chrome.bluetooth.getAdapterState(
  callback?: function,
)

Get information about the Bluetooth adapter.

Parameters

  • callback

    function optional

    The callback parameter looks like:

    (adapterInfo: AdapterState) => void

    • adapterInfo

      Object containing the adapter information.

Returns

  • Promise<AdapterState>

    Chrome 91+

    Promises are only supported for Manifest V3 and later, other platforms need to use callbacks.

getDevice()

Promise
chrome.bluetooth.getDevice(
  deviceAddress: string,
  callback?: function,
)

Get information about a Bluetooth device known to the system.

Parameters

  • deviceAddress

    string

    Address of device to get.

  • callback

    function optional

    The callback parameter looks like:

    (deviceInfo: Device) => void

    • deviceInfo

      Object containing the device information.

Returns

  • Promise<Device>

    Chrome 91+

    Promises are only supported for Manifest V3 and later, other platforms need to use callbacks.

getDevices()

Promise
chrome.bluetooth.getDevices(
  filter?: BluetoothFilter,
  callback?: function,
)

Get a list of Bluetooth devices known to the system, including paired and recently discovered devices.

Parameters

  • filter

    BluetoothFilter optional

    Chrome 67+

    Some criteria to filter the list of returned bluetooth devices. If the filter is not set or set to {}, returned device list will contain all bluetooth devices. Right now this is only supported in ChromeOS, for other platforms, a full list is returned.

  • callback

    function optional

    The callback parameter looks like:

    (deviceInfos: Device[]) => void

    • deviceInfos

      Array of object containing device information.

Returns

  • Promise<Device[]>

    Chrome 91+

    Promises are only supported for Manifest V3 and later, other platforms need to use callbacks.

startDiscovery()

Promise
chrome.bluetooth.startDiscovery(
  callback?: function,
)

Start discovery. Newly discovered devices will be returned via the onDeviceAdded event. Previously discovered devices already known to the adapter must be obtained using getDevices and will only be updated using the onDeviceChanged event if information about them changes.

Discovery will fail to start if this application has already called startDiscovery. Discovery can be resource intensive: stopDiscovery should be called as soon as possible.

Parameters

  • callback

    function optional

    The callback parameter looks like:

    () => void

Returns

  • Promise<void>

    Chrome 91+

    Promises are only supported for Manifest V3 and later, other platforms need to use callbacks.

stopDiscovery()

Promise
chrome.bluetooth.stopDiscovery(
  callback?: function,
)

Stop discovery.

Parameters

  • callback

    function optional

    The callback parameter looks like:

    () => void

Returns

  • Promise<void>

    Chrome 91+

    Promises are only supported for Manifest V3 and later, other platforms need to use callbacks.

Events

onAdapterStateChanged

chrome.bluetooth.onAdapterStateChanged.addListener(
  callback: function,
)

Fired when the state of the Bluetooth adapter changes.

Parameters

onDeviceAdded

chrome.bluetooth.onDeviceAdded.addListener(
  callback: function,
)

Fired when information about a new Bluetooth device is available.

Parameters

  • callback

    function

    The callback parameter looks like:

    (device: Device) => void

onDeviceChanged

chrome.bluetooth.onDeviceChanged.addListener(
  callback: function,
)

Fired when information about a known Bluetooth device has changed.

Parameters

  • callback

    function

    The callback parameter looks like:

    (device: Device) => void

onDeviceRemoved

chrome.bluetooth.onDeviceRemoved.addListener(
  callback: function,
)

Fired when a Bluetooth device that was previously discovered has been out of range for long enough to be considered unavailable again, and when a paired device is removed.

Parameters

  • callback

    function

    The callback parameter looks like:

    (device: Device) => void