Networking and diagnostics53 — Thread Network Diagnostics

Matter Cluster 53 — Thread Network Diagnostics

Documentation for Matter Cluster 53 (0x0035) Thread Network Diagnostics: features, all 65 attributes, structs, enums, commands, events, and how SmartphoneKey hubs expose Thread data.

Matter Cluster 53 — Thread Network Diagnostics

Matter Cluster 53, also written as 0x0035, is the Thread Network Diagnostics Cluster. It is served by every Matter node that has a Thread radio and reports how that node is attached to the Thread mesh: its role, channel, PAN, neighbors, routes, and radio counters. It is a diagnostics cluster: it does not control the device and it does not configure the Thread network.

Cluster Identity

FieldValue
Cluster ID decimal53
Cluster ID hex0x0035
Cluster nameThread Network Diagnostics
Cluster revision (Matter 1.6.1)3
Typical endpoint0 (root endpoint, one instance per node)
Spec sectionCore Specification, "Thread Network Diagnostics Cluster"

Thread Network Diagnostics is a node-level cluster. It lives on endpoint 0 next to Basic Information (40), General Diagnostics (51), and Network Commissioning (49). A node has exactly one Thread radio, so there is never more than one instance.

Related clusters:

ClusterRole
49 Network CommissioningAdds the Thread operational dataset to the node during commissioning (AddOrUpdateThreadNetwork).
51 General DiagnosticsLists the Thread interface in NetworkInterfaces with its IPv6 addresses and InterfaceType = Thread.
1106 Thread Border Router ManagementServed by a border router (hub), exposes the active/pending dataset it is running.
1107 Thread Network DirectoryServed by a hub, lists the Thread networks it knows about.

Shadow Path Format

Attribute paths follow the usual format:

endpoint / 53 / attribute

Example:

0/53/1
PartMeaning
0Root endpoint
53Thread Network Diagnostics cluster
1RoutingRole attribute

