TargetNavigator Cluster

Cluster ID: 0x0505  |  Endpoint: Media endpoint (TV, set-top box, etc.)

TargetNavigator handles navigation between content targets on a device — these targets can be apps, screen pages, menu items, etc. Users can query which targets are available on the device, which one is currently active, and navigate to a specific target. It is the core Cluster for app switching and UI navigation on media devices such as smart TVs and set-top boxes.

Difference from MediaInput

MediaInput (0x0507) manages physical/virtual input sources (e.g., HDMI 1, USB), while TargetNavigator manages software-level content targets (e.g., Netflix, YouTube, settings page). A smart TV may have both Clusters: MediaInput for switching input interfaces, TargetNavigator for switching apps.

Commands

The TargetNavigator Cluster has only 1 command and 1 response. NavigateTarget navigates to a specified target, and the device returns NavigateTargetResponse with the navigation result.

ID Name Direction Description
0x00 NavigateTarget Client → Server Navigate to a specified target
0x01 NavigateTargetResponse Server → Client Navigation result response

NavigateTarget — Navigate to Target (0x00)

Requests the device to navigate to the specified target. Target must be the Identifier value of a TargetInfoStruct in TargetList. The optional Data field can pass additional navigation parameters (e.g., deep link path). The device returns NavigateTargetResponse with the result.

ParameterTypeRequiredDescription
Target uint8 Yes Target identifier; must exist in TargetList
Data string No Application-specific data passed to the target, such as deep link URL, launch parameters, etc.
// NavigateTarget command example
// Navigate to target with Identifier=1 (Netflix) with launch parameters
{
  "Target": 1,
  "Data": "movie/12345"
}

// NavigateTargetResponse response
{
  "Status": 0,                   // Success
  "Data": "launched"
}
Usage Scenarios

The user selects to open Netflix on the TV from the phone app. The app reads TargetList to find Netflix's Identifier, sends the NavigateTarget command, and passes the movie ID in the Data field. The TV launches Netflix and navigates directly to the corresponding movie page.

NavigateTargetResponse — Navigation Result Response (0x01)

The device's response to the NavigateTarget command. The Status field indicates navigation success, and the optional Data field can carry additional information from the device.

FieldTypeRequiredDescription
Status StatusEnum Yes Navigation result status (see enum below)
Data string No Additional information returned by the device, content is application-defined

Attributes

The TargetNavigator Cluster has 2 attributes. Click an attribute ID in the summary table below to jump to its detailed description.

ID Name Type Description
0x0000 TargetList list<TargetInfoStruct> List of all navigable targets on the device
0x0001 CurrentTarget uint8 Identifier of the currently active target

Target State (0x0000, 0x0001)

Describes the device's currently navigable target list and the currently active target.

ID Name Type Description
0x0000 TargetList list<TargetInfoStruct> All navigable targets declared by the device. Each element is a TargetInfoStruct. The list reflects installed apps, accessible pages, or menu items on the device. Each Identifier value is unique. The list may change as apps are installed or uninstalled
0x0001 CurrentTarget uint8 Identifier of the currently active target. This value points to a TargetInfoStruct.Identifier in TargetList. A value of 0xFF indicates no known target is currently active. Changed via the NavigateTarget command or when the user manually switches on the device
Subscribe to Changes

Controllers should subscribe to CurrentTarget attribute changes to sync the highlight state in the app UI when the user manually switches apps via the remote or device UI. Also subscribe to TargetList to promptly update the available target list when apps are installed or uninstalled.

Struct Definitions

The TargetNavigator Cluster uses one structure to describe navigation target information.

TargetInfoStruct

Describes the basic information of a navigation target, including unique identifier and display name.

Field Type Description
Identifier uint8 Unique identifier for the target, unique within TargetList. Used to locate the target in the NavigateTarget command
Name string Display name of the target, e.g., "Netflix", "Settings". Displayed to the user in the UI
Comparison with MediaInput.InputInfoStruct

TargetInfoStruct is more concise than InputInfoStruct — it has only two fields, Identifier and Name, without type enum or description fields. This is because the nature of navigation targets is determined by the applications themselves, unlike physical input interfaces which have fixed categories (HDMI, USB, etc.).

Enum Definitions

StatusEnum

Enum values for the Status field in NavigateTargetResponse, indicating the navigation result.

0
Success Navigation successful — device has successfully switched to the target
1
TargetNotFound Target not found — the specified Target identifier does not exist in TargetList
2
NotAllowed Navigation not allowed — the device's current state does not allow switching to this target (e.g., parental control restrictions)

Example Data

Read results of the TargetNavigator Cluster from a smart TV — currently on the settings page, with 4 navigable targets:

{
  // --- Current Target ---
  "0x0001": 2,                   // CurrentTarget = 2 (currently on "Settings" page)

  // --- Target List ---
  "0x0000": [                    // TargetList
    {
      "Identifier": 0,
      "Name": "Home"              // Home screen
    },
    {
      "Identifier": 1,
      "Name": "Netflix"           // Netflix app
    },
    {
      "Identifier": 2,
      "Name": "Settings"          // System settings
    },
    {
      "Identifier": 3,
      "Name": "YouTube"           // YouTube app
    }
  ]
}
Developer Tip

When displaying the target list UI, controllers should first read TargetList (0x0000) to get the complete list, then read CurrentTarget (0x0001) to highlight the currently active target. Since TargetInfoStruct has no type enum, if icons are needed for different targets, you may need to match known app names (e.g., "Netflix", "YouTube") via the Name field to select icons.

Common Scenarios

Scenario 1: App remotely launches a streaming app on the TV
  1. Read TargetList (0x0000) to get all navigable targets on the TV (Identifier, Name)
  2. Read CurrentTarget (0x0001) to highlight the currently active target
  3. Display the target list in the app UI; the user clicks "Netflix"
  4. Send NavigateTarget (0x00) with Target set to Netflix's Identifier value; Data can carry a deep link to the content to play
  5. Check the NavigateTargetResponse Status:
    • Success (0) — navigation successful, subscribe to CurrentTarget to confirm the update and refresh the UI
    • TargetNotFound (1) — target no longer exists (app may have been uninstalled), refresh TargetList
    • NotAllowed (2) — access restricted, notify the user about possible parental control or policy restrictions
Scenario 2: Automation — voice command to switch apps
  1. The user tells the voice assistant "Open YouTube"
  2. The voice assistant reads TargetList (0x0000) and matches "YouTube" by Name in the list
  3. After finding a match, sends NavigateTarget (0x00) with Target set to the corresponding Identifier
  4. If no matching name is found in TargetList, the voice assistant replies "That app is not in the available list"
  5. If NotAllowed is returned, the voice assistant says "Cannot open that app right now, it may be subject to usage restrictions"

Note: Name field matching should account for case sensitivity and localization differences. Device manufacturers may use different name formats (e.g., "YouTube" vs "youtube" vs "YouTube TV"), so the voice assistant's matching logic should use fuzzy matching or normalization.