Controller and Satellite Detection

Overview

This document describes how to determine whether a mesh device functions as a Controller (primary/root device) or Satellite (secondary access point) using TR-181 data model parameters. Two standardized approaches are available, each using different parameter paths in the TR-181 specification:

  1. DataElements Path - Uses Device.WiFi.DataElements.Network.Device objects with BackhaulMediaType parameter

  2. MultiAP Path - Uses Device.WiFi.MultiAP.APDevice objects with BackhaulLinkType parameter

Both methods provide equivalent functionality and follow the same detection logic: Controllers are identified by specific parameter values indicating no upstream backhaul connection, while Satellites have values indicating their connection type to the Controller.

Parameter Path Comparison

Aspect DataElements Path MultiAP Path

Primary Object Path

Device.WiFi.DataElements.Network.Device.{i}

Device.WiFi.MultiAP.APDevice.{i}

Role Detection Parameter

BackhaulMediaType

BackhaulLinkType

Controller Indicator

Empty, "None", or "Controller"

"None"

Satellite Indicators

Any non-empty value except "None"/"Controller"

"WiFi", "Ethernet", "MoCA", "Other"

MAC Address Parameter

ID or BackhaulMACAddress

MACAddress

Alternative Controller Detection

BackhaulMACAddress == BackhaulALID == ID

N/A (not applicable)

TR-181 Specification

Issue 2 Amendment 15+ (DataElements)

Issue 2 Amendment 15+ (MultiAP)

Common Use Case

EasyMesh, Wi-Fi Alliance Data Elements

Multi-AP Alliance specification

Unified Detection Flow

The following flowchart shows the complete detection logic for both parameter paths:

Diagram

TR-181 Parameter Reference

DataElements Path Parameters

Parameter Path Description Type Example Value

Device.WiFi.DataElements.Network.Device.{i}.BackhaulMediaType

Primary role indicator. Empty, "None", or "Controller" indicates a Controller device.

string

"None", "WiFi", "Ethernet"

Device.WiFi.DataElements.Network.Device.{i}.MultiAPDevice.Backhaul.LinkType

Alternative role indicator within DataElements structure. "None" means Controller.

string

"None", "WiFi"

Device.WiFi.DataElements.Network.Device.{i}.ManufacturerModel

Device model identifier (preferred source)

string

"MeshRouter-X200"

Device.WiFi.DataElements.Network.Device.{i}.ID

Device MAC address (primary identifier)

string (MAC)

"00:11:22:33:44:55"

Device.WiFi.DataElements.Network.Device.{i}.BackhaulMACAddress

MAC address of upstream backhaul connection

string (MAC)

"00:11:22:33:44:55"

Device.WiFi.DataElements.Network.Device.{i}.BackhaulALID

Backhaul Agent Link Identifier (alternative parent reference)

string (MAC)

"00:11:22:33:44:55"

MultiAP Path Parameters

Parameter Path Description Type Example Value

Device.WiFi.MultiAP.APDevice.{i}.BackhaulLinkType

Backhaul connection type. "None" indicates Controller. Other values indicate Satellite.

string (enumeration)

"None", "WiFi", "Ethernet", "MoCA", "Other"

Device.WiFi.MultiAP.APDevice.{i}.MACAddress

MAC address of the AP device

string (MAC)

"AA:BB:CC:DD:EE:FF"

Common Parameters (Both Paths)

Parameter Path Description Type Example Value

Device.DeviceInfo.ModelName

Device model name (Controller fallback)

string

"Router-AC2600"

Device.Hosts.Host.{i}.PhysAddress

Physical (MAC) address of connected device

string (MAC)

"AA:BB:CC:DD:EE:FF"

Device.Hosts.Host.{i}.HostName

Hostname of connected device (Satellite name resolution)

string

"Kitchen-Satellite"

Detection Criteria

Controller Detection

A device is identified as a Mesh Controller when any of the following conditions are met:

DataElements Path:

  • BackhaulMediaType is empty, "None", or "Controller"

  • OR MultiAPDevice.Backhaul.LinkType equals "None"

  • OR Identity match: BackhaulMACAddress == BackhaulALID == ID

MultiAP Path:

  • BackhaulLinkType equals "None"

Satellite Detection

A device is identified as a Mesh Satellite when:

DataElements Path:

  • BackhaulMediaType has a value other than empty/"None"/"Controller" (e.g., "WiFi", "Ethernet")

  • OR MultiAPDevice.Backhaul.LinkType has a value other than "None"

