Summary
Control spec for the Shure Microflex Wireless Access Point Transceivers (MXWAPT4 4-channel, MXWAPT8 8-channel). Communication is Ethernet (TCP/IP) to AMX/Crestron/Extron or DSP control systems on port 2202, using ASCII command strings framed with < and >. The MXWAPT relays most commands to its linked wireless microphones (MXW1, MXW2, MXW6, MXW8).
Transport
protocols:
- tcp
addressing:
port: 2202
auth:
type: none # inferred: no login/password/auth procedure in source
Traits
# - powerable (TX_STATUS STANDBY/OFF commands present)
# - queryable (extensive GET/REP queries present)
# - routable (BP_MIC_SELECT INT/EXT routing present)
# - levelable (AUDIO_GAIN, INT_AUDIO_GAIN, METER_RATE present)
Actions
# ====================================================================
# MXWAPT-level commands (sent to MXWAPT IP address)
# ====================================================================
# --- CHAN_NAME ---
- id: get_chan_name
label: Get Channel Name (Primary)
kind: query
command: "< GET x CHAN_NAME >"
params:
- name: x
type: integer
description: Channel number 1-8 (or 0 for all)
- id: set_chan_name
label: Set Channel Name (Primary)
kind: action
command: "< SET x CHAN_NAME {yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy} >"
params:
- name: x
type: integer
description: Channel number 1-8
- name: name
type: string
description: Up to 8 characters (device pads response to 31)
- id: get_chan_name_sec
label: Get Channel Name (Secondary)
kind: query
command: "< GET SEC x CHAN_NAME >"
params:
- name: x
type: integer
description: Channel number 1-8
- id: set_chan_name_sec
label: Set Channel Name (Secondary)
kind: action
command: "< SET SEC x CHAN_NAME {yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy} >"
params:
- name: x
type: integer
description: Channel number 1-8
- name: name
type: string
description: Up to 8 characters
# --- DEVICE_ID ---
- id: get_device_id
label: Get Device ID
kind: query
command: "< GET DEVICE_ID >"
params: []
- id: set_device_id
label: Set Device ID
kind: action
command: "< SET DEVICE_ID {yyyyyyyyyyyyyyyyyyyyyyyyyy} >"
params:
- name: id
type: string
description: 1-8 characters; device pads to 31 in response
# --- UNLINK ---
- id: unlink_mic
label: Unlink Primary Microphone
kind: action
command: "< SET x UNLINK >"
params:
- name: x
type: integer
description: APT channel or charger bay 1-8 (0 not allowed)
- id: unlink_sec_mic
label: Unlink Secondary Microphone
kind: action
command: "< SET SEC x UNLINK >"
params:
- name: x
type: integer
description: APT channel or charger bay 1-8
# --- FLASH (device/channel identify) ---
- id: flash_device_on
label: Device Identify On
kind: action
command: "< SET FLASH ON >"
params: []
- id: flash_device_off
label: Device Identify Off
kind: action
command: "< SET FLASH OFF >"
params: []
- id: flash_sec_device_on
label: Secondary Device Identify On
kind: action
command: "< SET SEC FLASH ON >"
params: []
- id: flash_channel_on
label: Channel Identify On (Primary)
kind: action
command: "< SET x FLASH ON >"
params:
- name: x
type: integer
description: Channel number
- id: flash_sec_channel_on
label: Channel Identify On (Secondary)
kind: action
command: "< SET SEC x FLASH ON >"
params:
- name: x
type: integer
description: Channel number
# --- METER_RATE ---
- id: set_meter_rate
label: Set Meter Rate (Primary)
kind: action
command: "< SET x METER_RATE sssss >"
params:
- name: x
type: integer
description: Channel number
- name: sssss
type: integer
description: "Metering interval in ms: 00000=OFF (default), 00100-65535"
- id: set_meter_rate_sec
label: Set Meter Rate (Secondary)
kind: action
command: "< SET SEC x METER_RATE sssss >"
params:
- name: x
type: integer
description: Channel number
- name: sssss
type: integer
description: "Metering interval in ms: 00000=OFF (default), 00100-65535"
# ====================================================================
# Transmitter-relayed commands (sent to MXWAPT, relayed to mics)
# ====================================================================
# --- TX_AVAILABLE ---
- id: get_tx_available
label: Get TX Available (Primary)
kind: query
command: "< GET x TX_AVAILABLE >"
params:
- name: x
type: integer
description: Channel number
- id: get_tx_available_sec
label: Get TX Available (Secondary)
kind: query
command: "< GET SEC x TX_AVAILABLE >"
params:
- name: x
type: integer
description: Channel number
# --- TX_STATUS ---
- id: get_tx_status
label: Get TX Status (Primary)
kind: query
command: "< GET x TX_STATUS >"
params:
- name: x
type: integer
description: Channel number
- id: set_tx_status_active
label: Set TX Status Active (Primary)
kind: action
command: "< SET x TX_STATUS ACTIVE >"
params:
- name: x
type: integer
description: Channel number
- id: set_tx_status_mute
label: Set TX Status Mute (Primary)
kind: action
command: "< SET x TX_STATUS MUTE >"
params:
- name: x
type: integer
description: Channel number
- id: set_tx_status_standby
label: Set TX Status Standby (Primary)
kind: action
command: "< SET x TX_STATUS STANDBY >"
params:
- name: x
type: integer
description: Channel number
- id: set_tx_status_off
label: Set TX Status Off (Primary)
kind: action
command: "< SET x TX_STATUS OFF >"
params:
- name: x
type: integer
description: Channel number
- id: get_tx_status_sec
label: Get TX Status (Secondary)
kind: query
command: "< GET SEC x TX_STATUS >"
params:
- name: x
type: integer
description: Channel number
- id: set_tx_status_active_sec
label: Set TX Status Active (Secondary)
kind: action
command: "< SET SEC x TX_STATUS ACTIVE >"
params:
- name: x
type: integer
description: Channel number
- id: set_tx_status_mute_sec
label: Set TX Status Mute (Secondary)
kind: action
command: "< SET SEC x TX_STATUS MUTE >"
params:
- name: x
type: integer
description: Channel number
- id: set_tx_status_standby_sec
label: Set TX Status Standby (Secondary)
kind: action
command: "< SET SEC x TX_STATUS STANDBY >"
params:
- name: x
type: integer
description: Channel number
- id: set_tx_status_off_sec
label: Set TX Status Off (Secondary)
kind: action
command: "< SET SEC x TX_STATUS OFF >"
params:
- name: x
type: integer
description: Channel number
# --- AUDIO_GAIN (offset 25: 000-060 = -25 to +35 dB) ---
- id: get_audio_gain
label: Get Audio Gain (Primary)
kind: query
command: "< GET x AUDIO_GAIN >"
params:
- name: x
type: integer
description: Channel number
- id: set_audio_gain
label: Set Audio Gain (Primary)
kind: action
command: "< SET x AUDIO_GAIN {value} >"
params:
- name: x
type: integer
description: Channel number
- name: value
type: integer
description: "Gain offset value 000-060, 3-digit zero-padded. Actual dB = value - 25."
- id: inc_audio_gain
label: Increment Audio Gain (Primary)
kind: action
command: "< SET x AUDIO_GAIN INC {n} >"
params:
- name: x
type: integer
description: Channel number
- name: n
type: integer
description: Increment in dB
- id: dec_audio_gain
label: Decrement Audio Gain (Primary)
kind: action
command: "< SET x AUDIO_GAIN DEC {n} >"
params:
- name: x
type: integer
description: Channel number
- name: n
type: integer
description: Decrement in dB
- id: get_audio_gain_sec
label: Get Audio Gain (Secondary)
kind: query
command: "< GET SEC x AUDIO_GAIN >"
params:
- name: x
type: integer
description: Channel number
- id: set_audio_gain_sec
label: Set Audio Gain (Secondary)
kind: action
command: "< SET SEC x AUDIO_GAIN {value} >"
params:
- name: x
type: integer
description: Channel number
- name: value
type: integer
description: "Gain offset value 000-060, 3-digit zero-padded."
- id: inc_audio_gain_sec
label: Increment Audio Gain (Secondary)
kind: action
command: "< SET SEC x AUDIO_GAIN INC {n} >"
params:
- name: x
type: integer
description: Channel number
- name: n
type: integer
description: Increment in dB
- id: dec_audio_gain_sec
label: Decrement Audio Gain (Secondary)
kind: action
command: "< SET SEC x AUDIO_GAIN DEC {n} >"
params:
- name: x
type: integer
description: Channel number
- name: n
type: integer
description: Decrement in dB
# --- INT_AUDIO_GAIN (offset 25: 000-040 = -25 to +15 dB) ---
- id: get_int_audio_gain
label: Get Internal Mic Gain (Primary)
kind: query
command: "< GET x INT_AUDIO_GAIN >"
params:
- name: x
type: integer
description: Channel number
- id: set_int_audio_gain
label: Set Internal Mic Gain (Primary)
kind: action
command: "< SET x INT_AUDIO_GAIN {value} >"
params:
- name: x
type: integer
description: Channel number
- name: value
type: integer
description: "Gain offset value 000-040, 3-digit zero-padded."
- id: inc_int_audio_gain
label: Increment Internal Mic Gain (Primary)
kind: action
command: "< SET x INT_AUDIO_GAIN INC {n} >"
params:
- name: x
type: integer
description: Channel number
- name: n
type: integer
description: Increment in dB
- id: dec_int_audio_gain
label: Decrement Internal Mic Gain (Primary)
kind: action
command: "< SET x INT_AUDIO_GAIN DEC {n} >"
params:
- name: x
type: integer
description: Channel number
- name: n
type: integer
description: Decrement in dB
- id: get_int_audio_gain_sec
label: Get Internal Mic Gain (Secondary)
kind: query
command: "< GET SEC x INT_AUDIO_GAIN >"
params:
- name: x
type: integer
description: Channel number
- id: set_int_audio_gain_sec
label: Set Internal Mic Gain (Secondary)
kind: action
command: "< SET SEC x INT_AUDIO_GAIN {value} >"
params:
- name: x
type: integer
description: Channel number
- name: value
type: integer
description: "Gain offset value 000-040, 3-digit zero-padded."
- id: inc_int_audio_gain_sec
label: Increment Internal Mic Gain (Secondary)
kind: action
command: "< SET SEC x INT_AUDIO_GAIN INC {n} >"
params:
- name: x
type: integer
description: Channel number
- name: n
type: integer
description: Increment in dB
- id: dec_int_audio_gain_sec
label: Decrement Internal Mic Gain (Secondary)
kind: action
command: "< SET SEC x INT_AUDIO_GAIN DEC {n} >"
params:
- name: x
type: integer
description: Channel number
- name: n
type: integer
description: Decrement in dB
# --- BUTTON_STS ---
- id: get_button_sts
label: Get Button Status (Primary)
kind: query
command: "< GET x BUTTON_STS >"
params:
- name: x
type: integer
description: Channel number
- id: get_button_sts_sec
label: Get Button Status (Secondary)
kind: query
command: "< GET SEC x BUTTON_STS >"
params:
- name: x
type: integer
description: Channel number
# --- LED_STATUS (rr,gg each: ON/OF/ST/FL/PU/NC) ---
- id: get_led_status
label: Get LED Status (Primary)
kind: query
command: "< GET x LED_STATUS >"
params:
- name: x
type: integer
description: Channel number
- id: set_led_status
label: Set LED Status (Primary)
kind: action
command: "< SET x LED_STATUS {rr} {gg} >"
params:
- name: x
type: integer
description: Channel number
- name: rr
type: string
description: "Red LED: ON, OF, ST, FL, PU, NC"
- name: gg
type: string
description: "Green LED: ON, OF, ST, FL, PU, NC"
- id: get_led_status_sec
label: Get LED Status (Secondary)
kind: query
command: "< GET SEC x LED_STATUS >"
params:
- name: x
type: integer
description: Channel number
- id: set_led_status_sec
label: Set LED Status (Secondary)
kind: action
command: "< SET SEC x LED_STATUS {rr} {gg} >"
params:
- name: x
type: integer
description: Channel number
- name: rr
type: string
description: "Red LED: ON, OF, ST, FL, PU, NC"
- name: gg
type: string
description: "Green LED: ON, OF, ST, FL, PU, NC"
# --- TX_TYPE ---
- id: get_tx_type
label: Get TX Type (Primary)
kind: query
command: "< GET x TX_TYPE >"
params:
- name: x
type: integer
description: Channel number
- id: get_tx_type_sec
label: Get TX Type (Secondary)
kind: query
command: "< GET SEC x TX_TYPE >"
params:
- name: x
type: integer
description: Channel number
# --- BP_MIC_SELECT ---
- id: get_bp_mic_select
label: Get Bodypack Mic Select (Primary)
kind: query
command: "< GET x BP_MIC_SELECT >"
params:
- name: x
type: integer
description: Channel number
- id: get_bp_mic_select_sec
label: Get Bodypack Mic Select (Secondary)
kind: query
command: "< GET SEC x BP_MIC_SELECT >"
params:
- name: x
type: integer
description: Channel number
# --- BATT_CHARGE ---
- id: get_batt_charge
label: Get Battery Charge (Primary)
kind: query
command: "< GET x BATT_CHARGE >"
params:
- name: x
type: integer
description: Channel number
- id: get_batt_charge_sec
label: Get Battery Charge (Secondary)
kind: query
command: "< GET SEC x BATT_CHARGE >"
params:
- name: x
type: integer
description: Channel number
# --- BATT_RUN_TIME ---
- id: get_batt_run_time
label: Get Battery Run Time (Primary)
kind: query
command: "< GET x BATT_RUN_TIME >"
params:
- name: x
type: integer
description: Channel number
- id: get_batt_run_time_sec
label: Get Battery Run Time (Secondary)
kind: query
command: "< GET SEC x BATT_RUN_TIME >"
params:
- name: x
type: integer
description: Channel number
# --- BATT_HEALTH ---
- id: get_batt_health
label: Get Battery Health (Primary)
kind: query
command: "< GET x BATT_HEALTH >"
params:
- name: x
type: integer
description: Channel number
- id: get_batt_health_sec
label: Get Battery Health (Secondary)
kind: query
command: "< GET SEC x BATT_HEALTH >"
params:
- name: x
type: integer
description: Channel number
# --- BATT_TIME_TO_FULL ---
- id: get_batt_time_to_full
label: Get Battery Time To Full (Primary)
kind: query
command: "< GET x BATT_TIME_TO_FULL >"
params:
- name: x
type: integer
description: Channel number
- id: get_batt_time_to_full_sec
label: Get Battery Time To Full (Secondary)
kind: query
command: "< GET SEC x BATT_TIME_TO_FULL >"
params:
- name: x
type: integer
description: Channel number
# --- TX_DEVICE_ID (transmitter side, sent to MXWAPT) ---
- id: get_tx_device_id
label: Get TX Device ID (Primary)
kind: query
command: "< GET x TX_DEVICE_ID >"
params:
- name: x
type: integer
description: Channel number (0 = all mics)
- id: set_tx_device_id
label: Set TX Device ID (Primary)
kind: action
command: "< SET x TX_DEVICE_ID {yyyyyyyyyyyy} >"
params:
- name: x
type: integer
description: Channel number
- name: id
type: string
description: "1-12 characters from A-Z, a-z, 0-9, '-'"
- id: get_tx_device_id_pri
label: Get TX Device ID (Primary, explicit PRI)
kind: query
command: "< GET PRI x TX_DEVICE_ID >"
params:
- name: x
type: integer
description: Channel number
- id: set_tx_device_id_pri
label: Set TX Device ID (Primary, explicit PRI)
kind: action
command: "< SET PRI x TX_DEVICE_ID {yyyyyyyyyyyy} >"
params:
- name: x
type: integer
description: Channel number
- name: id
type: string
description: "1-12 characters from A-Z, a-z, 0-9, '-'"
- id: get_tx_device_id_sec
label: Get TX Device ID (Secondary)
kind: query
command: "< GET SEC x TX_DEVICE_ID >"
params:
- name: x
type: integer
description: Channel number
- id: set_tx_device_id_sec
label: Set TX Device ID (Secondary)
kind: action
command: "< SET SEC x TX_DEVICE_ID {yyyyyyyyyyyy} >"
params:
- name: x
type: integer
description: Channel number
- name: id
type: string
description: "1-12 characters from A-Z, a-z, 0-9, '-'"
# ====================================================================
# MXWNCS (charger-side) commands - sent to MXWNCS IP address
# Included for reference; MXWAPT does not relay these
# ====================================================================
# --- REMOTE_LINK (requires MXWAPT/NCS firmware v4.0+) ---
- id: remote_link_primary
label: Remote Link Primary Microphone
kind: action
command: "< SET PRI x REMOTE_LINK y {zzz.zzz.zzz.zzz} >"
params:
- name: x
type: integer
description: Charger bay number
- name: y
type: integer
description: MXWAPT channel number
- name: ip
type: string
description: IP address of target MXWAPT
- id: remote_link_secondary
label: Remote Link Secondary Microphone
kind: action
command: "< SET SEC x REMOTE_LINK y {zzz.zzz.zzz.zzz} >"
params:
- name: x
type: integer
description: Charger bay number
- name: y
type: integer
description: MXWAPT channel number
- name: ip
type: string
description: IP address of target MXWAPT
# --- TX_DEVICE_ID (charger-side variant) ---
- id: ncs_get_tx_device_id
label: Get TX Device ID (NCS)
kind: query
command: "< GET x TX_DEVICE_ID >"
params:
- name: x
type: integer
description: Charger bay number (0 = all)
- id: ncs_set_tx_device_id
label: Set TX Device ID (NCS)
kind: action
command: "< SET x TX_DEVICE_ID {yyyyyyyyyyyy} >"
params:
- name: x
type: integer
description: Charger bay number
- name: id
type: string
description: "1-12 characters from A-Z, a-z, 0-9, '-'"
Feedbacks
# Discrete / enumerable state values
- id: tx_available
type: enum
values: [YES, NO]
- id: tx_status
type: enum
values: [ACTIVE, MUTE, STANDBY, ON_CHARGER, OFF, UNKNOWN]
- id: button_sts
type: enum
values: [ON, OFF]
- id: tx_type
type: enum
values: [MXW1, MXW2, MXW6, MXW8, UNKNOWN]
- id: bp_mic_select
type: enum
values: [INT, EXT, AUTO, ERR, UNKNOWN]
- id: led_color_value
type: enum
values: [ON, OF, ST, FL, PU, NC]
description: "Per-color LED mode (red or green); ST=Strobe, FL=Flash, PU=Pulse, NC=No Change"
- id: unlink_result
type: enum
values: [SUCCESS, ERROR]
- id: remote_link_result
type: enum
values: [SUCCESS, ERR]
- id: generic_error
type: enum
values: [ERR]
description: "< REP ERR > when command cannot be implemented (typo or unknown command)"
Variables
- id: chan_name
type: string
description: Channel name, padded to 31 characters; SET accepts up to 8
- id: device_id
type: string
description: Device ID, padded to 31 characters; SET accepts 1-8
- id: tx_device_id
type: string
description: Transmitter Device ID, 12 characters padded with spaces
- id: audio_gain
type: integer
description: "Audio gain offset 000-060 (3-digit). Actual dB = value - 25. Range -25 to +35 dB."
- id: int_audio_gain
type: integer
description: "Internal mic gain offset 000-040 (3-digit). Actual dB = value - 25. Range -25 to +15 dB."
- id: meter_rate
type: integer
description: "Metering interval in ms. 00000=OFF, 00100-65535"
- id: batt_charge
type: integer
description: "Battery charge percent 000-100, or 255=off"
- id: batt_run_time
type: integer
description: "Minutes until TX turns off. Special values: 65532=wall-wart powered, 65533=on charger, 65534=calculating, 65535=off"
- id: batt_health
type: integer
description: "Battery health percent 000-100, or 255=Unknown"
- id: batt_time_to_full
type: integer
description: "Minutes until full charge. Special values: 65535=off, 65534=on charger & full, 65533=on and not on charger"
Events
# SAMPLE messages from the device (metering)
- id: sample_meter
description: "Periodic RF/audio level sample when METER_RATE > 0"
payload_template: "< SAMPLE x aaa eee >"
params:
- name: x
type: integer
description: Channel number (or SEC x for secondary)
- name: aaa
type: integer
description: RF level received
- name: eee
type: integer
description: Audio level
# Unsolicited REPORT on parameter change (per source, the device sends a REP
# whenever most non-metered properties change; receivers should not poll these)
- id: rep_on_change
description: "Device sends < REP ... > whenever a tracked property changes"
payload_template: "< REP {channel-or-SEC} {PROPERTY} {value} >"
Macros
# UNRESOLVED: no multi-step macro sequences are documented in source;
# operators can compose push-to-talk and latching-mute flows using the
# LED_STATUS + BUTTON_STS examples in the "Echo Cancellation" section.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source does not document safety warnings, interlocks, or
# power-on sequencing requirements for the control path.
Notes
- All messages are ASCII, framed with
<and>delimiters. - The
xchannel placeholder is ASCII 0-8; 0 = all channels, 1-8 = individual channels (capacity matches the APT: MXWAPT4 supports 1-4, MXWAPT8 supports 1-8). SECprefix selects the secondary microphone on chargers that dock two; primary is the default and can also be written asPRI.- When using External Mute (set in MXWAPT web app), the device will not report
MUTE; muting is performed by the connected mixer. The control system drivesLED_STATUSbased onBUTTON_STSreports (see "Echo Cancellation" examples in source). - Best practice: monitor
TX_AVAILABLEand re-queryTX_STATUS,AUDIO_GAIN,BATT_RUN_TIME,BATT_CHARGE,BATT_HEALTH,BUTTON_STS,LED_STATUS,TX_TYPEon the NO→YES transition. - AUDIO_GAIN and INT_AUDIO_GAIN use a fixed 25 offset between encoded value and actual dB.
REMOTE_LINKrequires firmware v4.0 or greater (charger-side only).- Connection is raw TCP on port 2202; set the AMX/Crestron program to "Client" mode. No authentication is described.
- Special sentinel values 255/254/253/252 (3-digit) and 65535/65534/65533/65532 (5-digit) indicate the target device is unavailable.
- Additional MXWNCS commands for querying unlinked microphones on charge exist but are gated behind support@shure.com contact in the source.
Spec emitted. Wrapped JSON for ingest:Spec written. To ingest:
```json
{
"markdown": "<paste the markdown above>",
}
Provenance
source_domains:
- pubs.shure.com
- shure.com
- content-files.shure.com
source_urls:
- https://pubs.shure.com/command-strings/MXW/en-US
- https://pubs.shure.com/command-strings/MXA310/en-US
- https://www.shure.com/en-US/docs/commandstrings/MXW
- https://content-files.shure.com/Pubs2/files/259490.pdf
- https://www.shure.com/en-US/docs/commandstrings
retrieved_at: 2026-06-15T23:30:12.409Z
last_checked_at: 2026-06-16T07:17:47.455Z
Verification Summary
verdict: verified
checked_at: 2026-06-16T07:17:47.455Z
matched_actions: 71
action_count: 71
confidence: medium
summary: "All 71 spec actions match source commands literally; transport (port 2202, TCP, no auth) verified; complete bidirectional coverage. (6 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "MXWANI, MXWNCS charger-side commands are documented separately; this spec covers MXWAPT and transmitter-relayed commands only."
- "no multi-step macro sequences are documented in source;"
- "source does not document safety warnings, interlocks, or"
- "firmware version compatibility not stated for general MXWAPT command set; only REMOTE_LINK notes v4.0+."
- "transport framing (delimiter handling, line endings, message ordering, retransmit on collision) not stated beyond \"<\" and \">\" framing."
- "no port authentication, encryption, or TLS option described in source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0