ChromeOS Compatible - Webcams Specification v1.3

Version: 1.3.1
Last updated: 2024-02-01

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 external webcam meets. This specification is not for WWCB products, nor for a product designed and certified together with a Chromebook.

Webcam Types

This document covers normal USB webcams, focused on video conferencing.

It does not cover more specialized products that support UVC and work like a camera from the software point of view. Some examples of specialized imaging products include:

  • IR camera
  • RGB camera
  • Document camera
  • HDMI capture adapter
  • Microscope

Hardware and Packaging

  • The camera MUST support USB version 2.0 and above.
  • The USB camera MUST support being connected to a USB 2.0 Type-A receptacle.
  • The USB camera MUST support being connected to a USB Type-C receptacle. Rationale: All Chromebooks must have a USB-C port; USB-A is optional.
  • The USB camera SHOULD have a USB Type-C receptacle for use with a detachable USB cable.
  • The USB camera SHOULD connect to the Chrome device using a USB C-to-A cable.
  • The USB camera MAY connect to the Chrome device using a USB C-to-A adapter.
  • If the USB camera includes a USB cable, then the cable SHOULD have USB-IF certification.
  • If the USB camera includes a USB conversion adapter, then the adapter MUST satisfy the ChromeOS Compatible specification for connectors.1
  • If the USB camera includes a USB cable, then the cable MAY support USB 3 data rates.
  • The USB camera SHOULD have a camera activity indicator.
  • The camera activity indicator SHOULD be an LED.
  • The camera activity indicator MUST be in the active state when the camera is sending data to the ChromeOS host device.
  • The camera activity indicator MUST be in the active state when the camera is saving data to its internal memory.
  • The camera activity indicator MUST NOT be in the active state when the camera is not saving data or sending data to the host.
  • The camera activity indicator MUST NOT be controllable independently of the camera.
  • The camera activity indicator MUST NOT be controllable by software.
  • The USB camera MAY have a microphone.
  • The USB camera SHOULD have a privacy mechanism.
  • The privacy mechanism SHOULD include a physical cover that blocks the lens.
  • The privacy mechanism MAY include an electronic shutter that blocks the lens.
  • The privacy mechanism MUST include a physical privacy switch that is closed when privacy is selected.
  • The state of the privacy switch MUST be communicated to the ChromeOS host device.

Power Requirements

  • The USB camera MUST respect power restrictions in order of precedence outlined in USB Type-C spec:
    • (if capable) USB3 hosts shall not be overcurrented beyond enumerated configuration
    • USB2 hosts shall not be overcurrented beyond enumerated configuration
  • As a general guideline:
    • USB2 devices shall not draw more than 500mA (instantaneous or sustained)
    • USB3 devices shall not draw more than 900mA (instantaneous or sustained)
    • Stricter limits may apply on power-limited hosts per USB spec[^power limit]

Electrical Requirements

USB Type-C Requirements

  • USB-C receptacle design must use two independent Rd pulldowns for CC1 and CC2
    • (shorted together CC1 and CC2 are not allowed).
  • USB-C captive cable design must use exactly one Rd pulldown.
  • Vbus must not be overcurrented on inrush with spec-compliant slew rates.

OCP protection

  • Must not cause overcurrent event on Vconn or VBUS due to:
    • Bulk inrush capacitance on Vbus
    • Activation inrush on Vbus
    • Bulk inrush capacitance on Vconn
    • Activation inrush on Vconn