MultiAP Path:

  • BackhaulLinkType has a value other than "None" (e.g., "WiFi", "Ethernet", "MoCA", "Other")

Identity Match Controller Detection (DataElements Only)

The DataElements path provides an additional verification method using identity matching:

Device.WiFi.DataElements.Network.Device.{i}.BackhaulMACAddress ==
Device.WiFi.DataElements.Network.Device.{i}.BackhaulALID ==
Device.WiFi.DataElements.Network.Device.{i}.ID

When all three parameters share the same value, it confirms the device is the Controller. This pattern indicates the device has no upstream parent, so backhaul reference parameters point back to itself.

Model Name Resolution

Model names are resolved using the following priority order:

For DataElements Path

  1. ManufacturerModel (if available in DataElements object)

  2. Device.DeviceInfo.ModelName (for Controllers)

  3. Device.Hosts.Host.{i}.HostName (for Satellites, matched by MAC address)

  4. "Satellite" (default fallback)

For MultiAP Path

  1. Device.DeviceInfo.ModelName (for Controllers)

  2. Device.Hosts.Host.{i}.HostName (for Satellites, matched by MAC address)

  3. "Satellite" (default fallback)

Implementation Examples

DataElements Path Implementation

Controller Configuration

# Controller Device Parameters
Device.WiFi.DataElements.Network.Device.1.ID = "00:11:22:33:44:55"
Device.WiFi.DataElements.Network.Device.1.BackhaulMediaType = "None"
Device.WiFi.DataElements.Network.Device.1.BackhaulMACAddress = "00:11:22:33:44:55"
Device.WiFi.DataElements.Network.Device.1.BackhaulALID = "00:11:22:33:44:55"
Device.WiFi.DataElements.Network.Device.1.ManufacturerModel = "MeshGateway-Pro"
Device.DeviceInfo.ModelName = "MeshGateway-Pro"

Satellite Configuration

# Satellite Device Parameters (WiFi Backhaul)
Device.WiFi.DataElements.Network.Device.2.ID = "AA:BB:CC:11:22:33"
Device.WiFi.DataElements.Network.Device.2.BackhaulMediaType = "WiFi"
Device.WiFi.DataElements.Network.Device.2.BackhaulMACAddress = "00:11:22:33:44:55"
Device.WiFi.DataElements.Network.Device.2.ManufacturerModel = "MeshNode-X100"

# Corresponding Hosts Entry
Device.Hosts.Host.10.PhysAddress = "AA:BB:CC:11:22:33"
Device.Hosts.Host.10.HostName = "LivingRoom-Mesh"

MultiAP Path Implementation

Controller Configuration

# Controller Device Parameters
Device.WiFi.MultiAP.APDevice.1.BackhaulLinkType = "None"
Device.WiFi.MultiAP.APDevice.1.MACAddress = "00:11:22:33:44:55"
Device.DeviceInfo.ModelName = "MeshRouter-X200"

Satellite Configuration

# Satellite Device Parameters (Ethernet Backhaul)
Device.WiFi.MultiAP.APDevice.2.BackhaulLinkType = "Ethernet"
Device.WiFi.MultiAP.APDevice.2.MACAddress = "BB:CC:DD:44:55:66"

# Corresponding Hosts Entry
Device.Hosts.Host.11.PhysAddress = "BB:CC:DD:44:55:66"
Device.Hosts.Host.11.HostName = "Bedroom-Mesh"

Complete Mesh Network Example

# Using MultiAP Path for Controller + 2 Satellites

# Controller
Device.DeviceInfo.ModelName = "MeshGateway-Pro"
Device.WiFi.MultiAP.APDevice.1.BackhaulLinkType = "None"
Device.WiFi.MultiAP.APDevice.1.MACAddress = "00:11:22:33:44:55"

# Satellite 1 (WiFi Backhaul)
Device.WiFi.MultiAP.APDevice.2.BackhaulLinkType = "WiFi"
Device.WiFi.MultiAP.APDevice.2.MACAddress = "AA:BB:CC:11:22:33"
Device.Hosts.Host.10.PhysAddress = "AA:BB:CC:11:22:33"
Device.Hosts.Host.10.HostName = "LivingRoom-Mesh"

# Satellite 2 (Ethernet Backhaul)
Device.WiFi.MultiAP.APDevice.3.BackhaulLinkType = "Ethernet"
Device.WiFi.MultiAP.APDevice.3.MACAddress = "BB:CC:DD:44:55:66"
Device.Hosts.Host.11.PhysAddress = "BB:CC:DD:44:55:66"
Device.Hosts.Host.11.HostName = "Bedroom-Mesh"

