MicrowaveOvenMode Cluster

Cluster ID: 0x005E  |  Endpoint: Microwave Oven Endpoint

MicrowaveOvenMode is a Cluster for microwave oven mode selection in Matter, derived from the ModeBase Cluster. It allows users to switch between multiple heating modes, such as Normal heating and Defrost. Each mode is described by semantic tags (ModeTag), enabling standardized control across manufacturers.

Derived from ModeBase

MicrowaveOvenMode inherits all command and attribute structures from the ModeBase Cluster, and defines microwave oven-specific ModeTag values (0x4000 ~ 0x4001). If you are already familiar with how ModeBase works, this Cluster operates exactly the same way -- only the mode tags differ.

Coordination with MicrowaveOvenControl

MicrowaveOvenMode only handles "selecting the heating mode" — it does not control cooking parameters. Full microwave operation requires the MicrowaveOvenControl (0x005F) Cluster, which handles cooking time, power level settings, and start/stop control. Typical flow: select mode with MicrowaveOvenMode, then set parameters and start with MicrowaveOvenControl.

Commands

In older versions the MicrowaveOvenMode Cluster had one command, ChangeToMode, for switching heating modes, and the device returned a ChangeToModeResponse indicating whether the switch was successful. Newer versions removed both commands; the mode can only be changed on the appliance itself.

ID Name Direction Description
0x00 ChangeToMode Removed in newer versions Client → Server Switch to a specified heating mode
0x01 ChangeToModeResponse Removed in newer versions Server → Client Mode switch response (Status + StatusText)

ChangeToMode -- Switch Mode (0x00) Removed in newer versions

Removed in newer Matter versions

ChangeToMode is no longer part of newer Matter specifications (it is absent from the connectedhomeip v1.6 definitions this site checks against). Devices built to newer versions will not implement it; this section is kept only as a reference for older devices. In newer versions the Microwave Oven Mode cluster accepts no commands: the mode can only be changed on the appliance itself, and controllers can only read or subscribe to CurrentMode.

Request the microwave to switch to a specified heating mode. The NewMode value must be the Mode field of a ModeOptionStruct in the SupportedModes list. The device returns a ChangeToModeResponse upon receipt.

Request Parameters

ParameterTypeDescription
NewMode uint8 Target mode number; must exist in the SupportedModes list

Response Fields (ChangeToModeResponse)

FieldTypeDescription
Status enum8 Operation result status code (see Status Codes)
StatusText string (optional) Human-readable status description; provides the reason on failure
Usage Scenarios

The user selects "Defrost" mode in the app. The app sends ChangeToMode (NewMode = 1). The microwave returns ChangeToModeResponse (Status = 0x00, Success) and CurrentMode updates to 1. If the microwave is heating and does not allow switching, it returns GenericFailure with the reason in StatusText.

Attributes

MicrowaveOvenMode Cluster inherits 4 attributes from ModeBase.

ID Name Type Description
0x0000 SupportedModes list<ModeOptionStruct> All heating modes supported by the device
0x0001 CurrentMode uint8 Currently selected mode
0x0002 StartUpMode Removed in newer versions uint8 / null Default mode on device startup
0x0003 OnMode Removed in newer versions uint8 / null Mode automatically applied when device turns on

SupportedModes -- Supported Mode List (0x0000)

All heating modes supported by the device. Each element is a ModeOptionStruct:

FieldTypeDescription
Label string Mode name for human display (e.g., "Normal", "Defrost")
Mode uint8 Mode number, unique in the list, used for the ChangeToMode command
ModeTags list<ModeTagStruct> List of semantic tags describing the mode's purpose (see ModeTag Tags)
Difference Between Label and ModeTag

Label is vendor-defined display text; different manufacturers may use different wording ("Normal", "Standard", "Regular"). ModeTag is a standardized semantic tag. Apps should prioritize ModeTag values for determining mode type; Label is only for UI display.

CurrentMode -- Current Mode (0x0001)

The currently selected heating mode number. The value must be the Mode field of a ModeOptionStruct in SupportedModes. Modified via the ChangeToMode command. Subscribe to this attribute to receive mode change notifications.

StartUpMode -- Startup Mode (0x0002) Removed in newer versions

Removed in newer Matter versions

StartUpMode is no longer part of newer Matter specifications (it is absent from the connectedhomeip v1.6 definitions this site checks against). Devices built to newer versions will not implement it; this section is kept only as a reference for older devices. In newer versions the microwave mode can only be changed on the appliance itself; controllers can only read or subscribe to CurrentMode.

The initial mode after the device powers on or restarts. Nullable -- when null, the device retains the mode from before power loss. When setting a specific value, it must exist in the SupportedModes list.

