Stay organized with collections
Save and categorize content based on your preferences.
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:
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.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-12-18 UTC."],[[["\u003cp\u003eThis specification outlines the criteria for ChromeOS Compatible mice, focusing on security, connectivity, and hardware/software requirements.\u003c/p\u003e\n"],["\u003cp\u003eMice must support Bluetooth or a 2.4 GHz wireless dongle for connectivity and should support firmware updates through fwupd.\u003c/p\u003e\n"],["\u003cp\u003eWired mice must use USB-C or USB-A connections and adhere to USB Type-C specifications.\u003c/p\u003e\n"],["\u003cp\u003eMice should have a CPI within the range of 800 to 1500 and enter a low-power mode during inactivity.\u003c/p\u003e\n"],["\u003cp\u003eSoftware requirements include unique vendor/product IDs and adherence to kernel guidelines, with buttons reporting specific codes.\u003c/p\u003e\n"]]],[],null,["# ChromeOS Compatible - Mice Specification v1.0\n\nVersion: 1.0.1 \n\nLast Updated: 2024-01-31\n\nLegend\n------\n\n| Product Verb | Development Action |\n|--------------|-------------------------------|\n| \"MUST\" | Mandatory product requirement |\n| \"SHOULD\" | Optional recommendation |\n| \"MAY\" | Nice to have |\n\nOverview\n--------\n\nThis specification document describes the criteria that a ChromeOS Compatible\nmouse meets. This specification should not be used for WWCB products, or a\nproduct designed and certified together with a Chromebook.\n\nThis document applies to mice only and does not include trackpads or trackballs.\n\nSecurity Requirements\n---------------------\n\n### Firmware Updater\n\n- If a wireless mouse supports Bluetooth it SHOULD support firmware update.\n- If a wireless mouse supports 2.4 GHz dongle it SHOULD support firmware update.\n- The mouse SHOULD perform firmware updates through fwupd.\n - Rationale: Doing so allows updates to be seamless to the user during a standard ChromeOS update (typically every 6 weeks).\n - 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.\n - Note: Wired mice that do not support Bluetooth or a 2.4 GHz Dongle are exempt from supporting firmware updatability.\n\n### Connectivity\n\n- The wireless mouse MUST support connecting with the ChromeOS device using one or both of:\n - Bluetooth\n - 2.4 GHz Wireless dongle\n\n#### 2.4 GHz Wireless Dongle\n\nA Mice that comes with a 2.4 GHz wireless receiver (dongle) automatically pairs\nwith (and only with) that receiver. User action (either on the device or via an\napp) is required to pair the mice with another receiver or pair a new mice with\nan existing receiver. The following requirements detail this functionality.\n\n- 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.\n- 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.\n- A 2.4 GHz wireless mouse that is packaged together with a receiver MUST auto-pair only with the receiver packaged with the mice.\n- The 2.4 GHz mice MAY allow the user to pair the mice with another receiver.\n- The receiver MAY allow the user to pair another 2.4 GHz mouse with the receiver.\n- The mice MAY rely on an app for user-initiated pairing with other receivers.\n- The receiver MAY rely on an app for user-initiated pairing with other mice.\n- If an app is required to alter mice/receiver pairing, then the app MUST run on ChromeOS.\n- If a pairing app is used, the pairing app SHOULD be a ChromeOS native app.\n - Note: Chrome Extensions are often used to support configuration of hardware and accessories.\n- The device MAY rely on a progressive web app (PWA) using WebUSB or WebHID for customization.\n- If a pairing app is used, the pairing app MAY be a web app using WebUSB or WebHID.\n- If pairing is implemented via an extension, then the extension MUST ONLY have access to USB ports.\n\n| **Note:** Content scripts are explicitly disallowed.\n\n#### Bluetooth\n\n- If a wireless keyboard supports Bluetooth, the wireless keyboard MUST comply with requirements in [ChromeOS Compatible Bluetooth Requirements](/chromeos/peripherals/cc-bluetooth-v1). Specifically, the following sections:\n - Generic Bluetooth Requirements\n - Bluetooth Input Device Requirements\n\nConnectors\n----------\n\n#### Wired Mice\n\n- A wired mouse MUST support one of the following USB transports:\n - On-mouse USB-C receptacle\n - Captive cable with USB-A plug\n - Captive cable with USB-C plug\n- 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\n Model](https://www.usb.org/sites/default/files/USB%20Type-C%20Spec%20R2.0%20-%20August%202019.pdf#page=155).\n- 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](https://www.usb.org/sites/default/files/USB%20Type-C%20Spec%20R2.0%20-%20August%202019.pdf#page=156).\n- 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\n Receptacle Adapter (USB Type-C Specification Section\n 3.6.1)](https://www.usb.org/sites/default/files/USB%20Type-C%20Spec%20R2.0%20-%20August%202019.pdf#page=85).\n- If the wired mouse supports captive cable with USB-C plug, the USB-C plug\n MUST comply with USB Type-C Specification [Section\n 4.5.2 CC Functional and Behavioral Requirements](https://www.usb.org/sites/default/files/USB%20Type-C%20Spec%20R2.0%20-%20August%202019.pdf#page=161).\n\n - Note: specifically the rules around direct connect device or device with captive cable.\n\n (These devices shall apply and sense CC voltage levels on pin A5 only).\n- If the wired mouse supports captive cable with USB-C plug, the mouse MUST\n NOT include a passive USB Type-C Receptacle to USB-A adapter.\n\n - Rationale: USB Type-C Receptacle to USB-A adapters are forbidden by the USB Type-C Specification Section 2.2.\n- If the product bundle includes a USB cable, the cable SHOULD be [USB-IF\n certified](https://www.usb.org/compliance).\n\nHardware and Visual Design\n--------------------------\n\n### Scroll Mechanism\n\n- The mouse MAY have a scrolling mechanism.\n - Note: A scrolling mechanism includes a scroll wheel, multi-touch surface, etc.\n\n### Buttons\n\n- The mouse SHOULD be able to generate left and right click either via two separate buttons or a single multi-touch click/haptic surface.\n- The mouse MAY have buttons that perform actions listed in our universal keycode library.\n\n### Surface tracking\n\n- If a mouse's CPI is fixed, the mouse's CPI SHOULD be equal to 800 CPI.\n- If the CPI of a mouse is variable, the mouse SHOULD have a CPI option within the range of 800 to 1500.\n\n### Low power mode\n\n- When the mouse experiences a period of no activity, the mouse SHOULD go into a lower power mode.\n - Note: A lower power mode is achieved by reducing the scan rate.\n- When the user moves the mouse, it SHOULD communicate movement events to the ChromeOS device within 30ms.\n - Rationale: 30ms is considered to be a good maximum response time, before user experience decreases.\n\nSoftware\n--------\n\n### Vendor and Product IDs\n\n- The vendor ID reported by the mouse over all protocols MUST belong to the manufacturer.\n- The vendor/product ID combinations(s) reported by the mouse MUST be unique from other mice models.\n- If multiple variants exist of the same mice model, they SHOULD all share the same HID descriptor.\n- If variants of the same mice model have different HID descriptors, each variation of HID descriptor MUST map to a unique product ID.\n\n### Kernel\n\n- If a custom kernel driver is used, it MUST be checked into upstream Linux\n- If a custom kernel driver is used, it MUST be backported to Chromium OS kernels 4.4 and above.\n- When a mouse is switched off or disconnected, the kernel MUST remove the mouse from the collection of input devices.\n\n### Buttons\n\n- The left button MUST report BTN_LEFT.\n- The middle button MUST report BTN_MIDDLE.\n- The right button MUST report BTN_RIGHT.\n- 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](https://source.chromium.org/chromiumos/chromiumos/codesearch/+/main:src/third_party/kernel/upstream/include/uapi/linux/input-event-codes.h).\n - 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\n- The mouse MUST not report a full 104 key keyboard interface.\n\n### Charging\n\nAs wired mice typically do not require charging, this section may be understood\nto apply only to wireless mice.\n\n- If the mouse uses a rechargeable battery, the mouse SHOULD support recharging by using the USB-C or Micro-USB ports.\n- If the mouse includes a USB-C charger, the charger SHOULD be [USB-IF](https://www.usb.org/compliance) certified.\n- If the mouse includes a USB-C cable, the cable SHOULD be [USB-IF](https://www.usb.org/compliance) certified.\n\nRevision History\n----------------\n\n| Date | Version | Notes |\n|------------|---------|----------------------------------|\n| 2024-02-01 | 1.0.1 | Republication on a new platform |\n| 2023-05-19 | 1.0 | Initial Partner Site Publication |"]]