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 |