OnMode -- Power-On Mode (0x0003) Removed in newer versions

Removed in newer Matter versions

OnMode is no longer part of newer Matter specifications (it is absent from the connectedhomeip v1.6 definitions this site checks against). Devices built to newer versions will not implement it; this section is kept only as a reference for older devices. In newer versions the microwave mode can only be changed on the appliance itself; controllers can only read or subscribe to CurrentMode.

The mode automatically applied when the device switches from Off to On. Nullable -- when null, no override occurs and CurrentMode remains unchanged. If OnMode has a value, every power-on will force CurrentMode to that value, ignoring the StartUpMode setting.

Priority of OnMode vs StartUpMode

If OnMode is not null, it takes priority over StartUpMode. Device power-on sequence: StartUpMode is applied first (if set), then OnMode overrides when transitioning from Off → On. The practical effect is that the device always uses the mode specified by OnMode after powering on.

ModeTag Semantic Tags

MicrowaveOvenMode defines 2 dedicated ModeTag values for standardized description of microwave oven heating mode types. Apps should identify mode purposes based on these tags rather than relying on vendor-defined Label text.

0x4000
Normal Normal heating — default mode for everyday food; heats continuously at the set power level
0x4001
Defrost Defrost — heats intermittently at lower power to thaw frozen food without overcooking
Vendors Can Add Custom Modes

Beyond the spec-defined Normal and Defrost, vendors can add custom modes to SupportedModes (e.g., "Popcorn", "Beverage", "Reheat") using vendor-defined ModeTag values (0x8000-0xBFFF range). When the app encounters an unrecognized ModeTag, it should fall back to displaying the Label text.

Status Codes

Possible values of the Status field in ChangeToModeResponse:

0x00
Success Mode switch successful
0x01
UnsupportedMode The requested mode number does not exist in SupportedModes
0x02
GenericFailure Generic failure — device state does not allow switching (e.g., while heating)

Example Data

Read result from a MicrowaveOvenMode Cluster on a microwave oven with Normal and Defrost modes, currently in Normal:

{
  // --- Supported modes list ---
  "0x0000": [                    // SupportedModes
    {
      "Label": "Normal",
      "Mode": 0,
      "ModeTags": [{ "Value": 16384 }]   // 0x4000 = Normal
    },
    {
      "Label": "Defrost",
      "Mode": 1,
      "ModeTags": [{ "Value": 16385 }]   // 0x4001 = Defrost
    }
  ],

  // --- Current mode ---
  "0x0001": 0                    // CurrentMode = 0(Normal)

  // --- Startup and power-on modes ---
}
Developer Tip

The contents of SupportedModes are defined by the device manufacturer; different microwaves may support different numbers and IDs of modes. When displaying the mode list, apps should dynamically read SupportedModes rather than hardcoding mode options. Use ModeTag values to determine mode type instead of comparing Label strings. Complete microwave control also requires reading the cooking time and power attributes from the MicrowaveOvenControl Cluster (0x005F).

Common Scenarios

Scenario 1: Select Heating Mode and Start the Microwave
  1. Read SupportedModes (0x0000) to get all heating modes supported by the microwave
  2. Display the mode list in the app UI, showing corresponding icons and descriptions based on ModeTag values (e.g. show a "Normal Heating" icon for 0x4000, a "Defrost" icon for 0x4001)
  3. The user selects "Defrost"; send ChangeToMode (0x00) Removed in newer versions with NewMode set to the corresponding Mode number
  4. Check the Status in ChangeToModeResponse:
    • 0x00 (Success) -- switch successful; subscribe to CurrentMode to confirm the update
    • 0x02 (GenericFailure) — microwave is currently heating; read StatusText for the reason
  5. After the mode is selected, set cooking time and power via MicrowaveOvenControl Cluster (0x005F), then start heating
Scenario 2: Complete Flow for Defrosting Frozen Food
  1. Read SupportedModes (0x0000) and find the mode entry with ModeTag 0x4001 (Defrost)
  2. Send ChangeToMode with NewMode set to that mode entry's Mode number
  3. Confirm ChangeToModeResponse returns Success
  4. Set the defrost time via MicrowaveOvenControl (defrost mode typically uses lower power; the device may automatically adjust the power level)
  5. Start heating and subscribe to MicrowaveOvenControl's OperationalState to track heating progress
  6. After heating finishes, the microwave stops automatically and sends a notification; the app prompts the user to remove the food

Note: In defrost mode, the microwave typically works intermittently (alternating heating and pausing) to avoid overheating the exterior while the interior remains frozen. The specific power and intermittent strategy is controlled by device firmware; no app intervention needed.