Summary
HDANYWHERE MHUBLegacy is a family of HDMI matrix switches supporting video and audio routing, zone management, and third-party device control. Control is via a REST/HTTP API accessible on the local network. The base URL is http://devicehost/api/ and the HTTP port is 80. No authentication is required for local control.
Transport
protocols:
- http
addressing:
base_url: http://devicehost/api/
port: 80 # inferred from DNS-SD responses showing port 80
auth:
type: none # inferred: no auth procedure in source for local MHUB control
Traits
- powerable # inferred from power on/off commands (api/power/0/, api/power/1/)
- routable # inferred from switch command (api/control/switch/)
- queryable # inferred from data endpoints returning state
- levelable # inferred from volume and mute commands
Actions
- id: power_off
label: Standby ON (Turn Off)
kind: action
params: []
protocol_hint: GET http://devicehost/api/power/0/
- id: power_on
label: Standby OFF (Turn On)
kind: action
params: []
protocol_hint: GET http://devicehost/api/power/1/
- id: reboot_full
label: Full Reboot / Power Cycle
kind: action
params: []
protocol_hint: GET http://devicehost/api/reboot/1/ (30s execution time)
- id: reboot_os
label: Reboot OS
kind: action
params: []
protocol_hint: GET http://devicehost/api/reboot/2/
- id: identify
label: Identify Device
kind: action
params: []
protocol_hint: GET http://devicehost/api/identify/
- id: switch
label: Switch Input to Output
kind: action
params:
- name: output
type: string
description: Output port ID (a, b, c, d...)
- name: input
type: integer
description: Input port number (1, 2, 3, 4...)
protocol_hint: GET http://devicehost/api/control/switch/[ox]/[iy]/
- id: switch_zone
label: Zone Switching (MHUB Audio)
kind: action
params:
- name: zone
type: string
description: Zone ID (z1, z2, z3...)
- name: input
type: integer
description: Input port number (1, 2, 3...)
protocol_hint: GET http://devicehost/api/control/switch/zone/[zid]/[iy]/
- id: set_volume
label: Set Output Volume
kind: action
params:
- name: output
type: string
description: Output port ID (a, b, c...)
- name: volume
type: integer
description: Volume level 1-100
protocol_hint: GET http://devicehost/api/control/volume/[ox]/[vy]/
- id: volume_step
label: Step Output Volume
kind: action
params:
- name: output
type: string
description: Output port ID (a, b, c...)
- name: direction
type: string
enum: [up, down]
- name: step
type: integer
description: Volume step 1-10
protocol_hint: GET http://devicehost/api/control/volume/step/[ox]/[x]/[y]
- id: set_zone_volume
label: Set Zone Volume (MZMA only)
kind: action
params:
- name: zone
type: string
description: Zone ID (z1, z2, z3...)
- name: volume
type: integer
description: Volume level 0-100
protocol_hint: GET http://devicehost/api/control/volume/zone/[zid]/[x]
- id: mute
label: Mute Output
kind: action
params:
- name: output
type: string
description: Output port ID (a, b, c...)
- name: state
type: boolean
description: true=muted, false=unmuted, toggle=toggle
protocol_hint: GET http://devicehost/api/control/mute/[ox]/[mx]/
- id: mute_zone
label: Mute Zone (MHUB AUDIO/MZMA)
kind: action
params:
- name: zone
type: string
description: Zone ID (z1, z2, z3...)
- name: state
type: boolean
description: true=muted, false=unmuted
protocol_hint: GET http://devicehost/api/control/mute/zone/[zid]/[mx]/
- id: set_arc
label: Audio Return Channel (ARC)
kind: action
params:
- name: output
type: string
description: Output port ID (a, b, c...)
- name: type
type: integer
description: Type 0=HDMI, 1=HDBaseT
- name: enabled
type: boolean
description: true=ARC On, false=ARC Off
protocol_hint: GET http://devicehost/api/control/arc/[ox]/[ty]/[ax]/
- id: output_enable
label: Shutdown Amplifier / Enable Output
kind: action
params:
- name: output
type: string
description: Output port ID (a, b, c...)
- name: state
type: string
enum: [on, off]
protocol_hint: GET http://devicehost/api/control/output/[oid]/[x]/
- id: zone_enable
label: Enable/Disable Zone Output
kind: action
params:
- name: zone
type: string
description: Zone ID (z1, z2, z3...)
- name: state
type: string
enum: [on, off]
protocol_hint: GET http://devicehost/api/control/zone/[zid]/[x]/
- id: execute_sequence
label: Execute Sequence
kind: action
params:
- name: sequence_id
type: string
description: Sequence ID
- name: state
type: boolean
description: Optional boolean state
protocol_hint: GET http://devicehost/api/control/sequence/[sid]/[y]
- id: execute_function
label: Execute Function
kind: action
params:
- name: function_id
type: string
description: Function ID
- name: state
type: boolean
description: Optional boolean state
protocol_hint: GET http://devicehost/api/control/function/[fid]/[y]
- id: group_create
label: Create Group
kind: action
params:
- name: label
type: string
description: Group label
protocol_hint: GET http://devicehost/api/control/group/create/[groupLabel]/
- id: group_delete
label: Delete Group
kind: action
params:
- name: group_id
type: string
description: Group ID
protocol_hint: GET http://devicehost/api/control/group/delete/[gid]/
- id: group_add_zone
label: Add Zone to Group
kind: action
params:
- name: group_id
type: string
description: Group ID
- name: zones
type: array
items:
type: string
description: Array of zone IDs
protocol_hint: POST http://devicehost/api/control/group/[gid]/add
- id: group_remove_zone
label: Remove Zone from Group
kind: action
params:
- name: group_id
type: string
description: Group ID
- name: zones
type: array
items:
type: string
description: Array of zone IDs
protocol_hint: POST http://devicehost/api/control/group/[gid]/delete
- id: group_set_volume
label: Set Group Volume
kind: action
params:
- name: group_id
type: string
description: Group ID
- name: volume
type: integer
description: Volume 1-100
protocol_hint: GET http://devicehost/api/control/group/volume/set/[gid]/[vs]/
- id: group_volume_step
label: Step Group Volume
kind: action
params:
- name: group_id
type: string
description: Group ID
- name: direction
type: string
enum: [up, down]
protocol_hint: GET http://devicehost/api/control/group/volume/set/[gid]/x/
- id: group_mute
label: Mute Group
kind: action
params:
- name: group_id
type: string
description: Group ID
- name: state
type: boolean
description: true=muted, false=unmuted
protocol_hint: GET http://devicehost/api/control/mutegroup/[gid]/[ox]/
- id: fix_audio
label: Source Audio Extraction (Fix Audio)
kind: action
params:
- name: enabled
type: boolean
description: true=disable matrix, false=enable matrix
protocol_hint: GET http://devicehost/api/control/fixaudio/[ax]/
- id: follow_audio
label: Follow Audio Selection
kind: action
params:
- name: mode
type: string
enum: [input, output, ?]
description: Follow Input, Follow Output, or query current state
protocol_hint: GET http://devicehost/api/control/followaudio/[ax]/
- id: send_ir_command
label: Execute uControl IR Command
kind: action
params:
- name: ir_port
type: integer
description: IR port ID (1, 2, 3...)
- name: command_id
type: integer
description: IR command ID from uControl pack
protocol_hint: GET http://devicehost/api/command/ir/[io]/[cy]
- id: send_ir_hold
label: Execute uControl IR Command (Hold)
kind: action
params:
- name: ir_port
type: integer
description: IR port ID
- name: command_id
type: integer
description: IR command ID
protocol_hint: GET http://devicehost/api/command/ir/[io]/[cy]/hold (repeats every 250ms)
- id: send_ir_release
label: Release IR Hold
kind: action
params:
- name: ir_port
type: integer
description: IR port ID
- name: command_id
type: integer
description: IR command ID
protocol_hint: GET http://devicehost/api/command/ir/[io]/[cy]/release
- id: send_cec_command
label: Execute uControl CEC Command
kind: action
params:
- name: port
type: string
description: Port ID (a, b, c... for outputs, 1, 2, 3... for inputs)
- name: type
type: integer
description: CEC command type 0=HDMI output, 1=HDBT output
- name: command_id
type: integer
description: CEC command ID from uControl pack
protocol_hint: POST http://devicehost/api/command/cec/[io]/[ty]/[cy]/
- id: send_cec_passthrough
label: CEC Passthrough (Custom CEC Command)
kind: action
params:
- name: port
type: string
description: Port ID
- name: type
type: integer
description: CEC type 0=HDMI output, 1=HDBT output
- name: logical_address
type: string
description: CEC logical address (hex)
- name: command
type: string
description: CEC command (hex)
- name: arguments
type: string
description: CEC arguments (space-separated hex)
protocol_hint: POST http://devicehost/api/command/cecpass/[io]/[ty]/ with JSON body
- id: send_ip_command
label: Execute uControl IP Command
kind: action
params:
- name: pack_id
type: integer
description: Pack ID (1, 2, 3...)
- name: command_id
type: integer
description: IP command ID from uControl pack
protocol_hint: GET http://devicehost/api/command/ip/[pid]/[cy]
- id: send_ip_passthrough
label: IP Passthrough (Custom IP Command)
kind: action
params:
- name: type
type: string
description: Command type (POST, GET, PUT, TCP, TCPX, UDP, BROADCAST, TELNET)
- name: ip
type: string
description: Target device IP address
- name: port
type: string
description: Target port
- name: path
type: string
description: Path if required
- name: data
type: string
description: Command data
- name: auth_type
type: string
description: Auth type (header, text, login) for POST/PUT/TELNET only
- name: auth_data
type: object
description: Auth data object
protocol_hint: POST http://devicehost/api/command/ippass/ with JSON body
Feedbacks
- id: power_state
label: MHUB Power State
type: boolean
values: [true, false]
description: true=MHUB is on, false=MHUB is off
protocol_hint: GET http://devicehost/api/data/0/ returns {power: boolean}
- id: system_info
label: System Information (Standalone)
type: object
description: Returns basic system info, IO connectivity, software versions, stack status
protocol_hint: GET http://devicehost/api/data/100/ returns io_data, ir, cec, rs232, ws, mhub, stack
- id: system_info_stacked
label: System Information (Stacked Mode)
type: object
description: Returns stacked IO mapping and unit info
protocol_hint: GET http://devicehost/api/data/101/
- id: zones
label: MHUB Zones
type: array
description: Returns outputs/inputs assigned to zones
protocol_hint: GET http://devicehost/api/data/102/
- id: groups
label: MHUB Groups
type: array
description: Returns group info, volume, mute state
protocol_hint: GET http://devicehost/api/data/103/
- id: status_all
label: Status - All Zones (Single System)
type: object
description: Returns routing, volume, mute, ARC state for all zones
protocol_hint: GET http://devicehost/api/data/200/
- id: status_zone
label: Status - Single Zone
type: object
description: Returns routing and audio state for a specific zone
protocol_hint: GET http://devicehost/api/data/200/[zid] where zid = z1, z2, z3...
- id: status_stacked
label: Status - All Zones (Stacked MHUB)
type: object
protocol_hint: GET http://devicehost/api/data/203/
- id: status_zone_stacked
label: Status - Single Zone (Stacked MHUB)
type: object
protocol_hint: GET http://devicehost/api/data/203/[zid]
- id: ucontrol_summary
label: uControl Pack Summary (Single)
type: object
description: Returns which IR ports have uControl packs installed
protocol_hint: GET http://devicehost/api/data/201/
- id: ucontrol_pack
label: uControl Pack Details
type: object
description: Returns button IDs and labels for a uControl pack
protocol_hint: GET http://devicehost/api/data/201/[x] where x = IR port
- id: sequences_functions
label: Sequences and Functions
type: object
protocol_hint: GET http://devicehost/api/data/202/
- id: cec_pack
label: uControl CEC Pack
type: object
protocol_hint: GET http://devicehost/api/data/204/
- id: ucontrol_summary_stack
label: uControl Pack Summary (Stack)
type: object
protocol_hint: GET http://devicehost/api/data/205/
- id: ucontrol_pack_stack
label: uControl Pack Details (Stack)
type: object
protocol_hint: GET http://devicehost/api/data/205/[x]
- id: ip_pack_info
label: uControl IP Pack Information
type: object
protocol_hint: GET http://devicehost/api/data/206/ or GET http://devicehost/api/data/206/[x]
Variables
# Volume levels are returned as integers (0-100) via status endpoints
# Mute states are returned as booleans via status endpoints
# These are queried via /api/data/200/ and /api/data/203/ endpoints
- id: zone_volume
label: Zone Audio Volume
type: integer
range: [0, 100]
description: Audio volume level for a zone
- id: zone_mute
label: Zone Mute State
type: boolean
description: true=muted, false=unmuted
- id: output_enabled
label: Output Enabled State
type: boolean
description: true=output enabled, false=output disabled
- id: arc_enabled
label: ARC Enabled State
type: boolean
description: true=ARC enabled, false=ARC disabled
- id: display_power
label: Display Power State
type: string
values: [true, false, unknown]
description: Power state of display connected to output
Events
# UNRESOLVED: The document mentions UDP State broadcast on port 3000 but does not
# document the event format or triggering conditions for unsolicited notifications.
# Events may be emitted by MHUB but no explicit documentation found.
- id: udp_state_broadcast
label: UDP State Broadcast
type: object
description: MHUB broadcasts state changes via UDP to port 3000
note: "Event format not documented in source"
Macros
# UNRESOLVED: Macros (called "Sequences" in MHUB docs) are user-defined and stored
# on the device. The document describes the API to execute them but not their
# creation or the list of available sequences. Query /api/data/202/ for stored sequences.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: No safety warnings or interlock procedures found in source.
# The document notes that power commands (api/power/0/, api/power/1/) are not
# universally supported on every MHUB system - users should verify device support.
Notes
- Naming convention: All API interaction is lowercase. Output ports use letters (a, b, c...), input ports use numbers (1, 2, 3...). Zones use z-prefix (z1, z2, z3...). Groups use g-prefix (g1, g2...).
- API version: The document describes API version 2.1 for newer (_hda._tcp) devices and API version 2.0 for older (_http._tcp) devices.
- HTTP methods: Only GET and POST are supported. PUT and DELETE are not supported.
- Device discovery: MHUB uses mDNS/DNS-SD on the network. Services announced under either "_http._tcp" (older) or "_hda._tcp" (newer).
- Port 3000: UDP state broadcast is mentioned at port 3000 but the event payload format is not documented.
- Stacking: Up to 10 MHUB devices can be stacked. Communication is only with the Master device in a stack.
- Reboot timing: Full reboot (api/reboot/1/) has a fixed execution time of 30 seconds before communication is restored.
- IR port numbering: IR ports use separate numbering from video/audio ports. Ports start at 1 and increment. AVR ports are always ++1 after the final forwards port.
- ARC routing: ARC must be enabled before switching the input, to avoid no audio from display's internal speaker.
- Volume support: Volume APIs (api/control/volume/) are only supported on MHUB AUDIO, MZMA6455, MHUB44100A, MHUB66100A, MHUBS888100A, and MHUBS161616100A/DM systems.
## Provenance
```yaml
source_domains:
- docs.google.com
source_urls:
- https://docs.google.com/document/d/e/2PACX-1vRCNYIheN9g9cZNAQkGNLM9xP5CNlED0dZ-rrY2DB-wwqI_1gxEstEqE8z_fHvXZ_k92SHlRUxihupd/pub
retrieved_at: 2026-04-30T04:31:13.439Z
last_checked_at: 2026-06-02T22:07:33.266Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:07:33.266Z
matched_actions: 33
action_count: 33
confidence: medium
summary: "All 33 spec actions traced to source (dip-safe re-verify). (4 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "RS232 and IP control mentioned are for pass-through to attached devices, not MHUB matrix control. MHUB itself is controlled exclusively via HTTP REST API."
- "The document mentions UDP State broadcast on port 3000 but does not"
- "Macros (called \"Sequences\" in MHUB docs) are user-defined and stored"
- "No safety warnings or interlock procedures found in source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0