ChromeOS Compatible - Mice Specification v1.0

Version: 1.0.1
Last Updated: 2024-01-31

Legend

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

Overview

This specification document describes the criteria that a ChromeOS Compatible mouse meets. This specification should not be used for WWCB products, or a product designed and certified together with a Chromebook.

This document applies to mice only and does not include trackpads or trackballs.

Security Requirements

Firmware Updater

  • If a wireless mouse supports Bluetooth it SHOULD support firmware update.
  • If a wireless mouse supports 2.4 GHz dongle it SHOULD support firmware update.
  • The mouse SHOULD perform firmware updates through fwupd.
    • Rationale: Doing so allows updates to be seamless to the user during a standard ChromeOS update (typically every 6 weeks).
    • Note: It's important to ensure peripherals can be patched if vulnerabilities are discovered in the future. Note: A peripheral with known vulnerabilities will be blocked from connecting with ChromeOS devices.
    • Note: Wired mice that do not support Bluetooth or a 2.4 GHz Dongle are exempt from supporting firmware updatability.

Connectivity

  • The wireless mouse MUST support connecting with the ChromeOS device using one or both of:
    • Bluetooth
    • 2.4 GHz Wireless dongle

2.4 GHz Wireless Dongle

A Mice that comes with a 2.4 GHz wireless receiver (dongle) automatically pairs with (and only with) that receiver. User action (either on the device or via an app) is required to pair the mice with another receiver or pair a new mice with an existing receiver. The following requirements detail this functionality.

  • A 2.4 GHz wireless mouse is packaged together with a receiver, the receiver MUST support connecting to the ChromeOS device via USB-A or USB-C.
  • A 2.4 GHz wireless mouse is packaged together with a receiver, then the mice MUST auto-pair with the receiver packaged with the mice.
  • A 2.4 GHz wireless mouse that is packaged together with a receiver MUST auto-pair only with the receiver packaged with the mice.
  • The 2.4 GHz mice MAY allow the user to pair the mice with another receiver.
  • The receiver MAY allow the user to pair another 2.4 GHz mouse with the receiver.
  • The mice MAY rely on an app for user-initiated pairing with other receivers.
  • The receiver MAY rely on an app for user-initiated pairing with other mice.
  • If an app is required to alter mice/receiver pairing, then the app MUST run on ChromeOS.
  • If a pairing app is used, the pairing app SHOULD be a ChromeOS native app.
    • Note: Chrome Extensions are often used to support configuration of hardware and accessories.
  • The device MAY rely on a progressive web app (PWA) using WebUSB or WebHID for customization.
  • If a pairing app is used, the pairing app MAY be a web app using WebUSB or WebHID.
  • If pairing is implemented via an extension, then the extension MUST ONLY have access to USB ports.

Bluetooth

  • If a wireless keyboard supports Bluetooth, the wireless keyboard MUST comply with requirements in ChromeOS Compatible Bluetooth Requirements. Specifically, the following sections:
    • Generic Bluetooth Requirements
    • Bluetooth Input Device Requirements

Connectors

Wired Mice

  • A wired mouse MUST support one of the following USB transports:
    • On-mouse USB-C receptacle
    • Captive cable with USB-A plug
    • Captive cable with USB-C plug
  • If the wired mouse supports on-device USB-C receptacle, the USB-C receptacle MUST comply with Section 4.5.1.3.2 Sink Configuration Channel Functional Model.
  • If the wired mouse supports on-device USB-C receptacle, the USB-C receptacle MUST comply with Figure 4-9 Sink Functional Model for CC1 and CC2.
  • If the wired mouse supports captive cable with USB-A plug, the product bundle SHOULD include a compliant USB Type-C to USB 3.1 Standard-A Receptacle Adapter (USB Type-C Specification Section 3.6.1).
  • If the wired mouse supports captive cable with USB-C plug, the USB-C plug MUST comply with USB Type-C Specification Section 4.5.2 CC Functional and Behavioral Requirements.

    • Note: specifically the rules around direct connect device or device with captive cable.

    (These devices shall apply and sense CC voltage levels on pin A5 only).

  • If the wired mouse supports captive cable with USB-C plug, the mouse MUST NOT include a passive USB Type-C Receptacle to USB-A adapter.

    • Rationale: USB Type-C Receptacle to USB-A adapters are forbidden by the USB Type-C Specification Section 2.2.
  • If the product bundle includes a USB cable, the cable SHOULD be USB-IF certified.

Hardware and Visual Design

Scroll Mechanism

  • The mouse MAY have a scrolling mechanism.
    • Note: A scrolling mechanism includes a scroll wheel, multi-touch surface, etc.

Buttons

  • The mouse SHOULD be able to generate left and right click either via two separate buttons or a single multi-touch click/haptic surface.
  • The mouse MAY have buttons that perform actions listed in our universal keycode library.

Surface tracking

  • If a mouse's CPI is fixed, the mouse's CPI SHOULD be equal to 800 CPI.
  • If the CPI of a mouse is variable, the mouse SHOULD have a CPI option within the range of 800 to 1500.

Low power mode

  • When the mouse experiences a period of no activity, the mouse SHOULD go into a lower power mode.
    • Note: A lower power mode is achieved by reducing the scan rate.
  • When the user moves the mouse, it SHOULD communicate movement events to the ChromeOS device within 30ms.
    • Rationale: 30ms is considered to be a good maximum response time, before user experience decreases.

Software

Vendor and Product IDs

  • The vendor ID reported by the mouse over all protocols MUST belong to the manufacturer.
  • The vendor/product ID combinations(s) reported by the mouse MUST be unique from other mice models.
  • If multiple variants exist of the same mice model, they SHOULD all share the same HID descriptor.
  • If variants of the same mice model have different HID descriptors, each variation of HID descriptor MUST map to a unique product ID.

Kernel

  • If a custom kernel driver is used, it MUST be checked into upstream Linux
  • If a custom kernel driver is used, it MUST be backported to Chromium OS kernels 4.4 and above.
  • When a mouse is switched off or disconnected, the kernel MUST remove the mouse from the collection of input devices.

Buttons

  • The left button MUST report BTN_LEFT.
  • The middle button MUST report BTN_MIDDLE.
  • The right button MUST report BTN_RIGHT.
  • If the mouse contains a button with a default function, the mouse MUST report the default function using a corresponding KEY_ or BTN_ code outlined in the linux kernel.
    • The mouse SHOULD only report a key if it is physically present on the mouse, or can be mapped to one of the mouse's buttons using a configuration tool
  • The mouse MUST not report a full 104 key keyboard interface.

Charging

As wired mice typically do not require charging, this section may be understood to apply only to wireless mice.

  • If the mouse uses a rechargeable battery, the mouse SHOULD support recharging by using the USB-C or Micro-USB ports.
  • If the mouse includes a USB-C charger, the charger SHOULD be USB-IF certified.
  • If the mouse includes a USB-C cable, the cable SHOULD be USB-IF certified.

Revision History

Date Version Notes
2024-02-01 1.0.1 Republication on a new platform
2023-05-19 1.0 Initial Partner Site Publication