Summary
Source covers the HDANYWHERE (HDA) MHUB REST/HTTP API for controlling HDA matrix systems. The LM1xxA0x and LM2xxAxx model series are not enumerated in the source's "Supported Systems" table; the API is documented for MHUB U, MHUB PRO, MHUB PRO 2.0, MHUB MAX, MHUB AUDIO, and uControl Zone Processor families. Coverage is included only at the protocol/transport level and for API endpoints that may apply to these older units if they run MHUB-OS 8.20+ with API 2.1 — this is UNRESOLVED in the source.
Transport
protocols:
- http
addressing:
base_url: "http://devicehost/api/"
port: 80
auth:
type: none # inferred: no auth procedure in source (protocol stated as REST/HTTP/OAuth 2.0 in prologue but no auth flow described in API body)
Traits
- powerable # inferred from /api/power/0/ and /api/power/1/ endpoints
- routable # inferred from /api/control/switch/ and /api/control/switch/zone/ endpoints
- queryable # inferred from /api/data/* status endpoints
- levelable # inferred from /api/control/volume/, /api/control/volume/zone/, /api/control/group/volume/set/
Actions
# All actions enumerate distinct HTTP endpoints documented in source.
# Arguments shown as path-template segments where the source uses placeholders.
# --- Critical ---
- id: reboot_full
label: Full Reboot / Power Cycle
kind: action
command: "GET http://devicehost/api/reboot/1/"
params: []
- id: reboot_mhub_os
label: Reboot MHUB-OS
kind: action
command: "GET http://devicehost/api/reboot/2/"
params: []
- id: power_standby_on
label: Standby On (Power Off)
kind: action
command: "GET http://devicehost/api/power/0/"
params: []
- id: power_standby_off
label: Standby Off (Power On)
kind: action
command: "GET http://devicehost/api/power/1/"
params: []
- id: identify
label: Identify (flash LEDs)
kind: action
command: "GET http://devicehost/api/identify/"
params: []
# --- Data queries ---
- id: query_power_state
label: Query MHUB Power State
kind: query
command: "GET http://devicehost/api/data/0/"
params: []
- id: query_system_info_standalone
label: Query System Info (Standalone)
kind: query
command: "GET http://devicehost/api/data/100/"
params: []
- id: query_system_info_stacked
label: Query System Info (Stacked)
kind: query
command: "GET http://devicehost/api/data/101/"
params: []
- id: query_zones
label: Query MHUB Zones
kind: query
command: "GET http://devicehost/api/data/102/"
params: []
- id: query_groups
label: Query MHUB Groups
kind: query
command: "GET http://devicehost/api/data/103/"
params: []
- id: query_status_single
label: Query Status - Single System
kind: query
command: "GET http://devicehost/api/data/200/"
params: []
- id: query_zone_status_single
label: Query Zone Status - Single System
kind: query
command: "GET http://devicehost/api/data/200/{zid}"
params:
- name: zid
type: string
description: Zone ID (z1, z2, z3, ...)
- id: query_ucontrol_summary
label: Query uControl Pack Summary
kind: query
command: "GET http://devicehost/api/data/201/"
params: []
- id: query_ucontrol_pack
label: Query uControl Pack Detail
kind: query
command: "GET http://devicehost/api/data/201/{x}"
params:
- name: x
type: string
description: IR port ID
- id: query_sequences
label: Query Sequences
kind: query
command: "GET http://devicehost/api/data/202/"
params: []
- id: query_status_stacked
label: Query Status - Stacked MHUB
kind: query
command: "GET http://devicehost/api/data/203/"
params: []
- id: query_zone_status_stacked
label: Query Zone Status - Stacked MHUB
kind: query
command: "GET http://devicehost/api/data/203/{zid}"
params:
- name: zid
type: string
description: Zone ID (z1, z2, z3, ...)
# --- Operation ---
- id: switch_source
label: Switch Source
kind: action
command: "GET http://devicehost/api/control/switch/{ox}/{iy}/"
params:
- name: ox
type: string
description: Output ID (a, b, c, ...)
- name: iy
type: integer
description: Input ID (1, 2, 3, ...)
- id: switch_zone_audio
label: Zone Switch (MHUB AUDIO only)
kind: action
command: "GET http://devicehost/api/control/switch/zone/{zid}/{iy}/"
params:
- name: zid
type: string
description: Zone ID (z1, z2, z3, ...)
- name: iy
type: integer
description: Input ID (1, 2, 3, ...)
- id: fix_audio
label: Source Audio Extraction (audiomatch)
kind: action
command: "GET http://devicehost/api/control/fixaudio/{ax}/"
params:
- name: ax
type: boolean
description: Enable audiomatch (true) or disable (false)
- id: set_output_volume
label: Set Output Volume
kind: action
command: "GET http://devicehost/api/control/volume/{ox}/{vy}/"
params:
- name: ox
type: string
description: Output ID (a, b, c, ...)
- name: vy
type: integer
description: Volume (1-100)
- id: set_zone_volume
label: Set Zone Volume (MHUB AUDIO only)
kind: action
command: "GET http://devicehost/api/control/volume/zone/{zid}/{x}"
params:
- name: zid
type: string
description: Zone ID (z1, z2, z3, ...)
- name: x
type: integer
description: Volume (0-100)
- id: set_arc
label: Audio Return Channel (ARC)
kind: action
command: "GET http://devicehost/api/control/arc/{ox}/{ty}/{ax}/"
params:
- name: ox
type: string
description: Output ID (a, b, c)
- name: ty
type: integer
description: Type (0=HDMI, 1=HDBaseT)
- name: ax
type: boolean
description: ARC state (true=On, false=Off)
- id: mute_output
label: Mute Output
kind: action
command: "GET http://devicehost/api/control/mute/{ox}/{mx}/"
params:
- name: ox
type: string
description: Output ID (a, b, c, ...)
- name: mx
type: boolean
description: Mute state (true=enabled, false=disabled)
- id: mute_zone
label: Mute Zone (MHUB AUDIO only)
kind: action
command: "GET http://devicehost/api/control/mute/zone/{zid}/{mx}/"
params:
- name: zid
type: string
description: Zone ID (z1, z2, z3, ...)
- name: mx
type: boolean
description: Mute state (true=enabled, false=disabled)
- id: group_create
label: Create Group
kind: action
command: "GET http://devicehost/api/control/group/create/{groupLabel}/"
params:
- name: groupLabel
type: string
description: Group label
- id: group_delete
label: Delete Group
kind: action
command: "GET http://devicehost/api/control/group/delete/{gid}/"
params:
- name: gid
type: string
description: Group ID
- id: group_add_zones
label: Add Zones to Group
kind: action
command: "POST http://devicehost/api/control/group/{gid}/add"
params:
- name: gid
type: string
description: Group ID
- name: body
type: json
description: 'JSON body: {"zones": ["zone id", "zone id"]}'
- id: group_remove_zones
label: Remove Zones from Group
kind: action
command: "POST http://devicehost/api/control/group/{gid}/delete"
params:
- name: gid
type: string
description: Group ID
- name: body
type: json
description: 'JSON body: {"zones": ["zone id", "zone id"]}'
- id: group_set_volume
label: Set Group Volume
kind: action
command: "GET http://devicehost/api/control/group/volume/set/{gid}/{vs}/"
params:
- name: gid
type: string
description: Group ID
- name: vs
type: integer
description: Volume (1-100)
- id: mute_group
label: Mute Group
kind: action
command: "GET http://devicehost/api/control/mutegroup/{gid}/{ox}/"
params:
- name: gid
type: string
description: Group ID
- name: ox
type: boolean
description: Mute state (true=muted, false=unmuted)
- id: execute_sequence
label: Execute Sequence
kind: action
command: "GET http://devicehost/api/control/sequence/{sid}/"
params:
- name: sid
type: string
description: Sequence ID
# --- IO ---
- id: ir_ucontrol_command
label: Execute uControl IR Command
kind: action
command: "GET http://devicehost/api/command/ir/{io}/{cy}"
params:
- name: io
type: integer
description: IR port ID (1, 2, 3, ...)
- name: cy
type: integer
description: IR command ID
- id: ir_passthrough
label: IR Passthrough (Pronto hex)
kind: action
command: "POST http://devicehost/api/command/irpass/{io}/"
params:
- name: io
type: integer
description: IR port ID
- name: body
type: json
description: 'JSON body: {"irdata": "0000,0072,0000,..."} (comma- or space-separated Pronto hex)'
- id: cec_ucontrol_command
label: Execute uControl CEC Command
kind: action
command: "GET http://devicehost/api/command/cec/{io}/{ty}/{cy}/"
params:
- name: io
type: string
description: Port ID (a, b, c)
- name: ty
type: integer
description: CEC command type (0=HDMI output, 1=HDBT output)
- name: cy
type: integer
description: CEC command ID
- id: cec_passthrough
label: CEC Passthrough
kind: action
command: "POST http://devicehost/api/command/cecpass/{io}/{ty}/"
params:
- name: io
type: string
description: Port ID
- name: ty
type: integer
description: CEC command type (0=HDMI output, 1=HDBT output)
- name: body
type: json
description: 'JSON body: {"logicaladdress": "EF", "command": "82", "arguments": "10 00"}'
- id: rs232_config
label: RS232 Port Configuration
kind: action
command: "POST http://devicehost/api/command/rs232config/{pt}/"
params:
- name: pt
type: integer
description: RS232 port (1-8 on mhub, 9-16 on HDBT receivers, 17=all ports)
- name: body
type: json
description: 'JSON body: {"rs232config": {"baud": "1", "data": "1", "parity": "1"}} - baud 1=115200,2=57600,3=56000,4=38400,5=19200,6=14400,7=9600,8=4800; data 1=8,2=7,3=6,4=5; parity 1=none,2=odd,3=even'
- id: rs232_passthrough_ascii
label: RS232 Passthrough (ASCII)
kind: action
command: "POST http://devicehost/api/command/rs232pass/{io}/0/"
params:
- name: io
type: integer
description: RS232 port ID
- name: body
type: json
description: 'JSON body: {"rs232data": "pwon!"}'
- id: rs232_passthrough_hex
label: RS232 Passthrough (Hex)
kind: action
command: "POST http://devicehost/api/command/rs232pass/{io}/1/"
params:
- name: io
type: integer
description: RS232 port ID
- name: body
type: json
description: 'JSON body: {"rs232data": "A55B0110FF"}'
Feedbacks
- id: power_state
type: boolean
description: MHUB power state (true=on, false=off). From /api/data/0/
- id: zone_routing
type: object
description: Per-zone routing, volume, mute, ARC, display power. From /api/data/200/, /api/data/200/{zid}
- id: group_volume
type: integer
description: Average group volume (0-100). From /api/data/103/
- id: group_mute
type: boolean
description: Group mute state. From /api/data/103/
- id: zone_audio_volume
type: integer
description: Per-zone audio volume (0-100). From /api/data/200/{zid}
- id: zone_mute
type: boolean
description: Per-zone mute state. From /api/data/200/{zid}
- id: arc_state
type: boolean
description: ARC state for output. From /api/data/200/{zid}
- id: display_power
type: string
description: Display power state (true/false/unknown). From /api/data/200/{zid}
- id: first_boot
type: boolean
description: First boot completed. From /api/data/100/
- id: ucontrol_pack_info
type: object
description: uControl pack name, type, version, IR commands list. From /api/data/201/{x}
Variables
# No standalone settable variables beyond actions; volume and mute are exposed via actions/feedbacks.
Events
# UNRESOLVED: source does not document unsolicited notifications or push events from the device.
Macros
# Source references /api/data/202/ Sequences and /api/control/sequence/{sid}/ execution, but sequence
# definitions (multi-step contents) are stored on-device and not enumerated in this source.
# Treat as opaque handle: trigger stored sequence by ID.
- id: execute_sequence
description: Trigger a user-defined on-device Sequence by its ID.
command: "GET http://devicehost/api/control/sequence/{sid}/"
params:
- name: sid
type: string
description: Sequence ID (returned from /api/data/202/)
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no explicit safety warnings, interlocks, or power-on sequencing requirements.
Notes
- Source document is the HDANYWHERE (HDA) MHUB REST API specification, API version 2.1, applicable to MHUB-OS 8.20+ / FW 2.0+. The target LM1xxA0x and LM2xxAxx model series are NOT enumerated in the source's "Supported Systems" table; applicability of this API to those specific older matrix units is UNRESOLVED.
- All API resources are served from the base URL
http://devicehost/api/.devicehostresolves via mDNS (DNS-SD) toMHUB431U.local,MHUB862U.local, etc. — none of the LM1xxA0x/LM2xxAxx hostnames appear in the DNS-SD responses table. - Source explicitly states power control is "not universally supported on every system" — confirm per-unit.
- /api/data/100/ response includes
first_bootflag indicating first-boot state and reports IO connectivity including RS232 and CEC ports. - /api/command/rs232config/ exposes RS232 baud (115200 down to 4800), data length (5-8), and parity (none/odd/even). It is an HDA-side configuration of downstream RS232 ports, not a serial transport for the MHUB itself.
- /api/command/rs232pass/ is a passthrough tunnel; it does not define RS232 protocol but allows forwarding ASCII or hex commands to attached devices (e.g., displays, sources). Documented examples: ASCII
pwon!, HEXa55b0110ff. - IR command IDs 0-59 map to common remote buttons (Power, Volume, Channel, Transport, Navigation, Color keys, etc.) — see /api/data/201/{x} for uControl pack command definitions.
- IR ports: backwards (chassis), forwards (display receivers), and AVR ports use numeric IDs starting at 1; AVR port ID is always +1 after the last forwards ID. AVR ports do not apply to LM1xx/LM2xx per source if those units lack AVR capability.
- Source explicitly notes CEC is non-standard across manufacturers and HDANYWHERE cannot guarantee command support.
- HDA Cloud references section states development is paused; cloud-side features not documented further.
Provenance
source_domains:
- cloud.hdanywhere.com
- support.hdanywhere.com
- docs.google.com
source_urls:
- https://cloud.hdanywhere.com/docs/api/hda_api.pdf
- https://support.hdanywhere.com/rs232-settings-for-mhub-2017-models/
- https://docs.google.com/document/d/e/2PACX-1vRCNYIheN9g9cZNAQkGNLM9xP5CNlED0dZ-rrY2DB-wwqI_1gxEstEqE8z_fHvXZ_k92SHlRUxihupd/pub
- https://support.hdanywhere.com/2014/09/mhub-rs232-control-information/
- https://support.hdanywhere.com/hda-control-drivers/
retrieved_at: 2026-07-24T19:24:06.730Z
last_checked_at: 2026-09-11T22:16:46.713Z
Verification Summary
verdict: verified
checked_at: 2026-09-11T22:16:46.713Z
matched_actions: 39
action_count: 39
confidence: medium
summary: "All 39 spec actions map to endpoints documented verbatim in the source; bidirectional coverage is complete and transport values are present. (6 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "LM1xxA0x / LM2xxAxx are not listed in the Supported Systems table; applicability of the MHUB REST API to these specific older model families is not confirmed in source."
- "API Prologue lists \"REST/HTTP/OAuth 2.0\" as protocols but no OAuth flow, token, login, or credential procedure is documented anywhere in the source. Auth marked as none per inference rule; OAuth may apply but is not specified."
- "source documents RS232 settings configuration and RS232 passthrough via /api/command/rs232pass/ and /api/command/rs232config/, so RS232 exists as a downstream-facing transport on supported MHUB units. Whether LM1xx/LM2xx expose RS232 ports and which serial parameters apply is not stated in source."
- "source does not document unsolicited notifications or push events from the device."
- "source contains no explicit safety warnings, interlocks, or power-on sequencing requirements."
- "source has no description of LM1xxA0x or LM2xxAxx specifically. Spec extracted from general MHUB API doc with all model-specific gaps marked."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0