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.
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.
| Parameter | Type | Required | Description |
|---|---|---|---|
| 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.
| Field | Type | Required | Description |
|---|---|---|---|
| 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 |
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 |
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.
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
}
]
}
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
- Read
TargetList (0x0000)to get all navigable targets on the TV (Identifier, Name) - Read
CurrentTarget (0x0001)to highlight the currently active target - Display the target list in the app UI; the user clicks "Netflix"
- Send
NavigateTarget (0x00)with Target set to Netflix's Identifier value; Data can carry a deep link to the content to play - Check the
NavigateTargetResponseStatus:Success (0)— navigation successful, subscribe toCurrentTargetto confirm the update and refresh the UITargetNotFound (1)— target no longer exists (app may have been uninstalled), refresh TargetListNotAllowed (2)— access restricted, notify the user about possible parental control or policy restrictions
Scenario 2: Automation — voice command to switch apps
- The user tells the voice assistant "Open YouTube"
- The voice assistant reads
TargetList (0x0000)and matches "YouTube" by Name in the list - After finding a match, sends
NavigateTarget (0x00)with Target set to the corresponding Identifier - If no matching name is found in TargetList, the voice assistant replies "That app is not in the available list"
- If
NotAllowedis 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.