SmartphoneKey bridge behaviour. The Matter bridge deliberately excludes cluster 53 from the device state shadow (together with cluster 62 Operational Credentials), because the neighbor and route tables plus 60+ counters add roughly 3 KB per device and change constantly. As a result 0/53/* paths are not present in device shadows even though the bridge reads them from the node. Thread topology for a hub is available through the hub-side OTBR tooling (ot-ctl, the thread-topology viewer) and through the bridge logs, not through the shadow.


Features (FeatureMap, attribute 65532)

The feature map tells you which optional counter groups the node implements.

BitCodeFeatureAttributes it unlocks
0PKTCNTPacketCountsRx/Tx packet counts (22–55, packet-oriented subset)
1ERRCNTErrorCountsOverrunCount (6) and the error counters
2MLECNTMLECountsMesh Link Establishment role/attach counters 14–21
3MACCNTMACCountsMAC layer Tx/Rx counters 22–55

A FeatureMap of 0 is valid: the node then serves only the mandatory topology attributes (0–13, 59–64). Battery-powered sleepy end devices commonly report 0 or only MLECNT.


Attributes

All attributes are read-only. "Nullable" means the node returns null when it is not attached to a Thread network (role Unassigned/Unspecified). Conformance is from the 1.6.1 data model: M mandatory, O optional, or the feature that makes it mandatory.

Network identity and topology (0–13)

IDAttributeTypeConf.NullableMeaning
0Channeluint16MyesIEEE 802.15.4 channel in use (11–26 for 2.4 GHz).
1RoutingRoleRoutingRoleEnumMyesCurrent MLE role of the node. See the enum below.
2NetworkNamestring (≤16)MyesHuman-readable Thread network name, for example OpenThread-952e.
3PanIduint16Myes16-bit PAN ID of the Thread network.
4ExtendedPanIduint64Myes64-bit Extended PAN ID (XPAN). Unique per Thread network; use it to confirm a device joined the expected mesh.
5MeshLocalPrefixipv6preMyesMesh-local IPv6 prefix (fdxx::/64) of the network.
6OverrunCountuint64ERRCNTnoPackets dropped because of buffer overrun since boot or last ResetCounts.
7NeighborTablelist of NeighborTableStructMnoEvery neighbor the node has a direct MLE link with. Empty list when detached.
8RouteTablelist of RouteTableStructMnoRouter table: for a router/leader, one entry per allocated router ID. End devices usually report their parent only or an empty list.
9PartitionIduint32MyesID of the Thread partition the node belongs to. All nodes of a healthy mesh share one partition ID; different values mean the mesh is split.
10Weightinguint16MyesLeader weighting (0–255) used in partition election.
11DataVersionuint16MyesVersion of the full Thread Network Data.
12StableDataVersionuint16MyesVersion of the stable subset of Network Data.
13LeaderRouterIduint8MyesRouter ID (0–62) of the current leader.

MLE role and attach counters (14–21, feature MLECNT)

IDAttributeTypeMeaning
14DetachedRoleCountuint16Times the node transitioned into the detached role.
15ChildRoleCountuint16Times the node transitioned into the child role.
16RouterRoleCountuint16Times the node transitioned into the router role.
17LeaderRoleCountuint16Times the node transitioned into the leader role.
18AttachAttemptCountuint16Attach attempts started. A rising value with no role change means the device keeps trying and failing to join.
19PartitionIdChangeCountuint16Times the partition ID changed (mesh merged or split).
20BetterPartitionAttachAttemptCountuint16Attempts to attach to a better partition.
21ParentChangeCountuint16Times an end device switched parent. High values indicate poor link to the parent or an unstable mesh.

MAC transmit counters (22–38, feature MACCNT)

IDAttributeMeaning
22TxTotalCountTotal MAC frames transmitted.
23TxUnicastCountUnicast frames transmitted.
24TxBroadcastCountBroadcast frames transmitted.
25TxAckRequestedCountFrames sent with ACK requested.
26TxAckedCountFrames that were acknowledged.
27TxNoAckRequestedCountFrames sent without ACK request.
28TxDataCountData frames transmitted.
29TxDataPollCountData-poll frames transmitted (sleepy end devices polling their parent).
30TxBeaconCountBeacons transmitted.
31TxBeaconRequestCountBeacon requests transmitted.
32TxOtherCountOther frames transmitted.
33TxRetryCountMAC retries.
34TxDirectMaxRetryExpiryCountDirect frames dropped after max retries.
35TxIndirectMaxRetryExpiryCountIndirect (to sleepy child) frames dropped after max retries.
36TxErrCcaCountTransmissions aborted because the channel was busy (CCA failure).
37TxErrAbortCountTransmissions aborted for other reasons.
38TxErrBusyChannelCountTransmissions failed due to a busy channel.

All transmit counters are uint32.

MAC receive counters (39–55, feature MACCNT)

IDAttributeMeaning
39RxTotalCountTotal MAC frames received.
40RxUnicastCountUnicast frames received.
41RxBroadcastCountBroadcast frames received.
42RxDataCountData frames received.
43RxDataPollCountData-poll frames received (a parent counting polls from its sleepy children).
44RxBeaconCountBeacons received.
45RxBeaconRequestCountBeacon requests received.
46RxOtherCountOther frames received.
47RxAddressFilteredCountFrames dropped by address filtering.
48RxDestAddrFilteredCountFrames dropped because the destination address did not match.
49RxDuplicatedCountDuplicate frames received.
50RxErrNoFrameCountReceive errors: no frame.
51RxErrUnknownNeighborCountFrames from unknown neighbors.
52RxErrInvalidSrcAddrCountFrames with invalid source address.
53RxErrSecCountFrames failing security (MIC/key) checks. A rising value usually means a device with stale network keys.
54RxErrFcsCountFrames with bad FCS (checksum): RF noise or weak link.
55RxErrOtherCountOther receive errors.

All receive counters are uint32.

Operational dataset information (56–61)

IDAttributeTypeConf.NullableMeaning
56ActiveTimestampuint64OyesTimestamp of the active operational dataset.
57PendingTimestampuint64OyesTimestamp of the pending dataset, if one is scheduled.
58Delayuint32OyesDelay timer (ms) before the pending dataset becomes active.
59SecurityPolicySecurityPolicyMyesKey rotation time and security flags.
60ChannelPage0Maskoctstr (4 bytes)MyesBitmask of channels allowed on channel page 0.
61OperationalDatasetComponentsOperationalDatasetComponentsMyesWhich dataset components are present on the node (booleans). The dataset values themselves are never exposed here.

Faults and addressing (62–64)

IDAttributeTypeConf.NullableMeaning
62ActiveNetworkFaultsListlist of NetworkFaultEnumMnoCurrently active Thread network faults. Empty list = healthy.
63ExtAddressuint64MyesIEEE 802.15.4 extended (MAC) address of this node. Matches ExtAddress in other nodes' neighbor tables.
64Rloc16uint16MyesRouting Locator. Upper 6 bits = router ID, lower 10 bits = child ID (0 for routers).

Global attributes

IDAttribute
65528GeneratedCommandList (always empty)
65529AcceptedCommandList ([0] when ResetCounts is supported)
65531AttributeList
65532FeatureMap
65533ClusterRevision (3 for Matter 1.5/1.6.1 devices, 1–2 for older firmware)

Data Types

RoutingRoleEnum (attribute 1)

ValueNameMeaning
0UnspecifiedRole unknown / not reported.
1UnassignedNot attached to any Thread network (detached or disabled).
2SleepyEndDeviceSleepy end device (SED/SSED): radio off between polls. Battery sensors and locks.
3EndDeviceMinimal end device with radio always on; does not route.
4REEDRouter-Eligible End Device: an end device that can be promoted to router.
5RouterRouter: forwards traffic and accepts children. Mains-powered devices.
6LeaderRouter that also manages router-ID assignment and Network Data. One per partition.

For an end device the business-relevant distinction is 2/3 (attached) versus 1 (detached). Role changes between 4, 5 and 6 are normal mesh self-organisation and need no action.

NetworkFaultEnum (attribute 62, event 1)

ValueNameMeaning
0UnspecifiedUnspecified fault.
1LinkDownThread link is down.
2HardwareFailureRadio hardware failure.
3NetworkJammedChannel is jammed.

ConnectionStatusEnum (event 0)

ValueName
0Connected
1NotConnected

NeighborTableStruct (attribute 7)

FieldNameTypeMeaning
0ExtAddressuint64Extended address of the neighbor.
1Ageuint32Seconds since the last frame from this neighbor.
2Rloc16uint16Neighbor's routing locator.
3LinkFrameCounteruint32Last received MAC frame counter.
4MleFrameCounteruint32Last received MLE frame counter.
5LQIuint8Link Quality Indicator 0–255 (higher is better).
6AverageRssiint8Average RSSI in dBm (nullable).
7LastRssiint8RSSI of the last frame in dBm (nullable).
8FrameErrorRateuint8Frame error rate 0–100 %.
9MessageErrorRateuint8Message (IPv6) error rate 0–100 %.
10RxOnWhenIdleboolfalse = sleepy device.
11FullThreadDevicebooltrue = router-capable (FTD), false = minimal (MTD).
12FullNetworkDataboolNeighbor requests full Network Data.
13IsChildbooltrue = this neighbor is a child of the reporting node.

RouteTableStruct (attribute 8)

FieldNameTypeMeaning
0ExtAddressuint64Extended address of the router.
1Rloc16uint16Router's RLOC16.
2RouterIduint8Router ID 0–62.
3NextHopuint8Router ID of the next hop toward this router.
4PathCostuint8Path cost to this router (lower is better).
5LQIInuint8Incoming link quality 0–3.
6LQIOutuint8Outgoing link quality 0–3.
7Ageuint8Seconds since last update.
8AllocatedboolRouter ID is allocated.
9LinkEstablishedboolA direct link to this router exists.

SecurityPolicy (attribute 59)

FieldNameTypeMeaning
0RotationTimeuint16Network key rotation interval in hours.
1Flagsuint16Security policy flag bits (native commissioning, external commissioning, ...).

OperationalDatasetComponents (attribute 61)

Twelve booleans, in field order: ActiveTimestampPresent, PendingTimestampPresent, MasterKeyPresent, NetworkNamePresent, ExtendedPanIdPresent, MeshLocalPrefixPresent, DelayPresent, PanIdPresent, ChannelPresent, PskcPresent, SecurityPolicyPresent, ChannelMaskPresent.


Commands

IDCommandDirectionConformanceEffect
0ResetCountsclient → servermandatory if ERRCNTResets OverrunCount and all Tx/Rx/MLE counters to 0. No response payload (status only).

Use ResetCounts before a measurement window so counter deltas are meaningful. It does not affect topology attributes or the neighbor table.


Events

IDEventPriorityFieldsWhen
0ConnectionStatusinfoConnectionStatus (ConnectionStatusEnum)The node attached to or detached from the Thread network.
1NetworkFaultChangeinfoCurrent (list), Previous (list) of NetworkFaultEnumThe set of active network faults changed.

Both events are optional for the device. Most consumer devices implement neither; rely on the hub's own presence tracking for availability.


Interpreting the Values

Signal quality

MetricWhereGoodMarginalBad
AverageRssi / LastRssi (dBm)NeighborTable-25 … -60-60 … -75below -80
LQI (0–255)NeighborTableabove 200100–200below 100
LQIIn / LQIOut (0–3)RouteTable320–1
FrameErrorRate (%)NeighborTableunder 55–20over 20

RSSI is negative dBm: closer to 0 is stronger. A sleepy end device seen at -85 dBm with a frame error rate above 20 % will show delayed commands, missed reports, and eventually ParentChangeCount climbing.

Typical health checks

SymptomAttribute(s) to look at
Device "offline" but poweredRoutingRole = 1 Unassigned, AttachAttemptCount rising → cannot join; check dataset / network key (RxErrSecCount on neighbours).
Intermittent controlParent entry in NeighborTable with low RSSI/LQI or high FrameErrorRate; ParentChangeCount rising.
Two meshes with the same nameDifferent PartitionId / ExtendedPanId across devices.
Channel interferenceTxErrCcaCount, TxErrBusyChannelCount, RxErrFcsCount rising on the hub.
Leader flappingLeaderRouterId changing, LeaderRoleCount / PartitionIdChangeCount rising.

Example (raw bridge read, not shadow)

What the bridge reads from a mains-powered Thread device (Leader role) on a SmartphoneKey hub. Only a few attributes are shown.

{
  "0/53/0": 15,
  "0/53/1": 6,
  "0/53/2": "OpenThread-952e",
  "0/53/3": 38190,
  "0/53/4": 2524946908688426300,
  "0/53/7": [
    {
      "extAddress": 5262349371253485000,
      "age": 2,
      "rloc16": 5120,
      "lqi": 255,
      "averageRssi": -25,
      "lastRssi": -24,
      "frameErrorRate": 0,
      "messageErrorRate": 0,
      "rxOnWhenIdle": true,
      "fullThreadDevice": true,
      "fullNetworkData": true,
      "isChild": false
    }
  ],
  "0/53/9": 1193046127,
  "0/53/13": 48,
  "0/53/62": [],
  "0/53/64": 49152,
  "0/53/65532": 15,
  "0/53/65533": 3
}

Reading: channel 15, role Leader, one router neighbor at -25 dBm with perfect LQI, no faults, all four counter features present (FeatureMap = 15 = 0b1111), cluster revision 3.


SmartphoneKey Notes

  • Not in shadows. 0/53/* is filtered out of the device state shadow by the bridge (STATE_EXCLUDED_CLUSTERS). Do not build backend logic on these paths; they will be absent.
  • Device availability comes from the hub's presence pipeline, not from RoutingRole or ConnectionStatus.
  • Hub-side Thread view. On the hub the same information (and more: full topology, child tables, network data) is available through ot-ctl on the OTBR and the thread-topology viewer, which read the border router directly instead of polling each device over Matter.
  • Sleepy devices (locks, sensors). Reading cluster 53 on a sleepy end device wakes it only on its next poll; expect latency of seconds to minutes and keep diagnostic reads rare. The counters on such devices are usually absent (FeatureMap = 0).
  • Revision. Devices certified against Matter 1.2–1.4 report ClusterRevision 1 or 2 and may lack attributes 63/64 (ExtAddress, Rloc16); treat missing attributes as unsupported, not as an error.