Networking and diagnostics70 — ICD Management

Matter Cluster 70 — ICD Management

Matter Cluster 70 (0x0046) ICD Management: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 70 — ICD Management Cluster

Matter Cluster 70, also written as 0x0046, is the ICD Management Cluster. ICD Management Cluster enables configuration of the ICD's behavior and ensuring that listed clients can be notified when an intermittently connected device, ICD, is available for communication. The cluster implements the requirements of the Check-In Protocol that enables the ICD Check-In use case.

Cluster Identity

FieldValue
Cluster ID decimal70
Cluster ID hex0x0046
Cluster nameICD Management
Cluster revision (Matter 1.6.1)3
Roleutility
ScopeNode
PICS codeICDM
Typical endpoint0

Revision history

RevisionChange
1Initial revision
2Addition of LIT ICD support, UserActiveModeTrigger, ActiveModeDuration, StayActiveResponse; removal of field Key in MonitoringRegistrationStruct
3Addition of the ClientType attribute; addition of the ICD Check-In Backoff support; addition of the DynamicSitLitSupport feature

Shadow Path Format

Cluster 70 values in the device shadow use this format:

endpoint_id / 70 / attribute_id

Example:

{
  "0/70/0": 1
}
PartMeaning
0Endpoint ID
70ICD Management cluster
0IdleModeDuration attribute

Cluster 70 Features

The FeatureMap attribute (0/70/65532) is a bitmap. Each bit set means the device implements that feature and the attributes and commands that depend on it.

BitCodeFeatureConformanceMeaning
0CIPCheckInProtocolSupportLITS, ODevice supports attributes and commands for the Check-In Protocol support
1UATUserActiveModeTriggerLITS, ODevice supports the user active mode trigger feature
2LITSLongIdleTimeSupportODevice supports operating as a Long Idle Time ICD
3DSLSDynamicSitLitSupport[LITS]Device supports dynamic switching from SIT to LIT operating modes

Example: FeatureMap = 0 means no optional feature is enabled; 15 means every feature listed above is enabled.


Data Types

ClientTypeEnum

ValueNameConformanceMeaning
0PermanentMThe client is typically resident, always-on, fixed infrastructure in the home.
1EphemeralMThe client is mobile or non-resident or not always-on and may not always be available in the home.

OperatingModeEnum

ValueNameConformanceMeaning
0SITMICD is operating as a Short Idle Time ICD.
1LITMICD is operating as a Long Idle Time ICD.

UserActiveModeTriggerBitmap (bitmap)

See the UserActiveModeTriggerHint table for requirements associated to each bit.

BitNameConformanceMeaning
0PowerCycleMPower Cycle to transition the device to ActiveMode
1SettingsMenuMSettings menu on the device informs how to transition the device to ActiveMode
2CustomInstructionMCustom Instruction on how to transition the device to ActiveMode
3DeviceManualMDevice Manual informs how to transition the device to ActiveMode
4ActuateSensorMActuate Sensor to transition the device to ActiveMode
5ActuateSensorSecondsMActuate Sensor for N seconds to transition the device to ActiveMode
6ActuateSensorTimesMActuate Sensor N times to transition the device to ActiveMode
7ActuateSensorLightsBlinkMActuate Sensor until light blinks to transition the device to ActiveMode
8ResetButtonMPress Reset Button to transition the device to ActiveMode
9ResetButtonLightsBlinkMPress Reset Button until light blinks to transition the device to ActiveMode
10ResetButtonSecondsMPress Reset Button for N seconds to transition the device to ActiveMode
11ResetButtonTimesMPress Reset Button N times to transition the device to ActiveMode
12SetupButtonMPress Setup Button to transition the device to ActiveMode
13SetupButtonSecondsMPress Setup Button for N seconds to transition the device to ActiveMode
14SetupButtonLightsBlinkMPress Setup Button until light blinks to transition the device to ActiveMode
15SetupButtonTimesMPress Setup Button N times to transition the device to ActiveMode
16AppDefinedButtonMPress the N Button to transition the device to ActiveMode

MonitoringRegistrationStruct (struct) — fabric-scoped

