ChromeOS Compatible - Speakermic Specification v1.3

Version: 1.3
Last updated: 2024-09-06

Legend

Product Verb Development Action
"MUST" Mandatory product requirement
"SHOULD" Optional recommendation
"MAY" Nice to have

Overview

This document describes the requirements a ChromeOS Compatible USB+Bluetooth speaker-mic meets. This specification is not for WWCB products, nor for a product designed and certified together with a Chromebook.

USB

Security

2.4 GHz Wireless Dongle

  • The 2.4 GHz wireless device only auto-pairs with the receiver (dongle) that comes with the box.
  • User action (either on the device or via an app) is required to pair headset with another receiver or pair new headset with existing receiver.
  • If an app is required to alter headset/receiver pairing, the app must run on ChromeOS, such as via an extension. The app can also be a web app using WebUSB/WebHID.
  • If the pairing is implemented via an extension, the extension must only have access to USB ports. Content scripts are explicitly disallowed.

Firmware and Connector

  • Headset must be declared as an audio device with a correct audio interface (0x01) descriptor.
    • There must be one corresponding descriptor for both input and output terminal.
  • If it has any button, it has to be declared as an HID.
  • The headset must meet the WWCB Firmware and Connector requirements.

Software

Format

Please refer to Audio Format.

For device have both input and output Audio Interface Descriptor.

  • Example of Audio Interface Descriptor

    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
    

If the sample rates of the input and output are different, the device must be able to support playback and capture at different sample rates at the same time. Otherwise, the device must reflect the same value in the AudioStreaming Interface Descriptor -> tSamFreq.

  • Example of 48k USB audio output sample rate

    AudioStreaming Interface Descriptor:
      bLength                11
      bDescriptorType        36
      bDescriptorSubtype      2 (FORMAT_TYPE)
      bFormatType             1 (FORMAT_TYPE_I)
      bNrChannels             2
      bSubframeSize           2
      bBitResolution         16
      bSamFreqType            1 Discrete
      tSamFreq[ 0]        48000
    Endpoint Descriptor:
      bLength                 9
      bDescriptorType         5
      bEndpointAddress     0x02  EP 2 OUT(Output)
      bmAttributes            9
        Transfer Type            Isochronous
        Synch Type               Adaptive
        Usage Type               Data
    
  • Example of 44.1k USB audio input sample rate

    AudioStreaming Interface Descriptor:
      bLength                11
      bDescriptorType        36
      bDescriptorSubtype      2 (FORMAT_TYPE)
      bFormatType             1 (FORMAT_TYPE_I)
      bNrChannels             2
      bSubframeSize           2
      bBitResolution         16
      bSamFreqType            1 Discrete
      tSamFreq[ 0]        44100
    Endpoint Descriptor:
      bLength                 9
      bDescriptorType         5
      bEndpointAddress     0x81  EP 1 In(Input)
      bmAttributes            9
        Transfer Type            Isochronous
        Synch Type               Adaptive
        Usage Type               Data
    

HID Codes

  • For each HID event, it can only transmit one event once a time.
  • The correct event code and corresponding event code should be received when the button is pressed.
    • For example, increase the volume. evtest can only observe one volume up event and the code must be KEY_VOLUME_UP.
  • If there is any interface designed to provide following functionalities, the USB peripheral must support emitting or receiving the corresponding HID events according to USB.org HID specification.
Consumer Page (0x0c)
Key Name HID usage ID Usage Type
KEY_PLAY 0x0b0 OOC
KEY_PAUSE 0x0b1 OOC
KEY_NEXTSONG 0x0b5 OSC
KEY_PREVIOUSSONG 0x0b6 OSC
KEY_STOPCD 0x0b7 OSC
KEY_PLAYPAUSE 0x0cd OSC
KEY_PREVIOUSSONG 0x0b6 OSC
KEY_MUTE 0x0e2 OOC
KEY_VOLUMEUP 0x0e9 RTC
KEY_VOLUMEDOWN 0x0ea RTC
Telephony Page (0x0b)
Key Name HID usage ID Usage Type
Hook Switch 0x20 OOC
Ringer 0x9e OOC
LED Page (0x08)
Key Name HID usage ID Usage Type
Mute 0x09 OOC
Off-Hook 0x17 OOC
Ring 0x18 OOC

Jack Detection

If a USB device does not support USB Audio Class (UAC), it will always show an output node in the ChromeOS system tray. However, if the USB device supports UAC, the system will be able to correctly detect a 3.5mm audio jack when the device is inserted.

  • CrOS Must use presence detection for 3.5mm jacks

General Bluetooth Requirements

Refer to ChromeOS Compatible - Bluetooth Specification.

Audio Format

Playback Recording
Sample rate ≥ 16 kHz ≥ 16 kHz
Format S16_LE S16_LE
  • The channel number and configuration must be correct.
  • All sampling rates the headset declares supported must work correctly.
    • The deviation between measured rate and sampling rate must be ≤ 0.1% .
    • The standard error for linear regression of measured rate must be < 30.
  • The headset must support playback or capture under different sample rates it asserts to support.

    For example, play audio under 44.1 kHz but capture voice under 48 kHz simultaneously.

    • Otherwise, it requires ChromeOS to add a specific configuration file to prevent it on the system side.

Audio Quality

Capture Path - Mute

  • If there is any interface for users to mute the audio device, it must
    • Maintain the mute state in a way that is not affected by:
      • Opening and closing the device.
      • Switching to another input device.
  • If the user presses the mute button on the headset or ChromeOS, the mute state must change.
  • If the mute state changes, the mute state indicator (eg:LED) on the headset must change.

Audio Latency

Latency

  • Output Latency
    • Audio playback must begin ≤500 ms after a user action that initiates playback.
      • May request a waiver if the device OEM can prove that no echo is introduced when it fails this requirement.

A/V Sync

  • Audio playback should be synchronized with video playback. Audio playback may lead the video by ≤25 ms or trail the video by ≤95 ms.

Revision History

Date Version Notes
2024-09-06 1.3 ChromeOS Compatible spec derived. Initial Partner Site Publication.
2022-09-14 1.2 Updated to v1.2.
2022-08-19 1.1 Updated to v1.1.
2022-08-18 1.0 Related WWCB specification created.