BasicInformation Cluster
Cluster ID: 0x0028 |
Endpoint: Only on Endpoint 0 (Root Node)
BasicInformation provides core device metadata — including vendor information, product identification, hardware/software versions, serial numbers, product appearance, and protocol capabilities.
This Cluster is mandatory for every Matter device and only exists on Endpoint 0.
Most of its attributes are read-only; only NodeLabel and LocalConfigDisabled are writable.
Unlike most functional Clusters, BasicInformation can only appear on Endpoint 0 (Root Node Endpoint).
Reading this Cluster on Endpoint 1 will return an UNSUPPORTED_CLUSTER error.
Always specify endpointId = 0 when reading device information in code.
The vendor, model, firmware version and serial number an app shows all come from this cluster. Together with Descriptor (device types and cluster lists) it is everything you need to identify a device after commissioning. See Concepts · Reading a device's capabilities. To see real data, open the JSON Parser and pick the "Raw device data" sample.
Attribute Overview
BasicInformation has 23 attributes organized into five groups. Click an attribute ID to jump to its detailed description.
| ID | Name | Type | Group | Description |
|---|---|---|---|---|
0x00 |
DataModelRevision | uint16 | Vendor Information | Data Model revision number |
0x01 |
VendorName | string | Vendor Information | Vendor name |
0x02 |
VendorID | vendor-id | Vendor Information | Vendor ID (assigned by CSA) |
0x03 |
ProductName | string | Vendor Information | Product name |
0x04 |
ProductID | uint16 | Vendor Information | Product ID (vendor-defined) |
0x05 |
NodeLabel | string | Product Information | User-defined device name (writable) |
0x06 |
Location | string | Product Information | ISO 3166-1 alpha-2 country code |
0x0B |
ManufacturingDate | string | Product Information | Manufacturing date (ISO 8601 format) |
0x0C |
PartNumber | string | Product Information | Part number |
0x0D |
ProductURL | string | Product Information | Product page URL |
0x0E |
ProductLabel | string | Product Information | Product label (user-facing short name) |
0x0F |
SerialNumber | string | Product Information | Serial number |
0x12 |
UniqueID | string | Product Information | Device unique identifier |
0x07 |
HardwareVersion | uint16 | Version Information | Hardware version number |
0x08 |
HardwareVersionString | string | Version Information | Hardware version string |
0x09 |
SoftwareVersion | uint32 | Version Information | Software version number (used for OTA comparison) |
0x0A |
SoftwareVersionString | string | Version Information | Software version string (user-facing) |
0x10 |
LocalConfigDisabled | bool | Device Status | Whether local configuration is disabled (writable) |
0x11 |
Reachable | bool | Device Status | Whether the device is reachable |
0x13 |
CapabilityMinima | struct | Capabilities | Device minimum capability declaration |
0x14 |
ProductAppearance | struct | Capabilities | Product appearance description (finish + color) |
0x15 |
SpecificationVersion | uint32 | Capabilities | Matter specification version implemented by device |
0x16 |
MaxPathsPerInvoke | uint16 | Capabilities | Maximum paths per single Invoke |
Vendor Information (0x00 – 0x04)
Device vendor and product identifiers, assigned by CSA or set by the vendor. These attributes are fixed at manufacturing time and cannot be changed at runtime.
| ID | Name | Type | Description |
|---|---|---|---|
0x00 |
DataModelRevision | uint16 | The Data Model revision implemented by the device. Used to determine which data model features the device supports |
0x01 |
VendorName | string | Human-readable vendor name, max 32 characters. E.g. "Acme Corp", "Espressif" |
0x02 |
VendorID | vendor-id | Vendor number assigned by CSA (Connectivity Standards Alliance). Test VIDs are 0xFFF1–0xFFF4 |
0x03 |
ProductName | string | Human-readable product name, max 32 characters. E.g. "Smart Light", "Door Lock Pro" |
0x04 |
ProductID | uint16 | Product number assigned by the vendor; combined with VendorID to uniquely identify a product |
The combination of VendorID and ProductID uniquely identifies a Matter product.
During commissioning, the Commissioner (e.g. phone App) uses these two values to match the correct device driver and UI configuration.
The DCL (Distributed Compliance Ledger) also uses this combination to query device certification information.
Product Information (0x05 – 0x06, 0x0B – 0x0F, 0x12)
Detailed product information — user labels, manufacturing date, serial numbers, etc. Most of these attributes are optional; actual devices may only implement a few of them.
| ID | Name | Type | Description |
|---|---|---|---|
0x05 |
NodeLabel | string | User-defined device name, max 32 characters. Writable — App can modify via Write operation, e.g. rename to "Living Room Light" |
0x06 |
Location | string | Device country/region, ISO 3166-1 alpha-2 format, e.g. "CN", "US". Fixed 2 characters |
0x0B |
ManufacturingDate | string | Manufacturing date, ISO 8601 format, e.g. "2025-01-15". Optional attribute |
0x0C |
PartNumber | string | Vendor's internal part number, max 32 characters. Optional attribute |
0x0D |
ProductURL | string | Product page URL, max 256 characters. Optional. Directs users to product details or manuals |
0x0E |
ProductLabel | string | User-facing product short name, max 64 characters. Usually shorter than ProductName, suitable for UI display |
0x0F |
SerialNumber | string | Device serial number, max 32 characters. Unique per device |
0x12 |
UniqueID | string | Device globally unique identifier, max 32 characters. Does not change even after factory reset; useful for device deduplication |
Among BasicInformation's 23 attributes, only NodeLabel and LocalConfigDisabled support Write operations.
NodeLabel is the most commonly used — when users rename a device in the App, they are actually modifying this attribute.
Write operations require ACL permission checks and Manage-level privilege by default.
Version Information (0x07 – 0x0A)
Device hardware and software version information. The OTA upgrade process relies on these version numbers to determine whether an update is needed.
| ID | Name | Type | Description |
|---|---|---|---|
0x07 |
HardwareVersion | uint16 | Hardware version numeric code, vendor-defined. Used to distinguish different hardware batches |
0x08 |
HardwareVersionString | string | Human-readable hardware version, 1–64 characters, e.g. "v1.0", "Rev B" |
0x09 |
SoftwareVersion | uint32 | Firmware version numeric code. OTA Provider compares this value with the new firmware version to decide whether to push an update. Higher value = newer version |
0x0A |
SoftwareVersionString | string | Human-readable software version, 1–64 characters, e.g. "v2.0.1". The version shown to users |
Each version has two attributes: a numeric code (Version) and a string (VersionString).
The numeric code is used for programmatic comparison (e.g. OTA version checks); the string is for UI display.
Apps should use SoftwareVersionString when displaying firmware versions;
compare SoftwareVersion numeric values when determining whether an upgrade is needed.
Device Status (0x10 – 0x11)
Describes the device's current operating status and configuration mode.
| ID | Name | Type | Description |
|---|---|---|---|
0x10 |
LocalConfigDisabled | bool | Writable. When set to true, the device should prohibit configuration changes via physical buttons or other local methods. Default false |
0x11 |
Reachable | bool | Whether the device is currently reachable. Especially important for Bridged devices — the Bridge uses this attribute to inform the Controller of sub-device online status. Directly connected devices are typically always true |
For devices directly connected to the Matter Fabric, Reachable essentially means "true as long as communication is possible".
But for sub-devices connected via a Bridge (e.g. Zigbee light bulbs exposed through a Matter Bridge), Reachable reflects
the connection status between the Bridge and the sub-device. When a sub-device goes offline, the Bridge sets Reachable to false
and triggers the ReachableChanged event.
Capabilities (0x13 – 0x16)
Describes the protocol capabilities and product appearance supported by the device.
| ID | Name | Type | Description |
|---|---|---|---|
0x13 |
CapabilityMinima | struct | Minimum protocol capabilities declared by the device (see struct description below) |
0x14 |
ProductAppearance | struct | Physical appearance of the product: surface finish and primary color (see struct and enum descriptions below) |
0x15 |
SpecificationVersion | uint32 | Matter specification version implemented by the device. Encoded as Major.Minor.Patch.Reserved, 8 bits each. E.g. 0x01010000 = Matter 1.1.0 |
0x16 |
MaxPathsPerInvoke | uint16 | Maximum number of Command paths allowed in a single Invoke Request. Minimum 1 |
CapabilityMinima Struct
Describes the device's minimum protocol processing capabilities. Controllers can adjust their interaction strategy accordingly.
| Field | Type | Description |
|---|---|---|
| CaseSessionsPerFabric | uint16 | Maximum concurrent CASE Sessions per Fabric. Minimum 3 |
| SubscriptionsPerFabric | uint16 | Maximum concurrent Subscriptions per Fabric. Minimum 3 |
If a Controller needs to establish multiple CASE Sessions with the same device (e.g. simultaneous OTA and control),
it should first check CaseSessionsPerFabric to confirm the device supports it.
The same applies to SubscriptionsPerFabric — if an App needs to subscribe to multiple attribute change notifications,
ensure the total subscription count does not exceed the device's declared limit.
ProductAppearance Struct
Describes the product's physical appearance characteristics, used for displaying device icons or color schemes in the App.
| Field | Type | Description |
|---|---|---|
| Finish | ProductFinishEnum | Product surface finish (see enum below) |
| PrimaryColor | ColorEnum | Product primary color (see enum below). Nullable — null when not applicable |
ProductFinishEnum (Surface Finish)
ColorEnum (Product Color)
Command
Early versions of BasicInformation had one optional Command; in newer versions (this site checks against v1.6) the cluster has no commands at all:
| ID | Name | Direction | Required | Description |
|---|---|---|---|---|
0x00 |
MfgSpecificPing Removed in newer versions | Client → Server | Optional | Vendor-specific Ping command for detecting device response. No parameters, no return value |
This command only appeared in early definitions, was optional, and very few devices ever implemented it; newer Matter versions no longer include it.
To check if a device is online, simply read any attribute (e.g. SoftwareVersion) —
a successful read means the device is online.
Example Data
A typical Matter device's BasicInformation Cluster read result:
{
// --- Vendor Information ---
"0x0": 17, // DataModelRevision = 17
"0x1": "Acme Corp", // VendorName
"0x2": 65521, // VendorID = 0xFFF1 (test vendor)
"0x3": "Smart Light", // ProductName
"0x4": 32769, // ProductID = 0x8001
// --- Product Information ---
"0x5": "Living Room Light", // NodeLabel (user-defined name)
"0x6": "CN", // Location = China
"0xB": "2025-01-15", // ManufacturingDate
"0xC": "ABC-1234", // PartNumber
"0xD": "https://example.com/product", // ProductURL
"0xE": "Smart Light Pro", // ProductLabel
"0xF": "SN20250115001", // SerialNumber
"0x12": "a1b2c3d4e5f6", // UniqueID
// --- Version Information ---
"0x7": 1, // HardwareVersion = 1
"0x8": "v1.0", // HardwareVersionString
"0x9": 2, // SoftwareVersion = 2
"0xA": "v2.0.1", // SoftwareVersionString
// --- Device Status ---
"0x10": false, // LocalConfigDisabled = false (local config enabled)
"0x11": true, // Reachable = true (device reachable)
// --- Capabilities ---
"0x13": { // CapabilityMinima
"CaseSessionsPerFabric": 3,
"SubscriptionsPerFabric": 3
},
"0x14": { // ProductAppearance
"Finish": 1, // Matte
"PrimaryColor": 7 // Gray
},
"0x15": 65792, // SpecificationVersion = 0x01010000 → 1.1.0.0
"0x16": 1 // MaxPathsPerInvoke = 1
}
After the App first connects to a device, it typically reads BasicInformation to display the device details page:
- Read
VendorName (0x01)+ProductName (0x03)as the device title - Read
NodeLabel (0x05)to display the user-defined name (if available) - Read
SoftwareVersionString (0x0A)to display the current firmware version - Read
SerialNumber (0x0F)for after-sales support or device management - Read
Reachable (0x11)to determine device online status (Bridged devices)
Note that all reads must specify endpointId = 0, since BasicInformation only exists on the Root Node.