Summary

The McIntosh MSA5500 is an integrated stereo amplifier with RS-232C serial and TCP/IP control. Commands are ASCII-encoded in the format (XXX parameter) with parenthesized prefix/suffix. The spec covers power, volume, mute, input selection, tone controls, balance, and various trim functions.

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 57012
serial:
  baud_rate: null  # UNRESOLVED: baud rate not stated in source
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

traits:
  - powerable    # inferred: PWR on/off commands present
  - queryable    # inferred: QRY and status query commands present
  - routable     # inferred: INP input selection commands present
  - levelable    # inferred: VOL, TBA, TTB, TTT, TIN level commands present

Actions

actions:
  - id: power_on
    label: Power On
    kind: action
    command: "(PWR 1)"
    params: []

  - id: power_off
    label: Power Off
    kind: action
    command: "(PWR 0)"
    params: []

  - id: volume_up
    label: Volume Up
    kind: action
    command: "(VOL U)"
    params: []
    description: Increase volume by 1%

  - id: volume_down
    label: Volume Down
    kind: action
    command: "(VOL D)"
    params: []
    description: Decrease volume by 1%

  - id: volume_set
    label: Set Volume
    kind: action
    command: "(VOL {level})"
    params:
      - name: level
        type: integer
        min: 0
        max: 100
        description: Volume level as percentage (0-100)

  - id: mute_on
    label: Mute On
    kind: action
    command: "(MUT 1)"
    params: []

  - id: mute_off
    label: Mute Off
    kind: action
    command: "(MUT 0)"
    params: []

  - id: input_next
    label: Next Input
    kind: action
    command: "(INP U)"
    params: []

  - id: input_previous
    label: Previous Input
    kind: action
    command: "(INP D)"
    params: []

  - id: input_select
    label: Select Input
    kind: action
    command: "(INP {input})"
    params:
      - name: input
        type: integer
        min: 1
        max: 15
        description: >
          1=BALANCED, 2=UNBAL 1, 3=UNBAL 2, 4=UNBAL 3, 5=UNBAL 4,
          6=MM PHONO, 7=COAX 1, 8=COAX 2, 9=OPT 1, 10=OPT 2,
          11=USB, 12=MCT, 13=HDMI(ARC), 14=NETWORK, 15=BLUETOOTH

  - id: status_enable_on
    label: Status Enable On
    kind: action
    command: "(STA 1)"
    params: []
    description: Enable automatic status update transmissions

  - id: status_enable_off
    label: Status Enable Off
    kind: action
    command: "(STA 0)"
    params: []

  - id: balance_left
    label: Balance Left
    kind: action
    command: "(TBA L)"
    params: []
    description: Shift balance left by 1 dB

  - id: balance_right
    label: Balance Right
    kind: action
    command: "(TBA R)"
    params: []
    description: Shift balance right by 1 dB

  - id: balance_set
    label: Set Balance
    kind: action
    command: "(TBA {balance})"
    params:
      - name: balance
        type: integer
        min: -50
        max: 50
        description: Balance level (-50=full left, +50=full right)

  - id: input_trim_up
    label: Input Trim Up
    kind: action
    command: "(TIN U)"
    params: []
    description: Increase input trim by 0.5 dB

  - id: input_trim_down
    label: Input Trim Down
    kind: action
    command: "(TIN D)"
    params: []
    description: Decrease input trim by 0.5 dB

  - id: input_trim_set
    label: Set Input Trim
    kind: action
    command: "(TIN {level})"
    params:
      - name: level
        type: integer
        min: -12
        max: 12
        description: >
          Trim level in half-dB steps (-12 = -6.0 dB, -11 = -5.5 dB, etc.)

  - id: tone_control_on
    label: Tone Control On
    kind: action
    command: "(TTN 1)"
    params: []

  - id: tone_control_off
    label: Tone Control Off
    kind: action
    command: "(TTN 0)"
    params: []

  - id: tone_bass_up
    label: Bass Up
    kind: action
    command: "(TTB U)"
    params: []

  - id: tone_bass_down
    label: Bass Down
    kind: action
    command: "(TTB D)"
    params: []

  - id: tone_bass_set
    label: Set Bass
    kind: action
    command: "(TTB {level})"
    params:
      - name: level
        type: integer
        min: -12
        max: 12
        description: Bass level in dB (-12 to +12)

  - id: tone_treble_up
    label: Treble Up
    kind: action
    command: "(TTT U)"
    params: []

  - id: tone_treble_down
    label: Treble Down
    kind: action
    command: "(TTT D)"
    params: []

  - id: tone_treble_set
    label: Set Treble
    kind: action
    command: "(TTT {level})"
    params:
      - name: level
        type: integer
        min: -12
        max: 12
        description: Treble level in dB (-12 to +12)

  - id: mono_on
    label: Mono On
    kind: action
    command: "(TMO 1)"
    params: []

  - id: mono_off
    label: Mono Off
    kind: action
    command: "(TMO 0)"
    params: []

  - id: meter_lights_on
    label: Meter Lights On
    kind: action
    command: "(TML 1)"
    params: []

  - id: meter_lights_off
    label: Meter Lights Off
    kind: action
    command: "(TML 0)"
    params: []

  - id: display_brightness_set
    label: Set Display Brightness
    kind: action
    command: "(TDB {level})"
    params:
      - name: level
        type: integer
        enum: [1, 2, 3, 4]
        description: "1=25%, 2=50%, 3=75%, 4=100%"

  - id: hxd_on
    label: HXD On
    kind: action
    command: "(THH 1)"
    params: []
    description: Returns error if headphones are not plugged in

  - id: hxd_off
    label: HXD Off
    kind: action
    command: "(THH 0)"
    params: []
    description: Returns error if headphones are not plugged in