FieldNameTypeConformanceConstraintMeaning
1CheckInNodeIDnode-idM——
2MonitoredSubjectsubject-idM—Indicates the monitored Subject ID.
3KeyD—This field is deprecated.
4ClientTypeClientTypeEnumM—Indicates the client's type to inform the ICD of the availability for communication of the client.

Cluster 70 Attributes

Cluster 70 defines 10 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
00x0000IdleModeDurationuint32MR (read: view)—1
10x0001ActiveModeDurationuint32MR (read: view)—300
20x0002ActiveModeThresholduint16MR (read: view)—300
30x0003RegisteredClientslist of MonitoringRegistrationStructCIPR (read: admin, fabric-scoped)persistedempty
40x0004ICDCounteruint32CIPR (read: admin)persisted, change omitted0
50x0005ClientsSupportedPerFabricuint16CIPR (read: view)—1
60x0006UserActiveModeTriggerHintUserActiveModeTriggerBitmapUATR (read: view)—0
70x0007UserActiveModeTriggerInstructionstringdescR (read: view)—""
80x0008OperatingModeOperatingModeEnumLITSR (read: view)——
90x0009MaximumCheckInBackoffuint32CIPR (read: view)—1

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; 3 for a Matter 1.6.1 device.

Attribute Details

Attribute 0 / 0x0000 — IdleModeDuration

Path example:

0/70/0

Indicates the maximum interval in seconds the server can stay in idle mode. The IdleModeDuration must NOT be smaller than the ActiveModeDuration.

PropertyValue
Typeuint32
ConformanceM
AccessR (read: view)
Constraint1 to 64800
Default1

Example:

{
  "0/70/0": 1
}

Attribute 1 / 0x0001 — ActiveModeDuration

Path example:

0/70/1

Indicates the minimum interval in milliseconds the server typically will stay in active mode after initial transition out of idle mode. The ActiveModeDuration does not include the ActiveModeThreshold.

PropertyValue
Typeuint32
ConformanceM
AccessR (read: view)
Default300

Example:

{
  "0/70/1": 1
}

Attribute 2 / 0x0002 — ActiveModeThreshold

Path example:

0/70/2

Indicates the minimum amount of time in milliseconds the server typically will stay active after network activity when in active mode.

PropertyValue
Typeuint16
ConformanceM
AccessR (read: view)
Default300

Example:

{
  "0/70/2": 1
}

Attribute 3 / 0x0003 — RegisteredClients

Path example:

0/70/3

This attribute contains all clients registered to receive notification if their subscription is lost. The maximum number of entries that can be in the list is ClientsSupportedPerFabric for each fabric supported on the server, as indicated by the value of the SupportedFabrics attribute in the Operational Credentials cluster.

PropertyValue
Typelist of MonitoringRegistrationStruct
ConformanceCIP
AccessR (read: admin, fabric-scoped)
Qualitiespersisted
Constraintdesc
Defaultempty

Each entry is a MonitoringRegistrationStruct (see Data Types).

Example:

{
  "0/70/3": []
}

Attribute 4 / 0x0004 — ICDCounter

Path example:

0/70/4

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

PropertyValue
Typeuint32
ConformanceCIP
AccessR (read: admin)
Qualitiespersisted, change omitted
Default0

Example:

{
  "0/70/4": 1
}

Attribute 5 / 0x0005 — ClientsSupportedPerFabric

Path example:

0/70/5

Indicates the maximum number of entries that the server is able to store for each fabric in the RegisteredClients attribute.

PropertyValue
Typeuint16
ConformanceCIP
AccessR (read: view)
Constraintmin 1
Default1

Example:

{
  "0/70/5": 1
}

Attribute 6 / 0x0006 — UserActiveModeTriggerHint

Path example:

0/70/6

Indicates which user action(s) will trigger the ICD to switch to Active mode. If the attribute indicates support for a trigger that is dependent on the UserActiveModeTriggerInstruction in the UserActiveModeTriggerHint table, the UserActiveModeTriggerInstruction attribute is implemented and provides the required information, unless specified otherwise in the requirement column of the UserActiveModeTriggerHint table. ActuateSensorLightsBlink, ResetButtonLightsBlink and SetupButtonLightsBlink (i.e. bits 7, 9 and 14) have a dependency on the UserActiveModeTriggerInstruction attribute but do not require the attribute to be present.

