Summary
Shure MXA901 is a conferencing ceiling array microphone with Dante network audio and an IntelliMix DSP chain (AEC, automixer, noise filtering). This spec covers its Ethernet TCP/IP command-string control interface for third-party control systems (AMX/Crestron/Extron): mute, LED color/behavior, presets, per-channel and coverage-area gain, beam steering, metering, talker-position reporting, and array-group triangulation.
Transport
protocols:
- tcp
addressing:
port: 2202
auth:
type: none # inferred: no auth/login procedure described in source
# Notes: raw TCP socket. Control system must open connection as "Client".
# For Telnet clients (PuTTY): set Telnet negotiation to disabled or passive;
# active Telnet negotiation is NOT supported. First command after connect may
# return <REP ERR> - resend to recover (per source).
Traits
traits:
- queryable # inferred: extensive GET query commands documented
- levelable # inferred: per-channel / coverage-area gain control documented
Actions
# Channel index conventions (from source "Channel Number Assignments"):
# Auto-coverage ON : 09 (automixer out), 10 (AEC ref in)
# Auto-coverage OFF: 01-08 (Dante outs / postgate), 09 (automixer out), 10 (AEC ref)
# Index 0 in GET = all applicable channels. Most SETs do not accept 0.
# ---- Device Information ----
- id: get_all
label: Get All Properties
kind: query
command: "< GET ALL >"
params: []
- id: get_model
label: Get Model Name
kind: query
command: "< GET MODEL >"
params: []
- id: get_serial_num
label: Get Serial Number
kind: query
command: "< GET SERIAL_NUM >"
params: []
- id: get_fw_ver
label: Get Firmware Version
kind: query
command: "< GET FW_VER >"
params: []
- id: get_ip_addr_audio_primary
label: Get Primary Audio Network IP Address
kind: query
command: "< GET IP_ADDR_NET_AUDIO_PRIMARY >"
params: []
- id: get_subnet_audio_primary
label: Get Primary Audio Network Subnet Mask
kind: query
command: "< GET IP_SUBNET_NET_AUDIO_PRIMARY >"
params: []
- id: get_gateway_audio_primary
label: Get Primary Audio Network Gateway
kind: query
command: "< GET IP_GATEWAY_NET_AUDIO_PRIMARY >"
params: []
- id: get_control_mac_addr
label: Get Control MAC Address
kind: query
command: "< GET CONTROL_MAC_ADDR >"
params: []
- id: get_device_id
label: Get Device ID
kind: query
command: "< GET DEVICE_ID >"
params: []
- id: get_na_device_name
label: Get Dante Device Name
kind: query
command: "< GET NA_DEVICE_NAME >"
params: []
- id: get_chan_name
label: Get Channel Name
kind: query
command: "< GET index CHAN_NAME >"
params:
- name: index
type: integer
description: "Channel index; auto-cov on: 09; off: 0-09. 0 = all channels."
- id: get_na_chan_name
label: Get Dante Channel Name
kind: query
command: "< GET index NA_CHAN_NAME >"
params:
- name: index
type: integer
description: "Channel index per Channel Number Assignments. 0 = all channels."
- id: set_flash
label: Identify Device (Flash LED)
kind: action
command: "< SET FLASH flash_state >"
params:
- name: flash_state
type: enum
values: [ON, OFF]
- id: set_preset
label: Load Preset
kind: action
command: "< SET PRESET ## >"
params:
- name: "##"
type: integer
description: "Preset number 1-10"
- id: get_preset
label: Get Active Preset
kind: query
command: "< GET PRESET >"
params: []
- id: get_preset_name
label: Get Preset Name
kind: query
command: "< GET PRESET_NAME nn >"
params:
- name: nn
type: integer
description: "Preset identifier 1-10"
- id: get_encryption
label: Get Device Encryption Status
kind: query
command: "< GET ENCRYPTION >"
params: []
- id: set_default_settings
label: Restore Default Settings
kind: action
command: "< SET DEFAULT_SETTINGS >"
params: []
- id: reboot
label: Reboot Device
kind: action
command: "< SET REBOOT >"
params: []
# Note from source: this command sends NO acknowledgement.
- id: set_array_height
label: Set Array Height
kind: action
command: "< SET ARRAY_HEIGHT height >"
params:
- name: height
type: integer
description: "Height from floor, 122-914 cm (4-30 ft), 1 cm increments"
- id: set_array_height_override
label: Set Array Height Override
kind: action
command: "< SET ARRAY_HEIGHT_OVERRIDE height >"
params:
- name: height
type: integer
description: "Height from floor, 122-914 cm, 1 cm increments"
# ---- Channel & Coverage Area ----
- id: get_audio_clip_indicator
label: Get Audio Clip Indicator
kind: query
command: "< GET index AUDIO_OUT_CLIP_INDICATOR >"
params:
- name: index
type: integer
description: "Channel index per Channel Number Assignments. 0 = all channels."
- id: set_audio_gain_hi_res
label: Set Audio Gain (Digital, Hi-Res)
kind: action
command: "< SET index AUDIO_GAIN_HI_RES gain >"
params:
- name: index
type: integer
description: "Channel index per Channel Number Assignments. 0 not supported for SET."
- name: gain
type: integer
description: "1/10 dB units scaled by 1100; 0-1400 = -110.0 to +30.0 dB"
- id: set_audio_gain_hi_res_inc
label: Increment Audio Gain (Hi-Res)
kind: action
command: "< SET index AUDIO_GAIN_HI_RES inc step >"
params:
- name: index
type: integer
- name: step
type: integer
description: "1/10 dB increment; result must stay in valid SET range"
- id: set_audio_gain_hi_res_dec
label: Decrement Audio Gain (Hi-Res)
kind: action
command: "< SET index AUDIO_GAIN_HI_RES dec step >"
params:
- name: index
type: integer
- name: step
type: integer
description: "1/10 dB decrement; result must stay in valid SET range"
- id: get_audio_gain_hi_res
label: Get Audio Gain (Hi-Res)
kind: query
command: "< GET index AUDIO_GAIN_HI_RES >"
params:
- name: index
type: integer
- id: set_audio_gain_postgate
label: Set Audio Gain (Postgate)
kind: action
command: "< SET index AUDIO_GAIN_POSTGATE gain >"
params:
- name: index
type: integer
- name: gain
type: integer
description: "1/10 dB scaled by 1100; 0-1400 = -109.9 to +30.0 dB"
# Auto-coverage OFF only.
- id: get_audio_gain_postgate
label: Get Audio Gain (Postgate)
kind: query
command: "< GET index AUDIO_GAIN_POSTGATE >"
params:
- name: index
type: integer
- id: get_audio_in_rms_lvl
label: Get Audio Level (RMS)
kind: query
command: "< GET x AUDIO_IN_RMS_LVL >"
params:
- name: x
type: integer
description: "Channel index. 0 = all channels."
- id: get_audio_in_peak_lvl
label: Get Audio Level (Peak)
kind: query
command: "< GET index AUDIO_IN_PEAK_LVL >"
params:
- name: index
type: integer
- id: set_device_audio_mute
label: Set Device Mute
kind: action
command: "< SET DEVICE_AUDIO_MUTE cmd >"
params:
- name: cmd
type: enum
values: [ON, OFF, TOGGLE]
- id: get_device_audio_mute
label: Get Device Mute
kind: query
command: "< GET DEVICE_AUDIO_MUTE >"
params: []
- id: set_channel_mute
label: Set Channel Mute
kind: action
command: "< SET nn AUDIO_MUTE cmd >"
params:
- name: nn
type: integer
description: "Channel per Channel Number Assignments"
- name: cmd
type: enum
values: [ON, OFF, TOGGLE]
- id: get_channel_mute
label: Get Channel Mute
kind: query
command: "< GET nn AUDIO_MUTE >"
params:
- name: nn
type: integer
- id: set_channel_mute_postgate
label: Set Channel Mute (Post Gate)
kind: action
command: "< SET nn AUDIO_MUTE_POSTGATE cmd >"
params:
- name: nn
type: integer
- name: cmd
type: enum
values: [ON, OFF, TOGGLE]
# Auto-coverage OFF only.
- id: get_channel_mute_postgate
label: Get Channel Mute (Post Gate)
kind: query
command: "< GET nn AUDIO_MUTE_POSTGATE >"
params:
- name: nn
type: integer
- id: get_num_active_mics
label: Get Active Mic Channels Count
kind: query
command: "< GET NUM_ACTIVE_MICS >"
params: []
# Auto-coverage OFF only.
- id: set_speech_gating
label: Set Speech Gating Threshold
kind: action
command: "< SET nn SPEECH_GATING state >"
params:
- name: nn
type: integer
description: "Automix output channel per Channel Number Assignments"
- name: state
type: enum
values: [Off, Low, Medium, High]
- id: get_speech_gating
label: Get Speech Gating Threshold
kind: query
command: "< GET nn SPEECH_GATING >"
params:
- name: nn
type: integer
- id: set_noise_filter
label: Set Enhanced Noise Filtering
kind: action
command: "< SET nn NOISE_FILTER state >"
params:
- name: nn
type: integer
description: "Automix output channel per Channel Number Assignments"
- name: state
type: enum
values: [ON, OFF]
- id: get_noise_filter
label: Get Enhanced Noise Filtering
kind: query
command: "< GET nn NOISE_FILTER >"
params:
- name: nn
type: integer
- id: set_chan_automix_solo_en
label: Solo Channel to Automix
kind: action
command: "< SET index CHAN_AUTOMIX_SOLO_EN sts >"
params:
- name: index
type: integer
description: "Mic input channel. 0 = all channels."
- name: sts
type: enum
values: [ENABLE, DISABLE]
# Auto-coverage OFF only.
- id: get_chan_automix_solo_en
label: Get Channel Automix Solo
kind: query
command: "< GET index CHAN_AUTOMIX_SOLO_EN >"
params:
- name: index
type: integer
- id: set_beam_w
label: Set Lobe Width
kind: action
command: "< SET index BEAM_W width >"
params:
- name: index
type: integer
description: "Lobe number per Channel Number Assignments. 0 = all."
- name: width
type: enum
values: [NARROW, MEDIUM, WIDE]
# Auto-coverage OFF only.
- id: get_beam_w
label: Get Lobe Width
kind: query
command: "< GET index BEAM_W >"
params:
- name: index
type: integer
- id: set_auto_coverage
label: Set Automatic Coverage
kind: action
command: "< SET AUTO_COVERAGE sts >"
params:
- name: sts
type: enum
values: [On, Off]
- id: get_auto_coverage
label: Get Automatic Coverage
kind: query
command: "< GET AUTO_COVERAGE >"
params: []
- id: set_ca_mute
label: Set Coverage Area Mute
kind: action
command: "< SET index CA_MUTE cmd >"
params:
- name: index
type: integer
description: "Coverage area per Channel Number Assignments. 0 = all."
- name: cmd
type: enum
values: [ON, OFF, TOGGLE]
# Auto-coverage ON only.
- id: get_ca_mute
label: Get Coverage Area Mute
kind: query
command: "< GET index CA_MUTE >"
params:
- name: index
type: integer
- id: set_ca_gain
label: Set Coverage Area Gain
kind: action
command: "< SET index CA_GAIN gain >"
params:
- name: index
type: integer
description: "Coverage area. All-areas SET not supported."
- name: gain
type: integer
description: "1/10 dB scaled by 1100; 0-1400 = -110 to +30 dB"
# Auto-coverage ON only.
- id: set_ca_gain_inc
label: Increment Coverage Area Gain
kind: action
command: "< SET index CA_GAIN inc step >"
params:
- name: index
type: integer
- name: step
type: integer
- id: set_ca_gain_dec
label: Decrement Coverage Area Gain
kind: action
command: "< SET index CA_GAIN dec step >"
params:
- name: index
type: integer
- name: step
type: integer
- id: get_ca_gain
label: Get Coverage Area Gain
kind: query
command: "< GET index CA_GAIN >"
params:
- name: index
type: integer
# ---- Meter Rates ----
- id: set_meter_rate
label: Set Metering Rate (RMS)
kind: action
command: "< SET METER_RATE rate >"
params:
- name: rate
type: integer
description: "100-99999 ms; 0 = off; 1-99 invalid (<REP ERR>)"
- id: get_meter_rate
label: Get Metering Rate (RMS)
kind: query
command: "< GET METER_RATE >"
params: []
- id: set_ca_meter_rate
label: Set Coverage Area Metering Rate (RMS)
kind: action
command: "< SET CA_METER_RATE rate >"
params:
- name: rate
type: integer
description: "100-99999 ms; 0 = off; 1-99 invalid"
# Auto-coverage ON only.
- id: get_ca_meter_rate
label: Get Coverage Area Metering Rate (RMS)
kind: query
command: "< GET CA_METER_RATE >"
params: []
- id: set_meter_rate_postgate
label: Set Post-Gate Metering Rate (RMS)
kind: action
command: "< SET METER_RATE_POSTGATE rate >"
params:
- name: rate
type: integer
description: "100-99999 ms; 0 = off; 1-99 invalid"
# Auto-coverage OFF only.
- id: get_meter_rate_postgate
label: Get Post-Gate Metering Rate (RMS)
kind: query
command: "< GET METER_RATE_POSTGATE >"
params: []
- id: set_meter_rate_mxr_gain
label: Set Automixer Gain Metering Rate (RMS)
kind: action
command: "< SET METER_RATE_MXR_GAIN rate >"
params:
- name: rate
type: integer
description: "100-99999 ms; 0 = off; 1-99 invalid"
# Auto-coverage OFF only.
- id: get_meter_rate_mxr_gain
label: Get Automixer Gain Metering Rate (RMS)
kind: query
command: "< GET METER_RATE_MXR_GAIN >"
params: []
- id: set_meter_rate_precomp
label: Set Metering Rate Pre-Compressor (RMS)
kind: action
command: "< SET METER_RATE_PRECOMP ##### >"
params:
- name: "#####"
type: integer
description: "100-99999 ms; 0 = off; 1-99 invalid"
- id: get_meter_rate_precomp
label: Get Metering Rate Pre-Compressor (RMS)
kind: query
command: "< GET METER_RATE_PRECOMP >"
params: []
- id: set_meter_rate_aecref
label: Set AEC Reference In Metering Rate (RMS)
kind: action
command: "< SET METER_RATE_AECREF rate >"
params:
- name: rate
type: integer
description: "100-99999 ms; 0 = off; 1-99 invalid"
- id: get_meter_rate_aecref
label: Get AEC Reference In Metering Rate (RMS)
kind: query
command: "< GET METER_RATE_AECREF >"
params: []
# ---- LED Status & Behavior ----
- id: get_dev_mute_status_led_state
label: Get Mute LED State
kind: query
command: "< GET DEV_MUTE_STATUS_LED_STATE >"
params: []
- id: set_led_brightness
label: Set LED Brightness
kind: action
command: "< SET LED_BRIGHTNESS level >"
params:
- name: level
type: enum
values: ["0", "1", "2", "3", "4", "5"]
description: "0=Disabled,1=20%,2=40%,3=60%,4=80%,5=100%"
- id: get_led_brightness
label: Get LED Brightness
kind: query
command: "< GET LED_BRIGHTNESS >"
params: []
- id: set_led_color_unmuted
label: Set LED Color Unmuted
kind: action
command: "< SET LED_COLOR_UNMUTED color >"
params:
- name: color
type: enum
values: [RED, ORANGE, GOLD, YELLOW, YELLOWGREEN, GREEN, TURQUOISE, POWDERBLUE, CYAN, SKYBLUE, BLUE, PURPLE, LIGHTPURPLE, VIOLET, ORCHID, PINK, WHITE]
- id: get_led_color_unmuted
label: Get LED Color Unmuted
kind: query
command: "< GET LED_COLOR_UNMUTED >"
params: []
- id: set_led_color_muted
label: Set LED Color Muted
kind: action
command: "< SET LED_COLOR_MUTED color >"
params:
- name: color
type: enum
values: [RED, ORANGE, GOLD, YELLOW, YELLOWGREEN, GREEN, TURQUOISE, POWDERBLUE, CYAN, SKYBLUE, BLUE, PURPLE, LIGHTPURPLE, VIOLET, ORCHID, PINK, WHITE]
- id: get_led_color_muted
label: Get LED Color Muted
kind: query
command: "< GET LED_COLOR_MUTED >"
params: []
- id: set_led_state_muted
label: Set LED State Muted
kind: action
command: "< SET LED_STATE_MUTED state >"
params:
- name: state
type: enum
values: [ON, FLASHING, OFF]
- id: get_led_state_muted
label: Get LED State Muted
kind: query
command: "< GET LED_STATE_MUTED >"
params: []
- id: set_led_state_unmuted
label: Set LED State Unmuted
kind: action
command: "< SET LED_STATE_UNMUTED state >"
params:
- name: state
type: enum
values: [ON, FLASHING, OFF]
- id: get_led_state_unmuted
label: Get LED State Unmuted
kind: query
command: "< GET LED_STATE_UNMUTED >"
params: []
- id: set_dev_led_in_state
label: Set Device LED-In State
kind: action
command: "< SET DEV_LED_IN_STATE sts >"
params:
- name: sts
type: enum
values: [OFF, ON]
description: "OFF = Mute, ON = Unmute"
- id: get_dev_led_in_state
label: Get Device LED-In State
kind: query
command: "< GET DEV_LED_IN_STATE >"
params: []
# ---- DSP ----
- id: set_bypass_all_eq
label: Bypass All EQ
kind: action
command: "< SET BYPASS_ALL_EQ sts >"
params:
- name: sts
type: enum
values: [ON, OFF, TOGGLE]
# Auto-coverage OFF only.
- id: get_bypass_all_eq
label: Get Bypass All EQ
kind: query
command: "< GET BYPASS_ALL_EQ >"
params: []
- id: set_bypass_imx
label: Bypass IntelliMix
kind: action
command: "< SET BYPASS_IMX sts >"
params:
- name: sts
type: enum
values: [ON, OFF, TOGGLE]
# Auto-coverage OFF only.
- id: get_bypass_imx
label: Get Bypass IntelliMix
kind: query
command: "< GET BYPASS_IMX >"
params: []
# ---- Camera System Integration ----
- id: set_talker_position_rate
label: Set Talker Position Reporting Rate
kind: action
command: "< SET TALKER_POSITION_RATE rate >"
params:
- name: rate
type: integer
description: "0=disable(default); 100-99999 ms; invalid(1-99/>99999) echoes current"
- id: get_talker_position_rate
label: Get Talker Position Reporting Rate
kind: query
command: "< GET TALKER_POSITION_RATE >"
params: []
- id: set_talker_position_sensitivity
label: Set Talker Position Sensitivity
kind: action
command: "< SET TALKER_POSITION_SENSITIVITY sensitivity >"
params:
- name: sensitivity
type: enum
values: ["0", "1", "2", "4", "5", "6", "7", "8", "9"]
description: "Loc:0=Med,1=Low,2=High; VAD:4=Med,5=High,6=Lowest,7=Low; HeightCorr:8=off,9=on"
- id: get_talker_position_sensitivity
label: Get Talker Position Sensitivity
kind: query
command: "< GET TALKER_POSITION_SENSITIVITY >"
params: []
- id: get_automix_gate_out_ext_sig
label: Get Automixer Gate Out Status for Lobes
kind: query
command: "< GET index AUTOMIX_GATE_OUT_EXT_SIG >"
params:
- name: index
type: integer
description: "Dante mic input per Channel Number Assignments. 0 = all."
- id: set_autofocus
label: Set Autofocus
kind: action
command: "< SET AUTOFOCUS status >"
params:
- name: status
type: enum
values: [ON, OFF]
- id: get_autofocus
label: Get Autofocus
kind: query
command: "< GET AUTOFOCUS >"
params: []
- id: get_automix_gate_out_ca
label: Get Automixer Gate Out Status for Coverage Areas
kind: query
command: "< GET index AUTOMIX_GATE_OUT_CA >"
params:
- name: index
type: integer
description: "Coverage area per Channel Number Assignments. 0 = all."
# Auto-coverage ON only.
- id: set_beam_x
label: Set X-Axis Lobe Steering
kind: action
command: "< SET index BEAM_X position >"
params:
- name: index
type: integer
description: "Lobe number per Channel Number Assignments. 0 = all."
- name: position
type: integer
description: "0-3048 cm; actual -1524..+1524 cm after -1524 offset"
# Auto-coverage OFF only. X-axis parallel to LED bar.
- id: get_beam_x
label: Get X-Axis Lobe Steering
kind: query
command: "< GET index BEAM_X >"
params:
- name: index
type: integer
- id: set_beam_y
label: Set Y-Axis Lobe Steering
kind: action
command: "< SET index BEAM_Y position >"
params:
- name: index
type: integer
- name: position
type: integer
description: "0-3048 cm; actual -1524..+1524 cm after -1524 offset"
# Auto-coverage OFF only. Y-axis perpendicular to x.
- id: get_beam_y
label: Get Y-Axis Lobe Steering
kind: query
command: "< GET index BEAM_Y >"
params:
- name: index
type: integer
- id: set_beam_z
label: Set Z-Axis Lobe Steering
kind: action
command: "< SET index BEAM_Z height >"
params:
- name: index
type: integer
- name: height
type: integer
description: "0-914 cm distance down from array"
# Auto-coverage OFF only.
- id: get_beam_z
label: Get Z-Axis Lobe Steering
kind: query
command: "< GET index BEAM_Z >"
params:
- name: index
type: integer
- id: set_array_group
label: Create / Set Array Group
kind: action
command: "< SET ARRAY_GROUP devMAC(n) device_position(n) >"
params:
- name: members
type: string
description: "Repeated devMAC(n) X Y Z triples, n=1..4 (2-4 arrays). Or 'OFF'. Firmware 6.9+."
# Reporter device receives; positions relative to common reference point (cm).
- id: get_array_group
label: Get Array Group
kind: query
command: "< GET ARRAY_GROUP >"
params: []
- id: get_array_group_status
label: Get Array Group Status
kind: query
command: "< GET ARRAY_GROUP_STATUS >"
params: []
# Firmware 6.9+. Reporter reports per-member status (OK/CONNECTION_ERROR/...).
- id: set_ca_dynamic
label: Set Dynamic Coverage Area Position
kind: action
command: "< SET index CA_DYNAMIC position >"
params:
- name: index
type: integer
description: "Coverage area. 0 = all."
- name: position
type: string
description: "Xmin Ymax Xmax Ymin (cm), each shifted +1524. Size 183-1524 cm. Max 8 areas."
# Auto-coverage ON only.
- id: get_ca_dynamic
label: Get Dynamic Coverage Area Position
kind: query
command: "< GET index CA_DYNAMIC >"
params:
- name: index
type: integer
Feedbacks
# Observable states reported via < REP ... > in response to GET or after SET.
- id: model
type: string
values: "32-char padded"
- id: serial_num
type: string
values: "32-char alphanumeric padded"
- id: fw_ver
type: string
values: "18-char, 3 versions 0-65535 each, '*' if invalid"
- id: ip_addr_audio_primary
type: string
values: "15-char IP (padded)"
- id: subnet_audio_primary
type: string
values: "15-char dotted mask (padded)"
- id: gateway_audio_primary
type: string
values: "15-char dotted gateway (padded)"
- id: control_mac_addr
type: string
values: "17-char 00:0E:DD:FF:F1:63 format"
- id: device_id
type: string
values: "up to 31 chars, padded"
- id: na_device_name
type: string
values: "up to 31 chars, padded"
- id: chan_name
type: string
values: "31-char channel name, padded"
- id: na_chan_name
type: string
values: "31-char Dante channel name, padded"
- id: flash_state
type: enum
values: [ON, OFF]
- id: preset
type: integer
values: "1-10"
- id: preset_name
type: string
values: "25-char name; '{empty}' if unset"
- id: encryption
type: enum
values: [ON, OFF]
- id: default_settings_result
type: integer
values: "00 = restore successful"
- id: array_height
type: integer
values: "122-914 cm"
- id: audio_clip_indicator
type: enum
values: [ON, OFF]
- id: audio_gain_hi_res
type: integer
values: "0-1400 (= -110.0..+30.0 dB)"
- id: audio_gain_postgate
type: integer
values: "0-1400 (= -109.9..+30.0 dB)"
- id: audio_in_rms_lvl
type: integer
values: "00-60"
- id: audio_in_peak_lvl
type: integer
values: "000-060"
- id: device_audio_mute
type: enum
values: [ON, OFF]
- id: channel_mute
type: enum
values: [ON, OFF]
- id: channel_mute_postgate
type: enum
values: [ON, OFF]
- id: num_active_mics
type: integer
- id: speech_gating
type: enum
values: [Off, Low, Medium, High]
- id: noise_filter
type: enum
values: [ON, OFF]
- id: chan_automix_solo_en
type: enum
values: [ENABLE, DISABLE]
- id: beam_w
type: enum
values: [NARROW, MEDIUM, WIDE]
- id: auto_coverage
type: enum
values: [On, Off]
- id: ca_mute
type: enum
values: [On, Off]
- id: ca_gain
type: integer
values: "0-1400 (= -110..+30 dB)"
- id: meter_rate
type: integer
values: "100-99999 ms, 0=off"
- id: ca_meter_rate
type: integer
values: "100-99999 ms, 0=off"
- id: meter_rate_postgate
type: integer
values: "100-99999 ms, 0=off"
- id: meter_rate_mxr_gain
type: integer
values: "100-99999 ms, 0=off"
- id: meter_rate_precomp
type: integer
values: "100-99999 ms, 0=off"
- id: meter_rate_aecref
type: integer
values: "100-99999 ms, 0=off"
- id: dev_mute_status_led_state
type: enum
values: [ON, OFF]
description: "ON=MUTED, OFF=UNMUTED"
- id: led_brightness
type: enum
values: ["0", "1", "2", "3", "4", "5"]
- id: led_color_unmuted
type: enum
values: [RED, ORANGE, GOLD, YELLOW, YELLOWGREEN, GREEN, TURQUOISE, POWDERBLUE, CYAN, SKYBLUE, BLUE, PURPLE, LIGHTPURPLE, VIOLET, ORCHID, PINK, WHITE]
- id: led_color_muted
type: enum
values: [RED, ORANGE, GOLD, YELLOW, YELLOWGREEN, GREEN, TURQUOISE, POWDERBLUE, CYAN, SKYBLUE, BLUE, PURPLE, LIGHTPURPLE, VIOLET, ORCHID, PINK, WHITE]
- id: led_state_muted
type: enum
values: [ON, FLASHING, OFF]
- id: led_state_unmuted
type: enum
values: [ON, FLASHING, OFF]
- id: dev_led_in_state
type: enum
values: [OFF, ON]
- id: bypass_all_eq
type: enum
values: [ON, OFF]
- id: bypass_imx
type: enum
values: [ON, OFF]
- id: talker_position_rate
type: integer
values: "5-digit in REP (00100=100ms); 0=off"
- id: talker_position_sensitivity
type: integer
- id: automix_gate_out_ext_sig
type: enum
values: [ON, OFF]
- id: autofocus
type: enum
values: [ON, OFF]
- id: automix_gate_out_ca
type: enum
values: [On, Off]
- id: beam_x
type: integer
- id: beam_y
type: integer
- id: beam_z
type: integer
- id: array_group
type: string
description: "devMAC(n) X Y Z repeated, or OFF"
- id: array_group_status
type: string
description: "devMAC(n) STATUS(n); STATUS in OK/CONNECTION_ERROR/PROTOCOL_ERROR/INCOMPATIBLE/TOO_FAR/OFF"
- id: ca_dynamic
type: string
description: "Xmin Ymax Xmax Ymin (4-digit cm in REP)"
- id: error
type: enum
values: [ERR]
description: "< REP ERR > on invalid/unavailable command"
Variables
# Continuous settable params (also exposed as actions; listed here as addressable state).
- id: audio_gain_hi_res
type: integer
range: "0-1400 (-110.0..+30.0 dB, 0.1 dB units)"
unit: "dB (1/10)"
- id: audio_gain_postgate
type: integer
range: "0-1400 (-109.9..+30.0 dB, 0.1 dB units)"
unit: "dB (1/10)"
- id: ca_gain
type: integer
range: "0-1400 (-110..+30 dB, 0.1 dB units)"
unit: "dB (1/10)"
- id: array_height
type: integer
range: "122-914"
unit: "cm"
- id: meter_rate
type: integer
range: "0,100-99999"
unit: "ms"
- id: talker_position_rate
type: integer
range: "0,100-99999"
unit: "ms"
- id: beam_x_position
type: integer
range: "0-3048 (offset 1524)"
unit: "cm"
- id: beam_y_position
type: integer
range: "0-3048 (offset 1524)"
unit: "cm"
- id: beam_z_height
type: integer
range: "0-914"
unit: "cm"
Events
# Unsolicited notifications emitted by the device (metering samples, talker positions,
# and reporter-side array-group status updates). Only sent while the corresponding
# meter/talker rate is non-zero.
- id: meter_sample
command: "< SAMPLE aaa >"
description: "Auto-cov ON: single automixer-out level. Auto-cov OFF: 9 space-separated levels (000-060, -60..0 dBFS)."
- id: ca_meter_sample
command: "< SAMPLE_CA aaa bbb ccc ddd eee fff ggg hhh >"
description: "Per coverage-area RMS levels (000-060). Auto-cov ON only."
- id: meter_sample_postgate
command: "< SAMPLE aaa bbb ccc ddd eee fff ggg hhh iii >"
description: "Per mic-input post-gate levels. Auto-cov OFF only."
- id: meter_sample_mxr_gain
command: "< SAMPLE aaa bbb ccc ddd eee fff ggg hhh iii >"
description: "Per mic-input automixer gain levels. Auto-cov OFF only."
- id: meter_sample_precomp
command: "< SAMPLE_PRECOMP aaa >"
description: "Pre-compressor RMS level(s)."
- id: meter_sample_aecref
command: "< SAMPLE_AECREF aaa >"
description: "AEC reference in RMS level."
- id: talker_positions
command: "< SAMPLE TALKER_POSITIONS POSITION[1..n] >"
description: "1..n talker sets, each {LobeID} {CoverageAreaID} {X Y Z} {reserved}. MXA901 X/Y range -427..+427 cm; Z 0-914 cm. Reported only when rate>0 and talker inside a coverage area."
- id: array_group_status_update
command: "< REP ARRAY_GROUP_STATUS devMAC(n) STATUS(n) >"
description: "Unsolicited status update from reporter device when a member changes state (rejoin/error/recovery). Firmware 6.9+."
Macros
# No explicit multi-step sequences documented as named macros.
# UNRESOLVED: array-group setup is procedural (send SET to reporter, which then
# self-organizes) but not packaged as a macro by the source.
Safety
confirmation_required_for:
- set_default_settings # restores factory defaults; destructive to configuration
- reboot # drops connection; no acknowledgement sent
interlocks: []
# UNRESOLVED: source contains no interlock procedures or power-sequencing warnings.
Notes
- Transport quirk: raw TCP socket on port 2202, opened by the control system as Client. Active Telnet negotiation breaks communication; Telnet clients must use disabled/passive negotiation. With PuTTY, the first command may return
< REP ERR >— resend to recover. - Auto-coverage governs command availability. Many commands are gated:
AUDIO_GAIN_POSTGATE,AUDIO_MUTE_POSTGATE,NUM_ACTIVE_MICS,CHAN_AUTOMIX_SOLO_EN,BEAM_W,BEAM_X/Y/Z,BYPASS_ALL_EQ,BYPASS_IMX, and the post-gate/mixer-gain meter rates work only with auto-coverage OFF.CA_MUTE,CA_GAIN,CA_METER_RATE,AUTOMIX_GATE_OUT_CA,CA_DYNAMICwork only with auto-coverage ON. - Gain encoding: all gain params are in 1/10 dB units scaled by 1100 (value
v=(dB + 110) * 10); range 0–1400 spans −110.0 to +30.0 dB. - Coordinate offsets: beam X/Y positions and dynamic coverage-area corners are offset by +1524 cm (50 ft) so values are always non-negative 0–3048. Interpret by subtracting 1524.
- Array group (firmware 6.9+): 2–4 same-orientation arrays; one reporter, rest followers. Members must be within 12 ft (366 cm) of each other or
TOO_FARis reported. Talker positions then reported relative to a common reference point. REBOOTsends no acknowledgement — control system must not wait for a response.
## Provenance
```yaml
source_domains:
- shure.com
- pubs.shure.com
source_urls:
- https://www.shure.com/en-US/docs/commandstrings/MXA901-R
- https://pubs.shure.com/en-US/docs/commandstrings/MXA901/en-US
- https://pubs.shure.com/en-US/docs/guide/MXA901/en-US
- https://pubs.shure.com/en-US/docs/commandstrings
- https://www.shure.com/en-US/docs/commandstrings
retrieved_at: 2026-06-30T18:08:14.718Z
last_checked_at: 2026-07-07T12:41:18.446Z
```
## Verification Summary
```yaml
verdict: verified
checked_at: 2026-07-07T12:41:18.446Z
matched_actions: 101
action_count: 101
confidence: medium
summary: "All 101 spec actions verified literally in source; transport (TCP:2202) confirmed; every parameter shape and enum matches source documentation exactly. (7 unresolved item(s) noted in Known Gaps.)"
```
## Known Gaps
```yaml
- "no dedicated MXA901 command-strings page exists on pubs.shure.com (404); this source is the refined MXA-series command-string doc. Power on/off commands are not documented. Serial/RS-232 transport not documented."
- "array-group setup is procedural (send SET to reporter, which then"
- "source contains no interlock procedures or power-sequencing warnings."
- "no power on/off (PW) commands documented for MXA901 (microphone is PoE/powered, no discrete power toggle)."
- "serial/RS-232 transport not documented; only Ethernet TCP/IP."
- "firmware baseline for the command set not stated (array-group + status require fw 6.9+; other commands' minimum firmware unspecified)."
- "source is the refined MXA-series command-string doc; MXA901 lacks a dedicated pubs.shure.com command-strings page."
```
---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0