Skip to Content

The compatibility matrix, and the gap between yes and tested

yes means tested, not promised
Matter Hub Guide · Part 10

The compatibility matrix, and the gap between yes and tested

Parts 8 and 9 walked you through commissioning with Apple Home, Google Home and Amazon Alexa one controller at a time. This part pulls back and asks a bigger question: across all five ecosystems Matter Hub can reach — Apple Home, Google Home, Alexa, Aqara Home and SmartThings — which of the 52 Matter device types in Stable v2.0.55 actually works where? The answer is not a single yes-or-no. It is a matrix with four possible marks per cell, a set of rules for which mark you are allowed to write, and a method for building your own evidence instead of trusting a marketing page. None of it replaces testing on your own network. All of it stops you from guessing.

52
Matter device type identifiers this matrix covers in Stable v2.0.55. The identifiers are pinned strings — treat every row as a literal, not an approximation
5
Controllers on the matrix: Apple Home, Google Home, Alexa, Aqara Home and SmartThings. No two of the five read a bridge the same way
~80–100
Alexa's rough practical device ceiling per hub, from the upstream planning note — a signal for when to split a bridge, not a number anyone measured for you
Why a matrix, not a checkbox

“Matter support” is not one question

Matter Hub can map a Home Assistant domain onto a Matter device type. That is one fact. Whether a given controller accepts the bridge, whether it shows the endpoint, whether it offers commands, whether it subscribes to state changes, and whether it supports whatever newer Matter version it needs — those are five separate facts, and Apple Home, Google Home, Alexa, Aqara Home and SmartThings answer each of them differently. All five speak Matter. None of them give you the same interface or the same cluster coverage once you actually commission a device.

TermPlain EnglishIn one line
Matter device typea category labelOne of 52 fixed identifiers, such as door_lock or fan, that Matter Hub can map an entity onto
Clusterone capabilityA specific feature inside a device type — on/off, color, brightness — that a controller may or may not read
Bridgethe thing being sharedThe Matter Hub bridge instance that presents your entities to a controller as a fabric of endpoints
Fabricone controller's membershipThe relationship one controller has with a bridge once it has commissioned it, covered in Part 8
Evidence markthe matrix's verdictOne of four labels — yes, partial, no, unknown — this chapter defines below

The matrix later in this part is a planning starting point, not a certification. It combines what Matter Hub v2.0.55's mappings can reach, the feature manifest, and each ecosystem's own published device-type list. It does not combine test results from your specific hub, your specific firmware, or your specific home — only you can produce those.

A specific boundary, stated plainly. This guide does not promise that Aqara Home or SmartThings fully support Matter Hub. Both ecosystems have real Matter capabilities, and that is not the same claim as “this third-party bridge has been verified, type by type, against both of them.” Where the evidence stops, the matrix says unknown, not yes.
Reading yes, partial, no, unknown

Four marks, and the evidence each one actually requires

Every cell in the matrix carries exactly one of four marks. They are not a scale from bad to good — they are four different claims about what evidence exists, and mixing them up is how a “probably fine” guess turns into a written promise nobody checked.

MarkWhat it meansWhat you still have to do
yesThe controller's own public material lists this Matter type or basic capability, and Matter Hub has a mapping path for itTest discovery, basic commands, state reporting and a restart yourself. This is not a guarantee of full cluster support
partialOnly some sub-types, commands or UI elements are present; a newer platform version or a workaround is needed; or the bridge-specific evidence is thinRecord exactly what is missing, and split off a controller-specific bridge if you need to
noA pinned source explicitly excludes it, or the dedicated flag manifest marks that controller as noDo not try to turn a no into a yes by resetting the fabric or re-commissioning
unknownThe official material is not enough to confirm this bridge-and-type combination, and there is no controlled test evidence eitherTest at small scale and report it conservatively. Do not write it up as supported or unsupported

The matrix works at the basic-device-type level, not the individual-cluster level. A light's on/off may be yes while its color or its transition effects are still partial; a vacuum may be partial overall while room cleaning and progress reporting stay unknown. When a type covers several clusters like that, the rule is to record the more conservative mark for the row, not the more flattering one.

In plain terms

A yes in this matrix is the item on the restaurant's own menu — the kitchen says it can make this dish. It is not the plate that arrives at your table. You only find out whether it was cooked the way you needed once you have actually ordered it, on your own network, on your own controller version. That is why every single yes in this chapter still comes with the same instruction: test it yourself.