PropertyValue
TypeUserActiveModeTriggerBitmap
ConformanceUAT
AccessR (read: view)
Constraintdesc
Default0

Bits (UserActiveModeTriggerBitmap):

BitNameMeaning
0PowerCyclePower Cycle to transition the device to ActiveMode
1SettingsMenuSettings menu on the device informs how to transition the device to ActiveMode
2CustomInstructionCustom Instruction on how to transition the device to ActiveMode
3DeviceManualDevice Manual informs how to transition the device to ActiveMode
4ActuateSensorActuate Sensor to transition the device to ActiveMode
5ActuateSensorSecondsActuate Sensor for N seconds to transition the device to ActiveMode
6ActuateSensorTimesActuate Sensor N times to transition the device to ActiveMode
7ActuateSensorLightsBlinkActuate Sensor until light blinks to transition the device to ActiveMode
8ResetButtonPress Reset Button to transition the device to ActiveMode
9ResetButtonLightsBlinkPress Reset Button until light blinks to transition the device to ActiveMode
10ResetButtonSecondsPress Reset Button for N seconds to transition the device to ActiveMode
11ResetButtonTimesPress Reset Button N times to transition the device to ActiveMode
12SetupButtonPress Setup Button to transition the device to ActiveMode
13SetupButtonSecondsPress Setup Button for N seconds to transition the device to ActiveMode
14SetupButtonLightsBlinkPress Setup Button until light blinks to transition the device to ActiveMode
15SetupButtonTimesPress Setup Button N times to transition the device to ActiveMode
16AppDefinedButtonPress the N Button to transition the device to ActiveMode

Example:

{
  "0/70/6": 0
}

Attribute 7 / 0x0007 — UserActiveModeTriggerInstruction

Path example:

0/70/7

The meaning of the attribute is dependent upon the UserActiveModeTriggerHint attribute value, and the conformance is in indicated in the "dependency" column in UserActiveModeTriggerHint table. The UserActiveModeTriggerInstruction attribute may give additional information on how to transition the device to Active Mode. If the attribute is present, the value is encoded as a valid UTF-8 string with a maximum length of 128 bytes.

PropertyValue
Typestring
Conformancedesc
AccessR (read: view)
Constraintmax length 128
Default""

Example:

{
  "0/70/7": "example"
}

Attribute 8 / 0x0008 — OperatingMode

Path example:

0/70/8

Indicates the operating mode of the ICD as specified in the OperatingModeEnum. - If the ICD is operating as a LIT ICD, OperatingMode is LIT. - If the ICD is operating as a SIT ICD, OperatingMode is SIT.

PropertyValue
TypeOperatingModeEnum
ConformanceLITS
AccessR (read: view)

Values (OperatingModeEnum):

ValueNameMeaning
0SITICD is operating as a Short Idle Time ICD.
1LITICD is operating as a Long Idle Time ICD.

Example:

{
  "0/70/8": 0
}

Attribute 9 / 0x0009 — MaximumCheckInBackoff

Path example:

0/70/9

Indicates the maximum time in seconds between two Check-In messages when back-off is active. The MaximumCheckInBackoff must NOT be smaller than the IdleModeDuration. If the MaximumCheckInBackoff is equal to the IdleModeDuration, it means the ICD does not back-off.

PropertyValue
Typeuint32
ConformanceCIP
AccessR (read: view)
ConstraintIdleModeDuration to 64800
Default1

Example:

{
  "0/70/9": 1
}

Cluster 70 Commands

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

IDHexCommandDirectionConformanceResponseDescription
00x00RegisterClientclient → serverCIPRegisterClientResponseThis command allows a client to register itself with the ICD to be notified when the device is available for communication.
10x01RegisterClientResponseserver → clientCIP—This command is sent by the ICD Management Cluster server in response to a successful RegisterClient command.
20x02UnregisterClientclient → serverCIPstatusThis command allows a client to unregister itself with the ICD.
30x03StayActiveRequestclient → serverLITS, OStayActiveResponseThis command allows a client to request that the server stays in active mode for at least a given time duration (in milliseconds) from when this command is received.
40x04StayActiveResponseserver → clientLITS, O—This message is sent by the ICD in response to the StayActiveRequest command and contains the computed duration (in milliseconds) that the ICD intends to stay active for.