USB video class (UVC)

  • The USB camera MUST support UVC (USB Video Class) 1.0 or later.
  • The USB camera MUST work with the Chromebook without any additional software.
    • ChromeOS includes the uvcvideo linux driver.
  • The USB camera MUST support streaming 1280x720 at 30 fps with MJPEG format.
  • The USB camera MUST support auto white balance (AWB).
  • The USB camera MUST support auto exposure (AE).
  • The USB camera MUST support anti-banding for 50 Hz and 60 Hz power line frequency.
  • The USB camera MUST start streaming the first frame in 2000 ms.
  • The USB camera MUST report monotonic timestamps.
  • The USB camera SHOULD start streaming the first frame in 500ms.
  • The USB camera SHOULD support auto focus (AF).
  • The USB camera SHOULD support streaming 640x480.
  • The USB camera SHOULD support streaming 640x360.
  • The USB camera SHOULD support streaming at 24 fps.
  • The USB camera SHOULD advertise a user friendly display name.
  • The USB camera SHOULD support constant frame rate control (V4L2_CID_EXPOSURE_AUTO_PRIORITY/UVC_CT_AE_PRIORITY_CONTROL).
  • The USB camera SHOULD keep streaming with >= 15fps in low-light environments.
  • The USB camera MAY support pan, tilt, or zoom (PTZ) controls.

    • If the USB camera supports any PTZ controls, then the camera MUST support Zoom control (V4L2_CID_ZOOM_ABSOLUTE) with (value / 100) as the zoom ratio.
      • For example, 250 control value means 2.5x = 250%, and 100 means the normal value without zooming, which must be the default.
    • If the USB camera supports any PTZ controls, then the camera MUST support Pan and Tilt controls together.
    • For all formats and resolutions supported by the camera, the USB camera SHOULD work normally with a single [min, max] range exposed by V4L2_CID_ZOOM_ABSOLUTE control.
      • For example, the maximum zoom ratio SHOULD be the same for 720p and 1080p streaming.
  • If the USB camera includes a physical privacy shutter or kill switch, then the camera MAY implement V4L2_CID_PRIVACY/UVC_CT_PRIVACY_CONTROL.

  • If the USB camera supports V4L2_CID_PRIVACY/UVC_CT_PRIVACY_CONTROL then it MUST expose the privacy control state according to the physical shutter/switch.

  • If the USB camera supports V4L2_CID_PRIVACY/UVC_CT_PRIVACY_CONTROL then it MUST not report privacy control as "On" when the physical shutter/switch is not in use, even if the lens is covered by other objects such as hands or stickers.

  • If the USB camera supports V4L2_CID_PRIVACY/UVC_CT_PRIVACY_CONTROL then it MUST be able to be queried and return a valid value when the camera is streaming or idle (streamon/streamoff).

  • The privacy shutter/kill switch MUST NOT be modifiable by the AP. The physical switch MUST be only restored with a physical interaction.

  • The USB camera SHOULD support privacy control if there is a physical privacy shutter or kill switch.

  • The USB camera SHOULD support USB suspend. If the device supports USB suspend:

    • If the USB camera supports USB suspend, then the camera MUST be able to resume and produce valid frames without any quirk (device-specific workaround) from the system, such as UVC_QUIRK_WAKE_AUTOSUSPEND.
  • The USB camera MUST NOT output invalid MJPEG frames.

  • The USB camera MUST NOT hang when switching resolutions dynamically.

Audio - Microphone

This section is only applicable if the webcam has a built-in microphone.

Format

  • For both playback and recording
    • The supported sample rate should be >= 16k
    • Support S16_LE format
  • 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.1k but capture voice under 48k simultaneously.
      • Otherwise, it requires ChromeOS to add a specific configuration file to prevent it on the system side.

Mute

  • 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 a user interface indicating the headset's mute state is provided, it should change correspondingly when the state changes.

Volume (Frequency Response)

  • Output Frequency Response (MAY)
    • The frequency response requirement is required for users to use the headset without any manual adjustment of the capture gain.
    • For BT, USB device
    • The computed average RMS dBFS level output for the speech sample under 94dBSPL must satisfy
      • In range of [-15, -5] dBFS under 1k sine tone.
        • The value will be used as a reference points for 4k and 7k sine tone
      • In the range of ±5 dB of the 1k response reference under 4k and 7k sine tone.
        • This is to secure an acceptable flat frequency response
    • For 3.5 mm devices, the frequency response requirement is required for users to use the headset without any manual adjustment of the capture gain.
      • The computed average RMS dBFS level output for the 1k, 4k and 7k sine tone under signal level 94dBSPL
      • dBSPL should be in the range of 0 to -23 dBFS.

A/V Sync

  • A/V Sync
    • The amount of time the audio departs from perfect synchronization.
    • The deviation should be -95 ms to 25 ms.
      • Note:
        • (+) Audio is faster than video
        • (-) Audio is lower than video

App Compatibility

  • The USB camera MUST work with the Google Meet web version.
    • The USB camera MUST be recognized by Meet when joining a meeting for the first time.
  • The USB camera MUST work with the built-in ChromeOS camera app.
  • If the USB camera has a built-in microphone, the video and audio must be synchronized.
  • The USB camera SHOULD support firmware updates via fwupd.

Revision History

Date Version Notes
2024-02-01 1.3.1 Republication on a new platform
2023-11-08 1.3 Initial Partner Site Publication

  1. This page will be linked when it becomes available.