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.

NameUpdates (NU) Feature

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.

ParameterTypeDescription
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.

ParameterTypeDescription
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
Subscribe to Changes

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
Comparison with MediaInput InputInfoStruct

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.

0
HDMI HDMI — Audio via HDMI ARC/eARC passthrough
1
BT Bluetooth — Bluetooth wireless audio output
2
Optical Optical — Optical digital audio output (TOSLINK/SPDIF)
3
Headphone Headphone — 3.5mm headphone jack or USB headphones
4
Internal Internal — Device built-in speakers
5
Other Other — Output method not covered by the types above

Feature Bitmap

The AudioOutput Cluster declares optional capabilities the device supports via FeatureMap (0xFFFC):

Bit 0
NU (NameUpdates) Name Updates — When enabled, supports the RenameOutput command, allowing users to customize output source names
When to Enable NU

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"
    }
  ]
}
Developer Tip

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
  1. Read OutputList (0x0000) to get all output sources (Index, Name, OutputType)
  2. Read CurrentOutput (0x0001) to highlight the currently selected output source
  3. Display the output source list in the UI with corresponding icons based on OutputType (Bluetooth, HDMI, headphones, etc.)
  4. The user clicks the target output source and sends SelectOutput (0x00) with Index set to that output source's index value
  5. Subscribe to CurrentOutput attribute changes and update the UI after confirming the switch was successful
Scenario 2: User customizes output source names
  1. Check the device's FeatureMap (0xFFFC) to confirm NU support (Bit 0 = 1)
  2. Read OutputList (0x0000) and display the output source list
  3. The user long-presses an output source (e.g., Index=2, current name "Bluetooth") to open the rename input dialog
  4. The user enters the new name "HomePod" and sends RenameOutput (0x01) with Index=2, Name="HomePod"
  5. Subscribe to OutputList changes 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.