General and node management41 — OTA Software Update Provider

Matter Cluster 41 — OTA Software Update Provider

Matter Cluster 41 (0x0029) OTA Software Update Provider: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 41 — OTA Software Update Provider Cluster

Matter Cluster 41, also written as 0x0029, is the OTA Software Update Provider Cluster. This cluster implements the Provider role in the OTA process.

Cluster Identity

FieldValue
Cluster ID decimal41
Cluster ID hex0x0029
Cluster nameOTA Software Update Provider
Cluster revision (Matter 1.6.1)1
Roleutility
ScopeNode
PICS codeOTAP
Typical endpoint0

Revision history

RevisionChange
1Initial revision

Shadow Path Format

Cluster 41 values in the device shadow use this format:

endpoint_id / 41 / attribute_id

Data Types

ApplyUpdateActionEnum

This enumeration is used in the Action field of the ApplyUpdateResponse command. See (Action).

ValueNameConformanceMeaning
0ProceedMApply the update.
1AwaitNextActionMWait at least the given delay time.
2DiscontinueMThe OTA Provider is conveying a desire to rescind a previously provided Software Image.

DownloadProtocolEnum

Note that only HTTP over TLS (HTTPS) is supported. Using HTTP without TLS must NOT be supported, as there is no way to authenticate the involved participants.

ValueNameConformanceMeaning
0BDXSynchronousMIndicates support for synchronous BDX.
1BDXAsynchronousOIndicates support for asynchronous BDX.
2HTTPSOIndicates support for HTTPS.
3VendorSpecificOIndicates support for vendor specific protocol.

StatusEnum

ValueNameConformanceMeaning
0UpdateAvailableMIndicates that the OTA Provider has an update available.
1BusyMIndicates OTA Provider may have an update, but it is not ready yet.
2NotAvailableMIndicates that there is definitely no update currently available from the OTA Provider.
3DownloadProtocolNotSupportedMIndicates that the requested download protocol is not supported by the OTA Provider.

Cluster 41 Attributes

Cluster 41 defines no cluster-specific attributes; only the global attributes are present.

Global attributes

IDHexAttributeMeaning
655280xFFF8GeneratedCommandListResponse command IDs this server generates.
655290xFFF9AcceptedCommandListCommand IDs this server accepts.
655310xFFFBAttributeListAttribute IDs implemented.
655320xFFFCFeatureMapImplemented optional features (see above).
655330xFFFDClusterRevisionCluster revision implemented; 1 for a Matter 1.6.1 device.

Cluster 41 Commands

Cluster 41 has 3 client-to-server commands and 2 responses.

IDHexCommandDirectionConformanceResponseDescription
00x00QueryImageclient → serverMQueryImageResponseOn receipt, this command must trigger an attempt to find an updated Software Image by the OTA Provider to match the OTA Requestor's constraints provided in the payload fields.
10x01QueryImageResponseserver → clientM—This command is sent in response to the QueryImage command.
20x02ApplyUpdateRequestclient → serverMApplyUpdateResponseThis command requests the specified version be installed on the device.
30x03ApplyUpdateResponseserver → clientM—This command is sent in response to the ApplyUpdateRequest command.
40x04NotifyUpdateAppliedclient → serverMstatusThis command tells the Provider that the specified update has been applied.

AcceptedCommandList

The AcceptedCommandList attribute lists the command IDs the endpoint actually implements:

endpoint_id / 41 / 65529
{
  "0/41/65529": [
    0,
    2,
    4
  ]
}

Before sending a Cluster 41 command, check that the command ID exists in endpoint/41/65529. Optional commands are only present when the matching feature is set in FeatureMap.


Bridge Command Payload Format

The bridge accepts Matter commands in this structure:

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 41,
    "command_name": "QueryImage",
    "payload": {},
    "timed_request_timeout_ms": 1000
  }
}

For Cluster 41, always use "cluster_id": 41. Payload keys are the command field names in lowerCamelCase. Octet-string fields are base64-encoded. timed_request_timeout_ms is required for timed commands and ignored otherwise.


Command: QueryImage

Purpose

On receipt, this command must trigger an attempt to find an updated Software Image by the OTA Provider to match the OTA Requestor's constraints provided in the payload fields.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command nameQueryImage
Directionclient → server
ConformanceM
ResponseQueryImageResponse
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0VendorIDvendorIDvendor-idM——
1ProductIDproductIDuint16M——
2SoftwareVersionsoftwareVersionuint32M—The SoftwareVersion included in the request payload provides the value representing the current version running on the OTA Requestor invoking the command. This version is equal to the Software Version attribute of the Basic Information Cluster.
3ProtocolsSupportedprotocolsSupportedlist of DownloadProtocolEnumMmax 8 entriesThis field contains a list of all download protocols supported by the OTA Requestor. This field is used by the OTA Provider to generate the correct URI for the location of the Software Image when one is found to be available.
4HardwareVersionhardwareVersionuint16O—The value of this field, if present, contains the OTA Requestor's hardware version, and is equal to the HardwareVersion attribute of the Basic Information Cluster.
5LocationlocationstringOallowed: 2The location, if present, provides the same value as the Basic Information Cluster Location attribute for the OTA Requestor as configured. This may be used by the OTA Provider logic to allow per-region selection of the Software Image.
6RequestorCanConsentrequestorCanConsentboolO—This field is set to true by an OTA Requestor that is capable of obtaining user consent for OTA application by virtue of built-in user interface capabilities.
7MetadataForProvidermetadataForProvideroctstrOmax length 512This optional field, if present, must consist of a top-level anonymous list; each list element has a profile-specific tag encoded in fully-qualified form.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 41,
    "command_name": "QueryImage",
    "payload": {
      "vendorID": 1,
      "productID": 1,
      "softwareVersion": 1,
      "protocolsSupported": []
    }
  }
}