Feedbacks

feedbacks:
  - id: power_state
    type: enum
    values: ["1", "0"]
    query_command: "(PWR)"
    description: "1=On, 0=Off"

  - id: volume_level
    type: integer
    query_command: "(VOL)"
    description: Current volume level (0-100)

  - id: mute_state
    type: enum
    values: ["1", "0"]
    query_command: "(MUT)"
    description: "1=Muted, 0=Unmuted"

  - id: headphone_status
    type: enum
    values: ["1", "0"]
    query_command: "(HPS)"
    description: "0=Unplugged, 1=Plugged"

  - id: input_selected
    type: integer
    query_command: "(INP)"
    description: Current input number (1-15)

  - id: status_enable_state
    type: enum
    values: ["1", "0"]
    query_command: "(STA)"
    description: "1=Enabled, 0=Disabled"

  - id: balance_level
    type: integer
    query_command: "(TBA)"
    description: Balance (-50 to +50)

  - id: input_trim_level
    type: integer
    query_command: "(TIN)"
    description: Input trim (-12 to +12, half-dB steps)

  - id: tone_control_state
    type: enum
    values: ["1", "0"]
    query_command: "(TTN)"
    description: "1=On, 0=Off"

  - id: bass_level
    type: integer
    query_command: "(TTB)"
    description: Bass level (-12 to +12 dB)

  - id: treble_level
    type: integer
    query_command: "(TTT)"
    description: Treble level (-12 to +12 dB)

  - id: mono_state
    type: enum
    values: ["1", "0"]
    query_command: "(TMO)"
    description: "1=Mono, 0=Stereo"

  - id: meter_lights_state
    type: enum
    values: ["1", "0"]
    query_command: "(TML)"
    description: "1=On, 0=Off"

  - id: display_brightness
    type: integer
    query_command: "(TDB)"
    description: "1=25%, 2=50%, 3=75%, 4=100%"

  - id: hxd_state
    type: enum
    values: ["1", "0"]
    query_command: "(THH)"
    description: "1=On, 0=Off (error if headphones not plugged)"

  - id: full_query
    type: string
    query_command: "(QRY)"
    description: Returns full device status

Variables

# No continuous variables beyond what is covered by set-level actions and feedbacks.

Events

events:
  - id: startup_info
    description: >
      On AC connection, the unit sends model number, serial number,
      system firmware version, and DA firmware version:
      >> (MSA5500)
      >> (Serial Number: ALX####)
      >> (FW Version: #.#.#)
      >> (DS1 Version: v#.##)
    trigger: First AC connection / power-up

  - id: command_ack
    description: >
      The unit echoes the received command as acknowledgement after processing.
    trigger: After processing a valid command

  - id: status_update
    description: >
      When Status Enable (STA) is on, the unit automatically transmits state
      updates when its state changes. Allows control system to maintain current state.
    trigger: Internal state change (requires STA enabled)

Macros

# UNRESOLVED: no multi-step sequences described in source

Safety

confirmation_required_for: []
interlocks:
  - description: >
      When power is off, all non-PWR RS232 commands return an Invalid Command error.
  - description: >
      HXD commands (THH) return Invalid Command error if headphones are not plugged in.
  - description: >
      Selecting a disabled input (Off in Setup Menu) returns an Invalid Parameter error.
# UNRESOLVED: no power-on sequencing requirements or safety warnings stated in source

Notes

  • Commands use ASCII format: (XXX parameter) — prefix (, 3-char name, space-separated params, suffix ).
  • Carriage return \x0D\x0A is optional, used for terminal readability.
  • Error responses: (ERROR – Unknown Error), (ERROR – Invalid Command), (ERROR – Invalid Parameter), (ERROR – Invalid Input), (ERROR – In Passthru).
  • RS-232 uses a 3.5mm TRS connector (Tip=TXD, Ring=RXD, Sleeve=Ground). A DB9 female to 3.5mm adapter cable may be used.
  • Input trim values are in half-dB steps (e.g. -12 = -6.0 dB, -11 = -5.5 dB).

Provenance

source_domains:
  - mcintoshlabs.com
source_urls:
  - https://www.mcintoshlabs.com/-/media/Files/mcintoshlabs/DocumentMaster/us/MSA5500-External-Control-Rev-A.pdf
retrieved_at: 2026-04-30T04:25:00.445Z
last_checked_at: 2026-06-02T22:09:37.566Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T22:09:37.566Z
matched_actions: 49
action_count: 49
confidence: medium
summary: "All 49 spec actions traced to source (dip-safe re-verify). (9 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "baud rate not stated in source"
- "no multi-step sequences described in source"
- "no power-on sequencing requirements or safety warnings stated in source"
- "RS-232 baud rate not stated in source"
- "firmware version compatibility not stated in source"
- "protocol version not stated in source"
- "maximum command rate / throttling not stated in source"
- "connection keep-alive or timeout behavior not stated in source"
- "passthru mode details not documented beyond error message"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0