General and node management42 — OTA Software Update Requestor

Matter Cluster 42 — OTA Software Update Requestor

Matter Cluster 42 (0x002A) OTA Software Update Requestor: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 42 — OTA Software Update Requestor Cluster

Matter Cluster 42, also written as 0x002A, is the OTA Software Update Requestor Cluster. This cluster implements the Requestor role in the OTA process.

Cluster Identity

FieldValue
Cluster ID decimal42
Cluster ID hex0x002A
Cluster nameOTA Software Update Requestor
Cluster revision (Matter 1.6.1)1
Roleutility
ScopeNode
PICS codeOTAR
Typical endpoint0

Revision history

RevisionChange
1Initial revision

Shadow Path Format

Cluster 42 values in the device shadow use this format:

endpoint_id / 42 / attribute_id

Example:

{
  "0/42/1": true
}
PartMeaning
0Endpoint ID
42OTA Software Update Requestor cluster
1UpdatePossible attribute

Data Types

AnnouncementReasonEnum

ValueNameConformanceMeaning
0SimpleAnnouncementMAn OTA Provider is announcing its presence.
1UpdateAvailableMAn OTA Provider is announcing, either to a single Node or to a group of Nodes, that a new Software Image MAY be available
2UrgentUpdateAvailableMAn OTA Provider is announcing, either to a single Node or to a group of Nodes, that a new Software Image MAY be available, which contains an update that needs to be applied urgently.

ChangeReasonEnum

ValueNameConformanceMeaning
0UnknownMThe reason for a state change is unknown.
1SuccessMThe reason for a state change is the success of a prior operation.
2FailureMThe reason for a state change is the failure of a prior operation.
3TimeOutMThe reason for a state change is a time-out.
4DelayByProviderOThe reason for a state change is a request by the OTA Provider to wait.

UpdateStateEnum

ValueNameConformanceMeaning
0UnknownMCurrent state is not yet determined.
1IdleMIndicate a Node not yet in the process of software update.
2QueryingMIndicate a Node in the process of querying an OTA Provider.
3DelayedOnQueryMIndicate a Node waiting after a Busy response.
4DownloadingMIndicate a Node currently in the process of downloading a software update.
5ApplyingMIndicate a Node currently in the process of verifying and applying a software update.
6DelayedOnApplyMIndicate a Node waiting caused by AwaitNextAction response.
7RollingBackMIndicate a Node in the process of recovering to a previous version.
8DelayedOnUserConsentMIndicate a Node is capable of user consent.

ProviderLocation (struct) — fabric-scoped

This structure encodes a fabric-scoped location of an OTA provider on a given fabric.

FieldNameTypeConformanceConstraintMeaning
1ProviderNodeIDnode-idM——
2Endpointendpoint-noM—This field contains the endpoint number which has the OTA Provider device type and OTA Software Update Provider cluster server on the ProviderNodeID.

Cluster 42 Attributes

Cluster 42 defines 4 attributes plus the global attributes. Conformance: M mandatory, O optional, a feature code means "mandatory when that feature is present", square brackets mean "optional when …".

IDHexAttributeTypeConformanceAccessQualitiesDefault
00x0000DefaultOTAProviderslist of ProviderLocationMR/W (read: view, write: admin, fabric-scoped)persistedempty
10x0001UpdatePossibleboolMR (read: view)—true
20x0002UpdateStateUpdateStateEnumMR (read: view)——
30x0003UpdateStateProgressuint8MR (read: view)nullablenull

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.

Attribute Details

Attribute 0 / 0x0000 — DefaultOTAProviders

Path example:

0/42/0

No condensed specification text is available for DefaultOTAProviders; use the type, conformance and constraint below together with the cluster description above.

PropertyValue
Typelist of ProviderLocation
ConformanceM
AccessR/W (read: view, write: admin, fabric-scoped)
Qualitiespersisted
Constraintdesc
Defaultempty

Each entry is a ProviderLocation (see Data Types).

Example:

{
  "0/42/0": []
}

Attribute 1 / 0x0001 — UpdatePossible

Path example:

0/42/1

This field is set to True if the OTA Requestor is currently able to be updated. Otherwise, it is set to False in case of any condition preventing update being possible, such as insufficient capacity of an internal battery. This field is merely informational for diagnostics purposes and must NOT affect the responses provided by an OTA Provider to an OTA Requestor.

PropertyValue
Typebool
ConformanceM
AccessR (read: view)
Defaulttrue

Example:

{
  "0/42/1": true
}

Attribute 2 / 0x0002 — UpdateState

Path example:

0/42/2

This field should be updated in a timely manner whenever OTA Requestor internal state updates.

PropertyValue
TypeUpdateStateEnum
ConformanceM
AccessR (read: view)

Values (UpdateStateEnum):