The device answers with QueryImageResponse (see below).


Command: QueryImageResponse

Purpose

This command is sent in response to the QueryImage command.

Command Identity

FieldValue
Command ID1
Command hex0x01
Command nameQueryImageResponse
Directionserver → client (response)
ConformanceM

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0StatusstatusStatusEnumM——
1DelayedActionTimedelayedActionTimeuint32Status = Busy, O—This field is provided when the Status field is set to Busy, and may be provided in other cases.
2ImageURIimageURIstringStatus = UpdateAvailablemax length 256—
3SoftwareVersionsoftwareVersionuint32Status = UpdateAvailable—This field indicates the version of the image being provided to the OTA Requestor by the OTA Provider.
4SoftwareVersionStringsoftwareVersionStringstringStatus = UpdateAvailablelength 1 to 64This field provides a string version of the image being provided to the OTA Requestor by the OTA Provider.
5UpdateTokenupdateTokenoctstrStatus = UpdateAvailablelength 8 to 32—
6UserConsentNeededuserConsentNeededboolO—This field, if present, only be interpreted if the OTA Requestor had previously indicated a value of True in the RequestorCanConsent field of the QueryImageRequest.
7MetadataForRequestormetadataForRequestoroctstrOmax length 512This optional field, if present, must consist of a top-level anonymous list; each list element has a profile-specific tag encoded in fully-qualified form.

Status values (StatusEnum): 0 = UpdateAvailable, 1 = Busy, 2 = NotAvailable, 3 = DownloadProtocolNotSupported


Command: ApplyUpdateRequest

Purpose

This command requests the specified version be installed on the device.

Command Identity

FieldValue
Command ID2
Command hex0x02
Command nameApplyUpdateRequest
Directionclient → server
ConformanceM
ResponseApplyUpdateResponse
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0UpdateTokenupdateTokenoctstrMlength 8 to 32This field contains the UpdateToken. This field may be used by the OTA Provider to track minimal lifecycle state to allow finer-grained scheduling of the application of Software Images by OTA Requestors.
1NewVersionnewVersionuint32M—The NewVersion field included in the request payload provides the SoftwareVersion value of the new Software Image which the OTA Requestor is ready to start applying.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 41,
    "command_name": "ApplyUpdateRequest",
    "payload": {
      "updateToken": "AQID",
      "newVersion": 1
    }
  }
}

The device answers with ApplyUpdateResponse (see below).


Command: ApplyUpdateResponse

Purpose

This command is sent in response to the ApplyUpdateRequest command.

Command Identity

FieldValue
Command ID3
Command hex0x03
Command nameApplyUpdateResponse
Directionserver → client (response)
ConformanceM

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ActionactionApplyUpdateActionEnumM——
1DelayedActionTimedelayedActionTimeuint32M—The minimum time period the OTA Requestor must wait before executing the Action, in seconds from receipt.

Action values (ApplyUpdateActionEnum): 0 = Proceed, 1 = AwaitNextAction, 2 = Discontinue


Command: NotifyUpdateApplied

Purpose

This command tells the Provider that the specified update has been applied.

Command Identity

FieldValue
Command ID4
Command hex0x04
Command nameNotifyUpdateApplied
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0UpdateTokenupdateTokenoctstrMlength 8 to 32This field contains the UpdateToken.
1SoftwareVersionsoftwareVersionuint32M—The SoftwareVersion included in the request payload provides the same value as the SoftwareVersion attribute in the invoking OTA Requestor's Basic Information Cluster, and should be consistent with the value representing a new version running on the Node …

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 41,
    "command_name": "NotifyUpdateApplied",
    "payload": {
      "updateToken": "AQID",
      "softwareVersion": 1
    }
  }
}

Cluster 41 Events

Cluster 41 defines no events.


SmartphoneKey Notes

  • Cluster 41 is present on SmartphoneKey devices or hubs today. See Matter Bridge Clusters — Detailed Reference and Matter Device Attributes & Commands for the values the bridge actually reports.
  • Shadow paths follow endpoint/41/attribute; attribute values that the device reports as unreadable are written as n/a.
  • Attribute IDs, command IDs and enum values on this page come from the CSA Matter 1.6.1 data model; descriptions are condensed from the specification text.