Path Selection Guidelines

When to Use DataElements Path

  • Device implements EasyMesh or Wi-Fi Alliance Data Elements specification

  • ManufacturerModel parameter is available and provides accurate model information

  • Alternative controller detection via identity matching is desired

  • Device supports MultiAPDevice.Backhaul.LinkType as fallback

When to Use MultiAP Path

  • Device implements Multi-AP Alliance specification

  • Simpler parameter structure is preferred

  • BackhaulLinkType enumeration covers all required backhaul types

  • Device firmware includes TR-181 Issue 2 Amendment 15+ with MultiAP support

Migration Strategy

If transitioning between paths:

  1. DataElements to MultiAP: Map BackhaulMediaType values directly to BackhaulLinkType

  2. MultiAP to DataElements: Set both BackhaulMediaType and MultiAPDevice.Backhaul.LinkType to same value

  3. Dual Support: Implement both paths and prefer DataElements if ManufacturerModel is populated

Common Issues and Debugging

Detection Returns "Custom objects"

Cause: Neither DataElements nor MultiAP parameter paths exist on the device

Solutions:

  • Verify device firmware includes TR-181 Issue 2 Amendment 15 or later

  • Check if mesh functionality is enabled in device configuration

  • Confirm device supports EasyMesh, Multi-AP, or equivalent mesh protocol

  • Review device manufacturer documentation for supported TR-181 objects

Satellite Model Name Shows as "Satellite"

Cause: MAC address matching failed between device MAC and Hosts table

Solutions:

  • Verify Satellite’s MAC address parameter is correctly populated (ID for DataElements, MACAddress for MultiAP)

  • Ensure Satellite is registered in Device.Hosts.Host table with correct PhysAddress

  • Check MAC address format consistency (uppercase/lowercase, separator style)

  • Confirm the management interface MAC is the one tracked in Hosts table

  • Verify DHCP or network discovery has populated the Hosts table

Controller Not Detected Correctly

Cause: BackhaulMediaType or BackhaulLinkType has incorrect value

Solutions:

  • For DataElements: Verify BackhaulMediaType is empty, "None", or "Controller"

  • For MultiAP: Verify BackhaulLinkType is exactly "None" (case-sensitive)

  • Check identity match: BackhaulMACAddress == BackhaulALID == ID (DataElements only)

  • Ensure only one device in the mesh has Controller indicator values

Multiple Controllers Detected

Cause: Multiple device instances have Controller indicator values

Solutions:

  • In proper mesh topology, only one device should be Controller

  • Verify mesh configuration and role assignments

  • Check if devices are in standalone mode vs. mesh mode

  • Review BackhaulMediaType/BackhaulLinkType values across all device instances

BackhaulMediaType Empty but Not Recognized as Controller

Cause: Implementation requires explicit value check for empty string

Solutions:

  • Ensure detection logic treats empty string as Controller indicator

  • Verify parameter exists in data model (absence vs. empty are different)

  • Check for whitespace-only values that appear empty

  • Consider using identity match as alternative verification

Validation Checklist

Use this checklist to verify correct implementation:

DataElements Path

  • Device.WiFi.DataElements.Network.Device.{i} object exists

  • BackhaulMediaType parameter is populated with valid value

  • Controller has BackhaulMediaType = empty/"None"/"Controller"

  • Satellites have BackhaulMediaType with actual media type

  • ManufacturerModel is populated (recommended)

  • Identity match works: BackhaulMACAddress == BackhaulALID == ID for Controller

  • Satellite MAC addresses exist in Device.Hosts.Host table

MultiAP Path

  • Device.WiFi.MultiAP.APDevice.{i} object exists

  • BackhaulLinkType parameter is populated with valid value

  • Controller has BackhaulLinkType = "None"

  • Satellites have BackhaulLinkType with actual link type ("WiFi", "Ethernet", etc.)

  • MACAddress parameter is populated for all APDevice instances

  • Satellite MAC addresses exist in Device.Hosts.Host table

  • Device.DeviceInfo.ModelName is set for Controller

Common Requirements

  • Only one device has Controller indicators in the mesh

  • All Satellites reference the Controller via backhaul parameters

  • Device.Hosts.Host table is populated with Satellite entries

  • MAC address formats are consistent (case, separators)

  • Model name resolution succeeds for both Controller and Satellites