blob: a5d3cae542aee42d310e29caa30d4d62f5cf9a9b [file] [log] [blame]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef USB_BOUNCER_METRICS_ALLOWLIST_H_
#define USB_BOUNCER_METRICS_ALLOWLIST_H_
#include "policy/device_policy.h"
namespace usb_bouncer {
// Top 200 most popular USB devices used with chromeOS based on an M111
// popularity study. Detailed metrics are only collected for these devices to
// mitigate privacy concerns about metric collection on obscure USB devices.
const policy::DevicePolicy::UsbDeviceId kMetricsAllowlist[] = {
/* HP Inc. */
{0x03F0, 0x0024},
{0x03F0, 0x034A},
{0x03F0, 0x0610},
{0x03F0, 0x0620},
{0x03F0, 0x0782},
{0x03F0, 0x094A},
{0x03F0, 0x0982},
{0x03F0, 0x1198},
{0x03F0, 0x134A},
{0x03F0, 0x1647},
{0x03F0, 0x1A47},
{0x03F0, 0x2141},
/* NEC Corp. */
{0x0409, 0x005A},
/* Microchip-SMSC */
{0x0424, 0x2514},
{0x0424, 0x2806},
{0x0424, 0x284C},
{0x0424, 0x4206},
{0x0424, 0x4216},
{0x0424, 0x7240},
{0x0424, 0x7260},
/* Texas Instruments */
{0x0451, 0x82FF},
{0x0451, 0x8440},
{0x0451, 0x8442},
/* Microsoft Corp. */
{0x045E, 0x00CB},
{0x045E, 0x0745},
{0x045E, 0x07B2},
{0x045E, 0x07F8},
{0x045E, 0x07FD},
/* Primax Electronics */
{0x0461, 0x0010},
{0x0461, 0x4141},
{0x0461, 0x4E17},
{0x0461, 0x4E22},
{0x0461, 0x4E2A},
{0x0461, 0x4E84},
/* Cherry */
{0x046A, 0xB090},
{0x046A, 0xB091},
/* Logitech Inc. */
{0x046D, 0x0825},
{0x046D, 0x082D},
{0x046D, 0x0843},
{0x046D, 0x085B},
{0x046D, 0x0A38},
{0x046D, 0x0A8F},
{0x046D, 0xC018},
{0x046D, 0xC05A},
{0x046D, 0xC069},
{0x046D, 0xC077},
{0x046D, 0xC31C},
{0x046D, 0xC31D},
{0x046D, 0xC34B},
{0x046D, 0xC52B},
{0x046D, 0xC52F},
{0x046D, 0xC534},
{0x046D, 0xC53F},
{0x046D, 0xC542},
{0x046D, 0xC548},
/* Plantronics Inc. */
{0x047F, 0xC053},
{0x047F, 0xC056},
/* IBM Corp. */
{0x04B3, 0x3025},
/* Cypress Semiconductor */
{0x04B4, 0x6506},
{0x04B4, 0xF649},
/* Holtek Semiconductor Inc. */
{0x04D9, 0x1702},
/* Samsung Electronics Co., Ltd. */
{0x04E8, 0x6860},
/* Chicony Electronics Co., Ltd. */
{0x04F2, 0x0939},
/* Elan Microelectronics Corp. */
{0x04F3, 0x0103},
/* Alcor Micro Corp. */
{0x058F, 0x8468},
/* Apple Inc. */
{0x05AC, 0x024F},
{0x05AC, 0x12A8},
{0x05AC, 0x12AB},
{0x05AC, 0x1393},
/* Zebra Technologies */
{0x05E0, 0x1200},
/* Genesys Logic, Inc. */
{0x05E3, 0x0608},
{0x05E3, 0x0610},
{0x05E3, 0x0620},
{0x05E3, 0x0626},
{0x05E3, 0x0749},
{0x05E3, 0x0751},
/* MosArt Semiconductor Corp. */
{0x062A, 0x4101},
{0x062A, 0x4102},
{0x062A, 0x4C01},
{0x062A, 0x5110},
{0x062A, 0x5918},
/* Prolific Technologies, Inc. */
{0x067B, 0x2586},
/* Cyber Power Systems, Inc. */
{0x0764, 0x0501},
/* Pixart Imaging, Inc. */
{0x093A, 0x2510},
/* A-Four Technologies Co., Ltd. */
{0x09DA, 0x2268},
/* Cambridge Silicon Radio Ltd. */
{0x0A12, 0x4010},
/* GN Audio */
{0x0B0E, 0x0300},
{0x0B0E, 0x0301},
{0x0B0E, 0x0305},
{0x0B0E, 0x0312},
{0x0B0E, 0x2304},
{0x0B0E, 0x2315},
{0x0B0E, 0x2319},
{0x0B0E, 0x2327},
/* ASIX Electronics Corp. */
{0x0B95, 0x1790},
/* Realtek Semiconductor Corp. */
{0x0BDA, 0x0409},
{0x0BDA, 0x0411},
{0x0BDA, 0x0412},
{0x0BDA, 0x0413},
{0x0BDA, 0x0487},
{0x0BDA, 0x1100},
{0x0BDA, 0x2172},
{0x0BDA, 0x402E},
{0x0BDA, 0x5400},
{0x0BDA, 0x5409},
{0x0BDA, 0x5411},
{0x0BDA, 0x5412},
{0x0BDA, 0x5413},
{0x0BDA, 0x5418},
{0x0BDA, 0x5454},
{0x0BDA, 0x5487},
{0x0BDA, 0x8152},
{0x0BDA, 0x8153},
/* RF Ideas */
{0x0C27, 0x3BFA},
/* Sonix Technology Co., Ltd. */
{0x0C45, 0x636B},
/* Promethean */
{0x0D48, 0x0012},
/* Darfon Electronics Corp. */
{0x0D62, 0x0D98},
/* C-Media Electronics Inc. */
{0x0D8C, 0x0012},
{0x0D8C, 0x0014},
/* MediaTek Inc. */
{0x0E8D, 0x2008},
/* Yubico AB */
{0x1050, 0x0120},
{0x1050, 0x0200},
{0x1050, 0x0402},
{0x1050, 0x0407},
/* Silicon Laboratories Inc. */
{0x10C4, 0x8108},
/* Huawei Technologies Co., Ltd. */
{0x12D1, 0x107E},
/* AzureWave Technologies, Inc. */
{0x13D3, 0x5521},
/* MOAI Electronics Corp. */
{0x14CD, 0x8601},
/* Lenovo */
{0x17EF, 0x6019},
{0x17EF, 0x608C},
{0x17EF, 0x608D},
{0x17EF, 0x6099},
/* Google LLC */
{0x18D1, 0x4EE0},
{0x18D1, 0x4EE1},
{0x18D1, 0x4EE7},
{0x18D1, 0x5026},
{0x18D1, 0x503C},
/* Teitsu Denshi Kenkyusho Co., Ltd. */
{0x18F8, 0x0F97},
/* Terminus Technology Inc. */
{0x1A40, 0x0101},
{0x1A40, 0x0801},
/* Evoluent LLC */
{0x1A7C, 0x0191},
/* Generalplus Technology Inc. */
{0x1B3F, 0x2008},
{0x1B3F, 0x2247},
/* Sunplus Innovation Technology Inc. */
{0x1BCF, 0x0005},
{0x1BCF, 0x08A0},
/* Beijing Sigmachip Co., Ltd. */
{0x1C4F, 0x0002},
{0x1C4F, 0x0034},
/* Fresno Logic Inc. */
{0x1D5C, 0x5001},
{0x1D5C, 0x5011},
{0x1D5C, 0x5100},
{0x1D5C, 0x7102},
/* Semitek International Holding Ltd. */
{0x1EA7, 0x0064},
{0x1EA7, 0x0066},
/* NXP Semiconductors */
{0x1FC9, 0x5002},
/* LG Display Co., Ltd. */
{0x1FD2, 0x8102},
/* Guangzhou Shi Rui Electronics Co., Ltd. */
{0x1FF7, 0x0013},
{0x1FF7, 0x0F21},
/* VIA Labs, Inc. */
{0x2109, 0x0100},
{0x2109, 0x0102},
{0x2109, 0x0103},
{0x2109, 0x0210},
{0x2109, 0x0813},
{0x2109, 0x0815},
{0x2109, 0x0817},
{0x2109, 0x0822},
{0x2109, 0x2210},
{0x2109, 0x2813},
{0x2109, 0x2815},
{0x2109, 0x2817},
{0x2109, 0x2822},
{0x2109, 0x8817},
{0x2109, 0x8888},
/* Ameco Technologies Co., Ltd. */
{0x214B, 0x7250},
/* Motorola Mobility Inc. */
{0x22B8, 0x2E82},
/* TeLink Semiconductor Co., Ltd. */
{0x248A, 0x8366},
{0x248A, 0x8367},
{0x248A, 0x8514},
/* RNDPLUS Co., Ltd. */
{0x2512, 0x5004},
/* Norel Systems Ltd. */
{0x2537, 0x1081},
/* Algoltek Inc. */
{0x25A4, 0x9311},
/* Beken Corp. */
{0x25A7, 0xFA23},
{0x25A7, 0xFA61},
{0x25A7, 0xFA67},
/* Xiaomi Communications Co., Ltd. */
{0x2717, 0xFF40},
/* NewSoc Tech Limited */
{0x275D, 0x0BA6},
/* Cadwell Laboratories, Inc. */
{0x27C0, 0x0818},
/* Shenzhen iSolutions Technologies Co., Ltd. */
{0x28E1, 0xB101},
/* Fibocom Wireless Inc. */
{0x2CB7, 0x0007},
{0x2CB7, 0x01A0},
/* Wuxi Instant Microelectronics Co., Ltd. */
{0x30FA, 0x0300},
{0x30FA, 0x0400},
/* Yichip Microelectronics Co., Ltd. */
{0x3151, 0x3020},
/* Unknown */
{0x3938, 0x1031},
{0x3938, 0x1191},
/* Dell Inc. */
{0x413C, 0x2107},
{0x413C, 0x2113},
{0x413C, 0x301A},
{0x413C, 0x301B},
{0x413C, 0xB06E},
{0x413C, 0xB06F},
};
// Returns true if dev1 appears before dev2 in the metrics allowlist. Used by
// std::binary_search() to check if a particular device is in the metrics
// allowlist.
bool DeviceComp(policy::DevicePolicy::UsbDeviceId dev1,
policy::DevicePolicy::UsbDeviceId dev2);
// Returns true if the provided VID/PID pairing is in the metrics allowlist.
bool DeviceInMetricsAllowlist(uint16_t vendor_id, uint16_t product_id);
} // namespace usb_bouncer
#endif // USB_BOUNCER_METRICS_ALLOWLIST_H_