ValueNameMeaning
0UnknownCurrent state is not yet determined.
1IdleIndicate a Node not yet in the process of software update.
2QueryingIndicate a Node in the process of querying an OTA Provider.
3DelayedOnQueryIndicate a Node waiting after a Busy response.
4DownloadingIndicate a Node currently in the process of downloading a software update.
5ApplyingIndicate a Node currently in the process of verifying and applying a software update.
6DelayedOnApplyIndicate a Node waiting caused by AwaitNextAction response.
7RollingBackIndicate a Node in the process of recovering to a previous version.
8DelayedOnUserConsentIndicate a Node is capable of user consent.

Example:

{
  "0/42/2": 1
}

Attribute 3 / 0x0003 — UpdateStateProgress

Path example:

0/42/3

This field reflects the percentage value of progress, relative to the current UpdateState, if applicable to the state. The value of this field is null if a progress indication does not apply to the current state. A value of 0 indicates that the beginning has occurred. A value of 100 indicates completion.

PropertyValue
Typeuint8
ConformanceM
AccessR (read: view)
Qualitiesnullable
Constraint0 to 100
Defaultnull

Example:

{
  "0/42/3": 0
}

Cluster 42 Commands

Cluster 42 has 1 client-to-server command and 0 responses.

IDHexCommandDirectionConformanceResponseDescription
00x00AnnounceOTAProviderclient → serverOstatus—

AcceptedCommandList

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

endpoint_id / 42 / 65529
{
  "0/42/65529": [
    0
  ]
}

Before sending a Cluster 42 command, check that the command ID exists in endpoint/42/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": 42,
    "command_name": "AnnounceOTAProvider",
    "payload": {},
    "timed_request_timeout_ms": 1000
  }
}

For Cluster 42, always use "cluster_id": 42. 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: AnnounceOTAProvider

Purpose

AnnounceOTAProvider is a client-to-server command of the OTA Software Update Requestor cluster.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command nameAnnounceOTAProvider
Directionclient → server
ConformanceO
Responsestatus
Access(invoke: admin)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ProviderNodeIDproviderNodeIDnode-idM——
1VendorIDvendorIDvendor-idM——
2AnnouncementReasonannouncementReasonAnnouncementReasonEnumM——
3MetadataForNodemetadataForNodeoctstrOmax length 512—
4Endpointendpointendpoint-noM——

AnnouncementReason values (AnnouncementReasonEnum): 0 = SimpleAnnouncement, 1 = UpdateAvailable, 2 = UrgentUpdateAvailable

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 42,
    "command_name": "AnnounceOTAProvider",
    "payload": {
      "providerNodeID": 1,
      "vendorID": 1,
      "announcementReason": 0,
      "endpoint": 1
    }
  }
}

Cluster 42 Events

IDHexEventPriorityConformanceDescription
00x00StateTransitioninfoMThis event is generated when a change of the UpdateState attribute occurs due to an OTA Requestor moving through the states necessary to query for updates.
10x01VersionAppliedcriticalMThis event is generated whenever a new version starts executing after being applied due to a software update.
20x02DownloadErrorinfoMThis event is generated whenever an error occurs during OTA Requestor download operation.

Event 0 — StateTransition

This event is generated when a change of the UpdateState attribute occurs due to an OTA Requestor moving through the states necessary to query for updates.

IDFieldTypeConformanceMeaning
0PreviousStateUpdateStateEnumMThis field is set to the state that preceded the transition causing this event to be generated, if such a state existed. If no previous state exists, the value is Unknown.
1NewStateUpdateStateEnumMThis field is set to the state now in effect through the transition causing this event to be generated.
2ReasonChangeReasonEnumMThis field is set to the reason why this event was generated.
3TargetSoftwareVersionuint32 (nullable)MThis field is set to the target SoftwareVersion which is the subject of the operation, whenever the NewState is Downloading, Applying or RollingBack. Otherwise TargetSoftwareVersion is null.

Event 1 — VersionApplied

This event is generated whenever a new version starts executing after being applied due to a software update. This event should be generated even if a software update was done using means outside of this cluster.

IDFieldTypeConformanceMeaning
0SoftwareVersionuint32MThis field is set to the same value as the one available in the Software Version attribute of the Basic Information Cluster for the newly executing version.
1ProductIDuint16M—

Event 2 — DownloadError

This event is generated whenever an error occurs during OTA Requestor download operation.

IDFieldTypeConformanceMeaning
0SoftwareVersionuint32MThis field is set to the value of the SoftwareVersion being downloaded, matching the SoftwareVersion field of the QueryImageResponse that caused the failing download to take place.
1BytesDownloadeduint64MThis field is set to the number of bytes that have been downloaded during the failing transfer that caused this event to be generated.
2ProgressPercentuint8 (nullable)MThis field is set to the nearest integer percent value reflecting how far within the transfer the failure occurred during the failing transfer that caused this event to be generated, unless the total length of the transfer is unknown, in which case it is null.
3PlatformCodeint64 (nullable)MThis field should be set to some internal product-specific error code, closest in temporal/functional proximity to the failure that caused this event to be generated. Otherwise, it is null.

SmartphoneKey Notes

  • Cluster 42 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/42/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.