flowchart TD
  A["Official material for this controller,
for one specific Matter device type"] --> B{"Is the type or basic
capability listed at all?"} B -->|"not listed anywhere"| U["Unknown"] B -->|"listed"| C{"Does Matter Hub v2.0.55
have a mapping path for it?"} C -->|"no mapping path"| U C -->|"a mapping exists"| D{"Does a pinned source or the
flag manifest exclude it?"} D -->|"explicit exclusion"| N["No"] D -->|"no exclusion found"| E{"Are advanced features, the UI,
or the platform version still limited?"} E -->|"limited in some way"| P["Partial"] E -->|"basic path fully covered"| Y["Yes"]
Four terminal boxes, one for each markUnknown is the only mark reached twice — once from a missing listing, once from a listing with no mapping path. No and Partial each have exactly one route in. Yes is the only mark that requires clearing all four gates. The point of drawing it this way: “nobody has checked” and “somebody checked and excluded it” are different boxes, and only the second one is No.
Three layers before the controller

Apply these three limits before you even look at a controller

Before a single controller enters the picture, three layers already narrow what any mark in this matrix can honestly claim.

LayerBaseline for this guideEffect on the matrix
Release channelHome Assistant Matter Hub Stable v2.0.55, at an exact pinned commit; the add-on pinned to a mirror commitNothing from Alpha, Testing or a later feature set is allowed into any row
Product maturityStandard bridges and most existing mappings are Stable; several entities in Server Mode, the Camera and Security plugins, and some Matter 1.4 types are experimental inside StableEven where a controller supports the type, an experimental product path still cannot be written up as a settled promise
Controller supportFollows each vendor's own official supported-devices and Matter documentation; most controller cells in the upstream manifest are unknownWithout type-by-type evidence, the cell stays unknown — it is never promoted to yes on the strength of a marketing page
In plain terms

Think of three separate inspections on the same building, not one. The architect's stamped plan is the release channel — it says what was actually built. Whether that particular room passed final inspection is product maturity — the whole building can be signed off while one room is still marked experimental. Whether the fire marshal in your specific district has approved it is controller support. Passing one inspection does not waive the other two, and a glossy brochure from the developer is not any of the three.

flowchart LR
  A["Release channel:
Stable v2.0.55,
one pinned commit"] --> B["Product maturity:
standard bridges are Stable,
some types stay experimental"] B --> C["Controller support:
each vendor's own
official device list"] C --> D["The mark you actually
write in the matrix"]
Three gates, one outcomeFour boxes in a single direction, and each arrow means the layer on its left has to be checked before the next one is worth reading at all. A yes at the rightmost layer does not undo a limit set by either of the two before it — an experimental mapping inside Stable stays a small trial no matter what the controller's own page says it can do.

A yes in the matrix never overrides maturity. A newer version of a controller's own app may add support for some newer Matter type, but if Matter Hub's mapping for that type is still experimental inside the Stable channel, the honest recommendation is still a small trial. It runs the other way too: a fully settled Matter Hub mapping does not make a controller add UI for it on its own.

The 52-type matrix

The controller compatibility matrix for all 52 Matter overrides

Every row below matches one of the 52 MatterDeviceType identifiers in v2.0.55. Apple Home, Google Home, Alexa and Aqara Home follow the pinned picker snapshot; SmartThings follows its own compatibility document at the same version. A no appears only where the pinned v2.0.55 compatibility matrix, or a controller's own official type list, gives explicit evidence of exclusion — one failed commissioning attempt on your own network does not turn an unknown into a no.

Matter override identifierApple HomeGoogle HomeAlexaAqara HomeSmartThings
air_purifiernoyesyesyesunknown
air_quality_sensornoyesyesyesunknown
dishwashernonounknownunknownyes
basic_video_playernononoyesunknown
battery_storagenononoyesunknown
carbon_monoxide_sensorpartialnopartialyesunknown
color_temperature_lightyesyesyesyesyes
contact_sensoryesyesyesyesyes
dimmable_lightyesyesyesyesyes
dimmable_plugin_unityesnoyesyesyes
door_lockyespartialyesyesyes
doorbellnonononoyes
electrical_meternoyesnounknownyes
electrical_sensornonounknownunknownyes
electrical_utility_meternononounknownyes
evsenononoyesunknown
extended_color_lightyesyesyesyesyes
fannoyesyesyespartial
flow_sensornoyesnounknownunknown
formaldehyde_sensornonopartialyesunknown
generic_switchpartialnoyesunknownunknown
humidifier_dehumidifierunknownnoyesunknownunknown
humidity_sensoryesyesyesyesyes
light_sensoryesyesyesunknownyes
mode_selectnononounknownunknown
motion_sensoryesyesyesyesunknown
nitrogen_dioxide_sensornonopartialyesunknown
occupancy_sensorpartialyesyesyesyes
on_off_lightyesyesyesyesyes
on_off_plugin_unityesyesyesyesyes
on_off_switchyesyesyesyesyes
mounted_on_off_controlnononoyesyes
ozone_sensornonopartialyesunknown
pm1_sensornonopartialyesunknown
pressure_sensornoyesnoyesyes
pumpnoyesnoyesunknown
rain_sensornononoyesunknown
radon_sensornonopartialyesunknown
robot_vacuum_cleaneryesyesyesyesunknown
robotic_lawn_moweryesunknownyesunknownunknown
smoke_co_alarmyesnoyesyesyes
solar_powernonounknownunknownyes
speakernoyesnoyesunknown
temperature_sensoryesyesyesyesyes
thermostatyesyesyesyesyes
tvoc_sensornonopartialyesunknown
water_heaternonounknownyesunknown
water_heater_managementnonounknownunknownunknown
water_freeze_detectornononoyesunknown
water_leak_detectoryesnoyesyesunknown
water_valvenononoyesunknown
window_coveringyesyesyesyesyes
color_temperature_light — yes across all five: Apple Home, Google Home, Alexa, Aqara Home and SmartThings. This is a reasonable type to build your first shared core bridge around.
doorbell — no on Apple Home, Google Home, Alexa and Aqara Home; yes only on SmartThings. A doorbell bridge is a SmartThings-only bridge, not a shared one, and the matrix says so before you spend an evening finding that out.
generic_switch — partial on Apple Home, no on Google Home, yes on Alexa, unknown on both Aqara Home and SmartThings. One device type, four different answers.
The naming trap. A yes for on_off_switch means it is presented as a Matter On/Off Light, not as a native switch tile. The row that actually names a wall-control switch is mounted_on_off_control, which is a different identifier entirely. “Can be presented” in this table is not the same claim as “the UI calls it what the identifier calls it.”
flowchart TD
  A["A physical wall switch
you want to bridge"] --> B{"Which Matter device type
do you map it to?"} B -->|"on_off_switch"| C["Shown as an On/Off Light tile.
Yes on all five controllers"] B -->|"mounted_on_off_control"| D["Shown as an actual switch tile.
Yes only on Aqara Home
and SmartThings"]
One diamond, two rows that are both “yes” somewhereon_off_switch is the row that reads yes across the whole table above, and it is the one that hands every controller a light. mounted_on_off_control is the row that actually looks like a switch, and in that same table it is yes on only two of the five controller columns.

There is also a controller-specific flag worth knowing by name: alexaPreserveBrightnessOnTurnOn is yes for Alexa and no for Apple Home and Google Home. That is flag-level support inside a light type, not a no for the whole type — a different thing again from any of the four marks above.

What each ecosystem gives you

What to reasonably expect from all five ecosystems

  • Apple Home — the Home app and a home hub provide the Matter controller, and the basic types are where you build your baseline. Verify sensor cards, events, vacuums and any newer type against your own Apple platform version. For No Response, check IPv6, mDNS, sessions and subscriptions first.
  • Google Home — follow Google's own supported device types and its list of compatible hubs. The optimized template is a Matter Hub starting configuration, not a Google certification. A Google room and an HA area are not the same object, even when they share a name.
  • Alexa — use 5540 for the first bridge you commission. The figure of about 80–100 devices is upstream practical planning, not a hard ceiling anyone has measured. Cover-as-light, brightness preservation and the vacuum flags are workarounds, so keep them confined to an Alexa-only bridge.
  • Aqara Home — Aqara's own public list covers many types, and v2.0.55 does carry Aqara-specific quirks. The matrix marks a basic type yes where a source backs it, but a type that is not listed stays unknown, and none of it promises full Matter Hub support for every type Aqara ships.
  • SmartThings — the official documentation lists Matter support and compatible hubs, but how a third-party bridge's device types and clusters actually get presented still depends on the platform and the driver. Verify at small scale first, and do not write “SmartThings supports Matter” up as “SmartThings supports all of Matter Hub.”

One thing holds across all five: a controller's account, its rooms, its names, its automations and its sharing permissions are independent of every other controller's. Multi-fabric, covered in Part 8, lets several fabrics manage the same bridge — it does not sync the management data of five separate ecosystems with each other.

Building your own evidence

Seven steps to your own compatibility evidence

The matrix above tells you where official evidence exists. It cannot tell you what happens on your own hub, your own firmware, your own home. Building that evidence is a small, repeatable routine.

  1. Step 1

    List what you need, not every entity you have

    List, by room and device type, the devices you genuinely want to operate from each controller. Mark which are safety-sensitive, which are read-only state, and which need advanced features. Keep internal identifying data out of the record.

  2. Step 2

    Apply the official limits, one ecosystem at a time

    Go through the official Matter documentation from Apple, Google, Amazon, Aqara and SmartThings one at a time. Mark anything unlisted or vaguely described as unknown. Do not extrapolate from your experience with a different brand's implementation.

  3. Step 3

    Build a minimal core bridge

    Add only low-risk types — lights and switches, typically — for which every target controller already has basic evidence. Back it up, then onboard your first fabric.

  4. Step 4

    Add fabrics one at a time

    Reopen the commissioning window for each controller and add a single one. Once it is done, verify display, commands, state and behavior after a restart, and neither share nor keep the pairing data afterward.

  5. Step 5

    Test one special type at a time

    Add one representative cover, fan, sensor or vacuum, and record each feature as yes, partial, no or unknown for your own setup. “Commissioning succeeded” on its own is not a result worth recording.

  6. Step 6

    Split bridges according to the evidence you found

    If one controller needs a different device type or a different flag, create a dedicated bridge for it. Do not let, for example, the Alexa cover-as-light workaround contaminate cover semantics on Apple Home and Google Home.

  7. Step 7

    Retest after every version upgrade

    Controller firmware, a controller's app, or a Matter Hub update can each change the matrix on their own. Keep the version number and the date with every result you record — but never record fabric IDs, node IDs, or any live network data.

One bridge, or several

A shared core bridge, or one bridge per controller

StrategyWhen it fitsUpsideRisk
One shared core bridgeA small number of basic lights and switches, already verified on each controllerOne set of endpoints, a simple HA filter, every fabric sees the same stateA workaround needed for one controller can affect all of them — the blast radius is larger
Split by controllerAlexa needs cover-as-light, or Aqara Home and SmartThings only accept a smaller subsetYou choose types, flags, scale and maintenance windows independentlyYou may expose the same HA entity twice, which confuses people and can create automation races
Split by typeVacuums, covers, locks, sensors and new Matter types need isolatingA special type that fails does not drag basic lighting down with it, and test evidence stays clearMore bridges, more ports and more commissioning to manage
Split by areaA large home, or a small office, needs to limit both blast radius and controller scaleNaming and ownership stay clear, and each bridge carries fewer endpointsDevices that span areas, and room naming, need one consistent rule across bridges

Do not put the same entity on a shared bridge and a controller-specific bridge at once, unless you are testing that deliberately and can live with duplicate cards and races. If you must duplicate it, verify with one device that is not safety-critical first, and name the source of each card clearly.

Your situationYou run one shared core bridge with a handful of lights and switches, verified on every controller you actually use. That is the “one shared core bridge” row above — keep it there and stop.
Your situationAlexa needs the cover-as-light workaround for your blinds, but Apple Home already shows the same entity as a proper cover. That is a semantics trigger below — split Alexa onto its own bridge before the workaround leaks into the Apple fabric.

Four triggers for splitting a bridge

  • Type trigger — the same Matter device type is partial or unknown on one controller, and it slows down or blocks discovery for the whole bridge.
  • Semantics trigger — you need a workaround, such as cover-as-light or a simplified vacuum on/off, that changes the UI on other controllers too.
  • Scale trigger — you are close to a controller's practical capacity, or onboarding, restart and subscription delays are climbing noticeably. Alexa's roughly 80–100 is a planning signal, so split before it becomes a problem, not after.
  • Risk trigger — locks, security devices, experimental plugins and new Matter types should not share a blast radius with your core lighting.

Before you split, back up and export a configuration summary that contains no secrets. Exclude the target entities from the original bridge's filter, then settle how the old accessories will be handled on the controller side. Do not delete, reset, create a new bridge and join five fabrics all in one sitting — every stage needs a fallback point you can actually verify.

flowchart TD
  A["A shared core bridge,
already in production"] --> B{"Type trigger: is one Matter
type partial or unknown,
and slowing the whole bridge?"} B -->|"yes"| S["Split off a
dedicated bridge"] B -->|"no"| C{"Semantics trigger: does a
workaround change the UI
on other controllers?"} C -->|"yes"| S C -->|"no"| D{"Scale trigger: getting close
to a controller's practical
device ceiling?"} D -->|"yes"| S D -->|"no"| E{"Risk trigger: locks, security,
or an experimental plugin
on this bridge?"} E -->|"yes"| S E -->|"no"| K["Keep it on the
shared bridge"]
Four gates, one shared exitFour diamonds run one after another, and a single yes at any one of them is enough to reach the same Split box — all four yes arrows end there. Keep is the only other terminal box, and reaching it takes a no on every one of the four gates in a row.
Safety-critical devices need more than a matrix cell. Do not put locks, alarms or anything from the Security Plugin into production on the strength of a type column above. Verify authorization, voice policy, state reporting, behavior when the connection drops, and the manual fallback as well. If the product maturity is experimental, it cannot serve as your primary safety control.
When it does not add up

The pitfalls that actually happen across five controllers

SymptomLikely causeWhat to do
The bridge works in Apple Home but Aqara Home cannot see it Nothing wrong with Apple's fabric; the Aqara combination is genuinely unproven Keep the Apple fabric and do not reset. Mark the Aqara combination unknown, cross-check the Aqara hub model, region and firmware, then try a dedicated bridge holding one basic light and nothing else
SmartThings commissions successfully but very little works The device type is only partially presented by SmartThings' driver Mark that device type partial and compare SmartThings' official Matter support against the UI and driver you actually got. Record commands and state separately rather than claiming overall support
An Alexa workaround makes the Apple Home types look wrong A semantics conflict on a bridge shared between the two Roll that flag back and test it on an Alexa-only bridge instead. Do not delete the Apple fabric to accommodate Alexa
Google Home has control, Apple Home only shows state A cluster gap between the two controllers on that device type Mark the command layer partial and cross-check which clusters Apple Home supports, and on which platform version. Compare against a basic device of the same type first; do not change every mapping at once
Discovery slows across the whole bridge after a new type is added The new special type is dragging down the shared bridge's endpoint complexity Roll back the last batch of filter and mapping changes, then split the special type off onto its own bridge. Check controller scale and endpoint complexity; do not use a reset to wipe out your evidence
You cannot tell whether to write no or unknown The distinction is being lost under pressure to have an answer Write unknown when there is no explicit official exclusion and no controlled failure evidence. One failure in your environment usually only proves it failed there — that is not enough to declare a blanket no for the whole controller
The Aqara hub supports Matter — does that mean full support for a Matter Hub bridge?
No. The hub's Matter controller capability, the bridged device types it actually accepts, and the Aqara Home UI all have to be proven item by item. The pinned sources in this chapter do not carry enough evidence to promise full support.
If the SmartThings site lists a device type, can I mark it yes?
That only backs the ecosystem's basic type. You still have to confirm the endpoints, clusters, commands and state of a third-party bridge on your own hub. If only some features work, mark it partial rather than yes.
Will multi-fabric make all five controllers show exactly the same thing?
No. All five share the Matter capabilities and state of the same bridge, but each one decides its own UI, its own rooms, names, automations, permissions, and which clusters it actually uses.
Is a yes in the matrix a product guarantee?
No. A yes means the basic type has official and upstream evidence behind it. You still have to test it on the exact version you run. Advanced clusters, and recovery after a restart, may still turn out to be partial.
How do I record an experimental feature that lives inside Stable?
Record release channel = Stable and maturity = experimental together, as two separate facts, then fill in controller support as a third. A yes for the type on a given controller does not turn the product's maturity into production-ready.
Where these ratings come from

Pinned-version and official controller sources

Every mark in this chapter traces back to one of the sources below, pinned at the same commit v2.0.55 uses. Official pages change as each ecosystem ships new versions; wherever the pinned upstream and a controller's own type list cannot jointly confirm something, this chapter leaves it partial or unknown rather than guessing forward.

A reasonable stopping point. If you have built a minimal shared bridge from types that read yes across every controller you use, added one fabric at a time with a fallback point at each step, and written down partial and unknown honestly instead of rounding them up to yes, you have done what this part asks. The matrix above is there for the day you want to add something less certain.
Next

Where to go from here

commissioned is not the same as healthy

Five controllers now know how to read your bridge. The next question is whether the bridge itself is staying well.

Part 11 opens the Operations part of this guide: day-to-day bridge operations — restarting, updating and recovering a bridge without breaking every fabric attached to it — and then the health and topology views that tell you whether your Matter network is actually behaving, before a controller ever has to tell you something is wrong.

Open the full guide

Part 10 of the Home Assistant Matter Hub Complete Guide series on the Apporo blog.

Adapted from the Home Assistant Matter Hub Complete Guide, produced by WoowTech and released under CC BY 4.0. This adaptation is published by Apporo under the same licence.

Light · Air · Water · Control · apporo

Hand the same bridge to Google Home, then to Alexa