AudioOutput Cluster
Cluster ID: 0x050B |
Endpoint: Media endpoint (TV, AV receiver, Soundbar, etc.)
AudioOutput manages the audio output destinations of a device — HDMI ARC, Bluetooth, optical, headphones, built-in speakers, etc. Users can query available audio outputs, check which one is currently in use, switch to a specified output, and customize output source names. It is a common Cluster for media devices such as smart TVs, AV receivers, and Soundbars, serving as the output counterpart to MediaInput.
The AudioOutput Cluster defines a NameUpdates (NU) Feature.
When enabled, the controller can customize output source names via the RenameOutput command
(e.g., renaming "Bluetooth" to "HomePod"). When disabled, output source names are fixed by the device and cannot be modified.
Commands
The AudioOutput Cluster has 2 commands. SelectOutput switches the audio output destination, and RenameOutput allows users to customize output source names (requires the NU feature). Click a command ID in the table below to jump to its detailed description.
| ID | Name | Description | Required Feature |
|---|---|---|---|
0x00 |
SelectOutput | Switch to a specified audio output | None |
0x01 |
RenameOutput | Rename a specified output source | NU |
SelectOutput — Switch Audio Output (0x00)
Switches the device's audio output to the specified destination. Index must match the Index value
of an OutputInfoStruct in OutputList; otherwise the device returns an error.
On success, the CurrentOutput attribute updates to the specified Index value.
| Parameter | Type | Description |
|---|---|---|
| Index | uint8 | Index of the target output source; must exist in OutputList |
Usage Scenarios
The user selects "HDMI ARC" on the phone app. The app reads OutputList to get the Index value of that output source,
then sends the SelectOutput command. The TV switches audio to HDMI ARC passthrough, and CurrentOutput updates accordingly.
RenameOutput — Rename Output Source (0x01)
Sets a custom name for the specified output source. After modification, the Name field of the corresponding entry in OutputList updates.
This command requires the device to have the NU (NameUpdates) feature enabled.
| Parameter | Type | Description |
|---|---|---|
| Index | uint8 | Index of the output source to rename; must exist in OutputList |
| Name | string | New name for the output source |
// RenameOutput command example
// Rename the output source at Index=2 to "HomePod"
{
"Index": 2,
"Name": "HomePod"
}
// After execution, the Name of Index=2 in OutputList becomes "HomePod"
Usage Scenarios
The user connected a Bluetooth speaker, but the default "Bluetooth" label is not intuitive.
By sending RenameOutput via the app, the output source at Index=2 is renamed to "HomePod".
Afterwards, the Name of that entry in OutputList becomes "HomePod", and the UI displays the new name.
Attributes
The AudioOutput Cluster has 2 attributes. Click an attribute ID in the summary table below to jump to its detailed description.
| ID | Name | Type | Description |
|---|---|---|---|
0x0000 |
OutputList | list<OutputInfoStruct> | List of all audio output sources on the device |
0x0001 |
CurrentOutput | uint8 | Index of the currently selected audio output source |
Audio Output State (0x0000, 0x0001)
Describes the device's currently available audio output list and the currently selected output source.
| ID | Name | Type | Description |
|---|---|---|---|
0x0000 |
OutputList | list<OutputInfoStruct> | All available audio output destinations declared by the device. Each element is an OutputInfoStruct. The list reflects the device's actual audio output interfaces, with each Index value being unique. When a user modifies a name via RenameOutput, the corresponding entry's Name updates |
0x0001 |
CurrentOutput | uint8 | The index of the currently selected audio output. This value always points to an OutputInfoStruct.Index in OutputList. Changed via the SelectOutput command, or by the user switching via the remote or device panel |
Controllers should subscribe to CurrentOutput attribute changes to sync the app UI when the user switches audio output via remote or device panel.
Likewise, if the device supports the NU feature, subscribe to OutputList changes to get the latest name for the output source.
Struct Definitions
The AudioOutput Cluster uses one structure to describe output source information.
OutputInfoStruct
Describes the complete information for an audio output source, including index, type, and name.
| Field | Type | Description |
|---|---|---|
| Index | uint8 | Unique index of the output source, used to identify it in SelectOutput and RenameOutput commands |
| OutputType | OutputTypeEnum | Interface type of the output source (see enum below) |
| Name | string | Display name of the output source, e.g., "HDMI ARC", "HomePod". Can be modified via RenameOutput when the NU feature is enabled |
OutputInfoStruct has only 3 fields (Index, OutputType, Name), one less than MediaInput's InputInfoStruct which also has a Description field.
Audio output source information is relatively simple — the name alone is usually sufficient to distinguish different outputs.
OutputTypeEnum
Defines the interface type of audio output sources. Contains 6 enum values covering common audio output methods. Controllers can use this to display corresponding icons or categories in the UI.
Feature Bitmap
The AudioOutput Cluster declares optional capabilities the device supports via FeatureMap (0xFFFC):
Devices that support user-customizable output source names should enable this feature — for example, users may want to rename "Bluetooth" to the specific name of their Bluetooth speaker. If the device's output source names are factory-fixed and cannot be modified, do not enable NU.
Example Data
Read results of the AudioOutput Cluster from a smart TV — currently outputting audio to HDMI ARC, with 4 output sources:
{
// --- Current Output Source ---
"0x0001": 1, // CurrentOutput = 1 (currently selected HDMI ARC)
// --- Output Source List ---
"0x0000": [ // OutputList
{
"Index": 0,
"OutputType": 4, // Internal (built-in speakers)
"Name": "TV Speaker"
},
{
"Index": 1,
"OutputType": 0, // HDMI (HDMI ARC/eARC passthrough)
"Name": "HDMI ARC"
},
{
"Index": 2,
"OutputType": 1, // BT (Bluetooth speaker)
"Name": "Bluetooth"
},
{
"Index": 3,
"OutputType": 2, // Optical (optical output)
"Name": "Optical Out"
}
]
}
When displaying the audio output switching UI, controllers should first read OutputList (0x0000) to get the complete list,
then read CurrentOutput (0x0001) to highlight the currently selected item.
Different icons can be displayed for different interface types based on OutputType (e.g., Bluetooth icon, headphone icon)
to improve user recognition.
Common Scenarios
Scenario 1: App switches TV audio output
- Read
OutputList (0x0000)to get all output sources (Index, Name, OutputType) - Read
CurrentOutput (0x0001)to highlight the currently selected output source - Display the output source list in the UI with corresponding icons based on OutputType (Bluetooth, HDMI, headphones, etc.)
- The user clicks the target output source and sends
SelectOutput (0x00)with Index set to that output source's index value - Subscribe to
CurrentOutputattribute changes and update the UI after confirming the switch was successful
Scenario 2: User customizes output source names
- Check the device's
FeatureMap (0xFFFC)to confirm NU support (Bit 0 = 1) - Read
OutputList (0x0000)and display the output source list - The user long-presses an output source (e.g., Index=2, current name "Bluetooth") to open the rename input dialog
- The user enters the new name "HomePod" and sends
RenameOutput (0x01)with Index=2, Name="HomePod" - Subscribe to
OutputListchanges and refresh the UI after confirming the name update
Note: If the FeatureMap does not include the NU feature, the UI should not display a rename option; sending the RenameOutput command will be rejected by the device.