AcceptedCommandList

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

endpoint_id / 70 / 65529
{
  "0/70/65529": [
    0,
    2,
    3
  ]
}

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

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

Purpose

This command allows a client to register itself with the ICD to be notified when the device is available for communication.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command nameRegisterClient
Directionclient → server
ConformanceCIP
ResponseRegisterClientResponse
Access(invoke: manage, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0CheckInNodeIDcheckInNodeIDnode-idM——
1MonitoredSubjectmonitoredSubjectsubject-idM—This field provides the monitored subject ID.
2KeykeyoctstrMallowed: 16This field contains the ICDToken, a 128-bit symmetric key shared by the ICD and the ICD Client, used to encrypt Check-In messages from this ICD to the MonitoredSubject.
3VerificationKeyverificationKeyoctstrOallowed: 16This field provides the verification key. The verification key represents the key already stored on the server.
4ClientTypeclientTypeClientTypeEnumM—This field provides the client type of the client registering.

ClientType values (ClientTypeEnum): 0 = Permanent, 1 = Ephemeral

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 70,
    "command_name": "RegisterClient",
    "payload": {
      "checkInNodeID": 1,
      "monitoredSubject": 1,
      "key": "AQID",
      "clientType": 0
    }
  }
}

The device answers with RegisterClientResponse (see below).


Command: RegisterClientResponse

Purpose

This command is sent by the ICD Management Cluster server in response to a successful RegisterClient command.

Command Identity

FieldValue
Command ID1
Command hex0x01
Command nameRegisterClientResponse
Directionserver → client (response)
ConformanceCIP

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0ICDCountericdCounteruint32M——

Command: UnregisterClient

Purpose

This command allows a client to unregister itself with the ICD. Example: a client that is leaving the network (e.g. running on a phone which is leaving the home) can (and should) remove its subscriptions and send this UnregisterClient command before leaving to prevent the burden on the ICD of an absent client.

Command Identity

FieldValue
Command ID2
Command hex0x02
Command nameUnregisterClient
Directionclient → server
ConformanceCIP
Responsestatus
Access(invoke: manage, fabric-scoped)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0CheckInNodeIDcheckInNodeIDnode-idM——
1VerificationKeyverificationKeyoctstrOallowed: 16This field provides the verification key associated with the CheckInNodeID to remove from storage. The verification key represents the key already stored on the server.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 70,
    "command_name": "UnregisterClient",
    "payload": {
      "checkInNodeID": 1
    }
  }
}

Command: StayActiveRequest

Purpose

This command allows a client to request that the server stays in active mode for at least a given time duration (in milliseconds) from when this command is received. This StayActiveDuration may be longer than the ActiveModeThreshold value and would, typically, be used by the client to request the server to stay active and responsive for this period to allow a sequence of message exchanges during that period. The client may slightly overestimate the duration it wants the ICD to be active for, in order to account for network delays.

Command Identity

FieldValue
Command ID3
Command hex0x03
Command nameStayActiveRequest
Directionclient → server
ConformanceLITS, O
ResponseStayActiveResponse
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0StayActiveDurationstayActiveDurationuint32M——

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 0,
    "cluster_id": 70,
    "command_name": "StayActiveRequest",
    "payload": {
      "stayActiveDuration": 1
    }
  }
}

The device answers with StayActiveResponse (see below).


Command: StayActiveResponse

Purpose

This message is sent by the ICD in response to the StayActiveRequest command and contains the computed duration (in milliseconds) that the ICD intends to stay active for.

Command Identity

FieldValue
Command ID4
Command hex0x04
Command nameStayActiveResponse
Directionserver → client (response)
ConformanceLITS, O

Response Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0PromisedActiveDurationpromisedActiveDurationuint32MdescThis field provides the actual duration that the ICD server can stay active from the time it receives the StayActiveRequest command.

Cluster 70 Events

Cluster 70 defines no events.


SmartphoneKey Notes

  • Sleepy devices (locks, sensors) are ICDs: expect 0/70/* on them. Long Idle Time (LIT) devices only wake on their own schedule; live attribute reads time out by design.
  • Shadow paths follow endpoint/70/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.