This document gives a function-level documentation of the Telemetry Extension API. It is separated in the three namespaces telemetry, diagnostics and events.
| Property Name |
|---|
| ac_power |
| battery_capacity |
| battery_charge |
| battery_discharge |
| battery_health |
| cpu_cache |
| cpu_floating_point_accuracy |
| cpu_prime_search |
| cpu_stress |
| disk_read |
| dns_resolution |
| memory |
| nvme_wear_level |
| smartctl_check |
| lan_connectivity |
| signal_strength |
| dns_resolver_present |
| gateway_can_be_pinged |
| sensitive_sensor |
| nvme_self_test |
| fingerprint_alive |
| smartctl_check_with_percentage_used |
| emmc_lifetime |
| Property Name |
|---|
| unknown |
| ready |
| running |
| waiting_user_action |
| passed |
| failed |
| error |
| cancelled |
| failed_to_start |
| removed |
| cancelling |
| unsupported |
| not_run |
| Property Name |
|---|
| cancel |
| remove |
| resume |
| status |
| Property Name |
|---|
| unknown |
| unplug_ac_power |
| plug_in_ac_power |
| Property Name |
|---|
| linear |
| random |
| Property Name |
|---|
| connected |
| disconnected |
| Property Name |
|---|
| short_test |
| long_test |
| Property Name | Type | Description |
|---|---|---|
| expected_status | AcPowerStatus | The expected status of the AC (‘connected’, ‘disconnected’ or ‘unknown’) |
| expected_power_type* | string | If specified, this must match the type of power supply for the routine to succeed. |
| Property Name | Type | Description |
|---|---|---|
| length_seconds | number | Length of time to run the routine for |
| maximum_discharge_percent_allowed | number | The routine will fail if the battery discharges by more than this percentage |
| Property Name | Type | Description |
|---|---|---|
| length_seconds | number | Length of time to run the routine for |
| minimum_charge_percent_required | number | The routine will fail if the battery charges by less than this percentage |
| Property Name | Type | Description |
|---|---|---|
| length_seconds | number | Length of time to run the routine for |
| Property Name | Type | Description |
|---|---|---|
| type | DiskReadRoutineType | Type of disk read routine that will be started |
| length_seconds | number | Length of time to run the routine for |
| file_size_mb | number | test file size, in mega bytes, to test with DiskRead routine. Maximum file size is 10 GB |
| Property Name | Type | Description |
|---|---|---|
| id | number | Id of the routine you want to query |
| command | RoutineCommandType | What kind of updated should be performed |
| Property Name | Type | Description |
|---|---|---|
| progress_percent | number | Current progress of the routine |
| output | string | Optional debug output |
| status | RoutineStatus | Current routine status |
| status_message | string | Optional routine status message |
| user_message | UserMessageType | Returned for routines that require user action (e.g. unplug power cable) |
| Property Name | Type | Description |
|---|---|---|
| wear_level_threshold | number | Threshold number in percentage which routine examines wear level status against |
| Property Name | Type | Description |
|---|---|---|
| test_type | NvmeSelfTestType | Selects between a “short_test” or a “long_test”. |
| Property Name | Type | Description |
|---|---|---|
| percentage_used_threshold | number | an optional threshold number in percentage, range [0, 255] inclusive, that the routine examines percentage_used against. If not specified, the routine will default to the max allowed value (255). |
| Function Name | Definition | Permission needed to access | Released in dpsl version |
|---|---|---|---|
| getAvailableRoutines | () => Promise<List<RoutineType>> | os.diagnostics | M96 |
| getRoutineUpdate | (params: GetRoutineUpdateRequest) => Promise<GetRoutineUpdateResponse>> | os.diagnostics | M96 |
| runAcPowerRoutine | (params: RunAcPowerRoutineRequest) => Promise<Routine> | os.diagnostics | M105 |
| runBatteryCapacityRoutine | () => Promise<Routine> | os.diagnostics | M96 |
| runBatteryHealthRoutine | () => Promise<Routine> | os.diagnostics | M96 |
| runBatteryDischargeRoutine | (params: RunBatteryDischargeRoutineRequest) => Promise<Routine> | os.diagnostics | M96 |
| runBatteryChargeRoutine | (params: RunBatteryChargeRoutineRequest) => Promise<Routine> | os.diagnostics | M96 |
| runCpuCacheRoutine | (params: RunCpuRoutineRequest) => Promise<Routine> | os.diagnostics | M96 |
| runCpuFloatingPointAccuracyRoutine | (params: RunCpuRoutineRequest) => Promise<Routine> | os.diagnostics | M99 |
| runCpuPrimeSearchRoutine | (params: RunCpuRoutineRequest) => Promise<Routine> | os.diagnostics | M99 |
| runCpuStressRoutine | (params: RunCpuRoutineRequest) => Promise<Routine> | os.diagnostics | M96 |
| runDiskReadRoutine | (params: RunDiskReadRequest) => Promise<Routine> | os.diagnostics | M102 |
| runDnsResolutionRoutine | () => Promise<Routine> | os.diagnostics | M108 |
| runDnsResolverPresentRoutine | () => Promise<Routine> | os.diagnostics | M108 |
| runEmmcLifetimeRoutine | () => Promise<Routine> | os.diagnostics | M110 |
| runFingerprintAliveRoutine | () => Promise<Routine> | os.diagnostics | M110 |
| runGatewayCanBePingedRoutine | () => Promise<Routine> | os.diagnostics | M108 |
| runLanConnectivityRoutine | () => Promise<Routine> | os.diagnostics | M102 |
| runMemoryRoutine | () => Promise<Routine> | os.diagnostics | M96 |
| runNvmeSelfTestRoutine | (params: RunNvmeSelfTestRequest) => Promise<Routine> | os.diagnostics | M110 |
| runNvmeWearLevelRoutine | (params: RunNvmeWearLevelRequest) => Promise<Routine> | os.diagnostics | M102 |
| runSensitiveSensorRoutine | () => Promise<Routine> | os.diagnostics | M110 |
| runSignalStrengthRoutine | () => Promise<Routine> | os.diagnostics | M108 |
| runSmartctlCheckRoutine | (params: RunSmartctlCheckRequest?) => Promise<Routine> | os.diagnostics | initial release: M102, new parameter added: M110. The parameter is only available if “smartctl_check_with_percentage_used” is returned from GetAvailableRoutines |
| Property Name |
|---|
| audio_jack |
| lid |
| Property Name |
|---|
| supported |
| unsupported |
| Property Name | Type | Description |
|---|---|---|
| status | EventSupportStatus | Support status of an event |
| Property Name |
|---|
| connected |
| disconnected |
| Property Name |
|---|
| headphone |
| microphone |
| Property Name | Type | Description |
|---|---|---|
| event | AudioJackEvent | The event that occurred |
| deviceType | AudioJackDeviceType | The device type of |
| Property Name |
|---|
| closed |
| opened |
| Property Name | Type | Description |
|---|---|---|
| event | LidEvent | The event that occurred |
| Function Name | Definition | Permission needed to access | Released in dpsl version | Description |
|---|---|---|---|---|
| isEventSupported | (category: EventCategory) => Promise<EventSupportStatusInfo> | os.events | M115 | Checks whether an event is supported. The information returned by this method is valid across reboots of the device |
| startCapturingEvents | (category: EventCategory) => () | os.events | M115 | Starts capturing events for EventCategory. After calling this method, an extension can expect to be updated about events through invocations of on<EventCategory>Event, until either the PWA is closed or stopCapturingEvents is called. Note that an extension is only able to subscribe to events if the PWA is currently open |
| stopCapturingEvents | (category: EventCategory) => () | os.events | M115 | Stops capturing EventCategory events. This means on<EventCategory>Event won't be invoked until startCapturingEvents is successfully called |
| Function Name | Definition | Permission needed to access | Released in dpsl version | Emitted on |
|---|---|---|---|---|
| onAudioJackEvent | function(AudioJackEventInfo) | os.events | M115 | An audio device was plugged in or out |
| onLidEvent | function(LidEventInfo) | os.events | M115 | The device lid was opened or closed |
| Property Name | Type | Description |
|---|---|---|
| id | number | Node id |
| name | string | The name of this node. For example, “Speaker” |
| deviceName | string | The name of the device that this node belongs to. For example, “HDA Intel PCH: CA0132 Analog:0,0” |
| active | boolean | Whether this node is currently used for output. There is one active node for output |
| nodeVolume | number | The node volume in [0, 100] |
| Property Name | Type | Description |
|---|---|---|
| id | number | Node id |
| name | string | The name of this node. For example, “Internal Mic” |
| deviceName | string | The name of the device that this node belongs to. For example, “HDA Intel PCH: CA0132 Analog:0,0” |
| active | boolean | Whether this node is currently used for input. There is one active node for input |
| nodeGain | number | The input node gain set by UI, the value is in [0, 100] |
| Property Name | Type | Description |
|---|---|---|
| outputMute | boolean | Is the active output device mute or not |
| inputMute | boolean | Is the active input device mute or not |
| underruns | number | Number of underruns |
| severeUnderruns | number | Number of severe underruns |
| outputNodes | Array | Output nodes |
| inputNodes | Array | Input nodes |
| Property Name | Type | Description |
|---|---|---|
| chargeFull | number | Full capacity (Ah) |
| chargeFullDesign | number | Design capacity (Ah) |
| chargeNow | number | Battery's charge (Ah) |
| currentNow | number | Battery's current (A) |
| cycleCount | number | Battery's cycle count |
| manufactureDate | string | Manufacturing date in yyyy-mm-dd format. Included when the main battery is Smart |
| modelName | string | Battery's model name |
| serialNumber | string | Battery's serial number |
| status | string | Battery's status (e.g. charging) |
| technology | string | Used technology in the battery |
| temperature | number | Temperature in 0.1K. Included when the main battery is Smart |
| vendor | string | Battery's manufacturer |
| voltageMinDesign | number | Desired minimum output voltage |
| voltageNow | number | Battery's voltage (V) |
| Property Name | Type | Description |
|---|---|---|
| name | string | The name of the block device. |
| type | string | The type of the block device, (e.g. “MMC”, “NVMe” or “ATA”). |
| size | number | The device size in bytes. |
| Property Name |
|---|
| unknown |
| x86_64 |
| aarch64 |
| armv7l |
| Property Name | Type | Description |
|---|---|---|
| logicalCpus | Array | Logical CPUs corresponding to this physical CPU |
| modelName | string | The CPU model name |
| Property Name | Type | Description |
|---|---|---|
| cStates | Array | Information about the logical CPU's time in various C-states |
| idleTimeMs | number | Idle time since last boot, in milliseconds |
| maxClockSpeedKhz | number | The max CPU clock speed in kilohertz |
| scalingCurrentFrequencyKhz | number | Current frequency the CPU is running at |
| scalingMaxFrequencyKhz | number | Maximum frequency the CPU is allowed to run at, by policy |
| coreId | number | The ID of this logical CPU core |
| Property Name | Type | Description |
|---|---|---|
| name | string | State name |
| timeInStateSinceLastBootUs | number | Time spent in the state since the last reboot, in microseconds |
| Property Name | Type | Description |
|---|---|---|
| architecture | CpuArchitectureEnum | The CPU architecture - it‘s assumed all of a device’s CPUs share the same architecture |
| numTotalThreads | number | Number of total threads available |
| physicalCpus | Array<PhysicalCpuInfo> | Information about the device's physical CPUs |
| Property Name |
|---|
| cellular |
| ethernet |
| tether |
| vpn |
| wifi |
| Property Name | description |
|---|---|
| uninitialized | The network type is available but not yet initialized |
| disabled | The network type is available but disabled or disabling |
| prohibited | The network type is prohibited by policy |
| not_connected | The network type is available and enabled or enabling, but no network connection has been established |
| connecting | The network type is available and enabled, and a network connection is in progress |
| portal | The network is in a portal state |
| connected | The network is in a connected state, but connectivity is limited |
| online | The network is connected and online |
| Property Name | Type | Description |
|---|---|---|
| type | NetworkType | The type of network interface (wifi, ethernet, etc.) |
| state | NetworkState | The current state of the network interface (disabled, enabled, online, etc.) |
| macAddress | string | (Added in M110): The currently assigned mac address. Only available with the permission os.telemetry.network_info. |
| ipv4Address | string | The currently assigned ipv4Address of the interface |
| ipv6Addresses | Array<string> | The list of currently assigned ipv6Addresses of the interface |
| signalStrength | number | The current signal strength in percent |
| Property Name | Type | Description |
|---|---|---|
| networks | Array<NetworkInfo> | List of available network interfaces and their configuration |
| Property Name | Type | Description |
|---|---|---|
| marketingName | string | Contents of CrosConfig in /branding/marketing-name |
| Property Name | Type | Description |
|---|---|---|
| totalMemoryKiB | number | Total memory, in kilobytes |
| freeMemoryKiB | number | Free memory, in kilobytes |
| availableMemoryKiB | number | Available memory, in kilobytes |
| pageFaultsSinceLastBoot | number | Number of page faults since the last boot |
| Property Name | Type | Description |
|---|---|---|
| oemData | string | OEM's specific data. This field is used to store battery serial number by some OEMs |
| Property Name | Type | Description |
|---|---|---|
| releaseMilestone | string | The release milestone (e.g. “87”) |
| buildNumber | string | The build number (e.g. “13544”) |
| patchNumber | string | The build number (e.g. “59.0”) |
| releaseChannel | string | The release channel (e.g. “stable-channel”) |
| Property Name | Type | Description |
|---|---|---|
| skuNumber | string | Device's SKU number, a.k.a. product number |
| serialNumber | string | Device's serial number |
| modelName | string | Device's model name |
| activateDate | string | Device's activate date: Format: YYYY-WW |
| Property Name | Type | Description |
|---|---|---|
| availableSpace | number | The currently available space in the user partition (Bytes) |
| totalSpace | number | The total space of the user partition (Bytes) |
| Property Name |
|---|
| not_gsc |
| cr50 |
| ti5 |
| Property Name | Type | Description |
|---|---|---|
| gscVersion | TpmGSCVersion | The version of Google security chip(GSC), or “not_gsc” if not applicable |
| family | number | TPM family. We use the TPM 2.0 style encoding (see here for reference), e.g.: TPM 1.2: “1.2” -> 0x312e3200 TPM 2.0: “2.0” -> 0x322e3000 |
| specLevel | number | The level of the specification that is implemented by the TPM |
| manufacturer | number | A manufacturer specific code |
| tpmModel | number | The TPM model number |
| firmwareVersion | number | The current firmware version of the TPM |
| vendorSpecific | string | Information set by the vendor |
| Property Name | Type | Description |
|---|---|---|
| enabled | boolean | Whether the |
| owned | boolean | Whether the TPM has been owned |
| specLevel | boolean | Whether the owner password is still retained (as part of the TPM initialization) |
| Property Name | Type | Description |
|---|---|---|
| counter | number | The current dictionary attack counter value |
| threshold | number | The current dictionary attack counter threshold |
| lockoutInEffect | boolean | Whether the TPM is currently in some form of dictionary attack lockout |
| lockoutSecondsRemaining | number | The number of seconds remaining in the lockout (if applicable) |
| Property Name | Type | Description |
|---|---|---|
| version | TpmVersion | The current version of the Trusted Platform Module (TPM) |
| status | TpmStatus | The current status of the TPM |
| dictionaryAttack | TpmDictionaryAttack | TPM dictionary attack (DA) related information |
| Property Name | Type | Description |
|---|---|---|
| interfaceNumber | number | The zero-based number (index) of the interface |
| classId | number | The class id can be used to classify / identify the usb interfaces. See the usb.ids database for the values (https://github.com/gentoo/hwids) |
| subclassId | number | The subclass id can be used to classify / identify the usb interfaces. See the usb.ids database for the values (https://github.com/gentoo/hwids) |
| protocolId | number | The protocol id can be used to classify / identify the usb interfaces. See the usb.ids database for the values (https://github.com/gentoo/hwids) |
| driver | string | The driver used by the device. This is the name of the matched driver which is registered in the kernel. See “{kernel root}/drivers/” for the list of the built in drivers |
| Property Name | Description |
|---|---|
| plain | An unidentified format text string |
| number | A single integer version number |
| pair | Two AABB.CCDD version numbers |
| triplet | Microsoft-style AA.BB.CCDD version numbers |
| quad | UEFI-style AA.BB.CC.DD version numbers |
| bcd | Binary coded decimal notation |
| intelMe | Intel ME-style bitshifted notation |
| intelMe2 | Intel ME-style A.B.CC.DDDD notation |
| surfaceLegacy | Legacy Microsoft Surface 10b.12b.10b |
| surface | Microsoft Surface 8b.16b.8b |
| dellBios | Dell BIOS BB.CC.DD style |
| hex | Hexadecimal 0xAABCCDD style |
| Property Name | Type | Description |
|---|---|---|
| version | string | The string form of the firmware version |
| version_format | FwupdVersionFormat | The format for parsing the version string |
| Property Name |
|---|
| unknown |
| usb1 |
| usb2 |
| usb3 |
An enumeration of the usb spec speed in Mbps. Source:
| Property Name | Description |
|---|---|
| unknown | Unknown speed |
| n1_5Mbps | Low speed |
| n12Mbps | Full speed |
| n480Mbps | High Speed |
| n5Gbps | Super Speed |
| n10Gbps | Super Speed+ |
| n20Gbps | Super Speed+ Gen 2x2 |
| Property Name | Type | Description |
|---|---|---|
| classId | number | The class id can be used to classify / identify the usb interfaces. See the usb.ids database for the values (https://github.com/gentoo/hwids) |
| subclassId | number | The subclass id can be used to classify / identify the usb interfaces. See the usb.ids database for the values (https://github.com/gentoo/hwids) |
| protocolId | number | The protocol id can be used to classify / identify the usb interfaces. See the usb.ids database for the values (https://github.com/gentoo/hwids) |
| vendorId | number | The vendor id can be used to classify / identify the usb interfaces. See the usb.ids database for the values (https://github.com/gentoo/hwids) |
| productId | number | The product id can be used to classify / identify the usb interfaces. See the usb.ids database for the values (https://github.com/gentoo/hwids) |
| interfaces | Array<UsbBusInterfaceInfo> | The usb interfaces under the device. A usb device has at least one interface. Each interface may or may not work independently, based on each device. This allows a usb device to provide multiple features. The interfaces are sorted by the interface_number field |
| fwupdFirmwareVersionInfo | FwupdFirmwareVersionInfo | The firmware version obtained from fwupd |
| version | UsbVersion | The recognized usb version. It may not be the highest USB version supported by the hardware |
| spec_speed | UsbSpecSpeed | The spec usb speed |
| Function Name | Definition | Permission needed to access | Released in Chrome version |
|---|---|---|---|
| getVpdInfo | () => Promise<VpdInfo> | os.telemetry, os.telemetry.serial_number for serial number field | M96 |
| getOemData | () => Promise<OemDataInfo> | os.telemetry, os.telemetry.serial_number for the whole result | M96 |
| getCpuInfo | () => Promise<CpuInfo> | os.telemetry | M99 |
| getMemoryInfo | () => Promise<MemoryInfo> | os.telemetry | M99 |
| getBatteryInfo | () => Promise<BatteryInfo> | os.telemetry, os.telemetry.serial_number for serial number field | M102 |
| getStatefulPartitionInfo | () => Promise<StatefulPartitionInfo> | os.telemetry | M105 |
| getOsVersionInfo | () => Promise<OsVersionInfo> | os.telemetry | M105 |
| getNonRemovableBlockDevicesInfo | () => Promise<BlockDeviceInfo> | os.telemetry | M108 |
| getInternetConnectivityInfo | () => Promise<InternetConnectivityInfo> | os.telemetry, os.telemetry.network_info for MAC address field | M108 - Mac address in M111 |
| getTpmInfo | () => Promise<TpmInfo> | os.telemetry | M108 |
| getAudioInfo | () => Promise<AudioInfo> | os.telemetry | M111 |
| getMarketingInfo | () => Promise<MarketingInfo> | os.telemetry | M111 |
| getUsbBusInfo | () => Promise<UsbBusInfo> | os.telemetry | M114 |