Summary

The McIntosh C2800 is a vacuum tube preamplifier with RS-232 serial and TCP/IP control interfaces. Commands are ASCII-formatted with parenthetical delimiters (XXX param). The unit echoes commands as acknowledgement, transmits unsolicited status updates on state changes, and reports model/serial/firmware on AC power-up. This spec also covers the closely related C55 solid-state preamplifier which shares the same command set (with minor model-specific exclusions noted inline).

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 84
serial:
  baud_rate: 115200
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
  # baud_rate note: adjustable in Setup Menu to 9600, 19200, 38400, 57600, or 115200 (default)
auth:
  type: none  # inferred: no auth procedure in source

Traits

traits:
  - powerable    # PWR command
  - queryable    # QRY command, STA status enable
  - levelable    # VOL, TBA, TIN, OTB, TTB, TTT volume/trim/balance
  - routable     # INP input selection

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: []

  - id: volume_down
    label: Volume Down
    kind: action
    command: "(VOL D)"
    params: []

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

  - 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: output1_on
    label: Output 1 On
    kind: action
    command: "(OP1 1)"
    params: []

  - id: output1_off
    label: Output 1 Off
    kind: action
    command: "(OP1 0)"
    params: []

  - id: output2_on
    label: Output 2 On
    kind: action
    command: "(OP2 1)"
    params: []

  - id: output2_off
    label: Output 2 Off
    kind: action
    command: "(OP2 0)"
    params: []

  - id: input_select
    label: Select Input
    kind: action
    command: "(INP {input})"
    params:
      - name: input
        type: enum
        values:
          - U
          - D
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          - 8
          - 9
          - 10
          - 11
          - 12
          - 13
          - 14
          - 15
          - 16
        description: "U=Next, D=Previous, 1=BAL1, 2=BAL2, 3=BAL3, 4=UNBAL1, 5=UNBAL2, 6=UNBAL3, 7=UNBAL4, 8=PHONO1, 9=PHONO2, 10=COAX1, 11=COAX2, 12=OPT1, 13=OPT2, 14=USB, 15=MCT, 16=HDMI(ARC)"

  - id: balance_left
    label: Balance Left
    kind: action
    command: "(TBA L)"
    params: []

  - id: balance_right
    label: Balance Right
    kind: action
    command: "(TBA R)"
    params: []

  - id: balance_set
    label: Set Balance
    kind: action
    command: "(TBA {balance})"
    params:
      - name: balance
        type: integer
        min: -50
        max: 50
        description: "Negative=Left, Positive=Right"

  - id: input_trim_up
    label: Input Trim Up
    kind: action
    command: "(TIN U)"
    params: []

  - id: input_trim_down
    label: Input Trim Down
    kind: action
    command: "(TIN D)"
    params: []

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

  - 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: processor_loop_on
    label: Processor Loop On
    kind: action
    command: "(TPL 1)"
    params: []

  - id: processor_loop_off
    label: Processor Loop Off
    kind: action
    command: "(TPL 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: enum
        values:
          - 1
          - 2
          - 3
          - 4
        description: "1=25%, 2=50%, 3=75%, 4=100%"

  - id: phono_capacitance_set
    label: Set Phono Capacitance
    kind: action
    command: "(TPC {index})"
    params:
      - name: index
        type: enum
        values:
          - U
          - D
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
          - 8
        description: "U/D=next/prev; 1=50pF, 2=100pF, 3=150pF, 4=200pF, 5=250pF, 6=300pF, 7=350pF, 8=400pF"

  - id: phono_resistance_set
    label: Set Phono Resistance
    kind: action
    command: "(TPR {index})"
    params:
      - name: index
        type: enum
        values:
          - U
          - D
          - 1
          - 2
          - 3
          - 4
          - 5
          - 6
          - 7
        description: "U/D=next/prev; 1=25Ω, 2=50Ω, 3=100Ω, 4=200Ω, 5=400Ω, 6=1kΩ, 7=47kΩ"

  - id: phono_gain_set
    label: Set Phono Gain
    kind: action
    command: "(TPG {index})"
    params:
      - name: index
        type: enum
        values:
          - U
          - D
          - 1
          - 2
          - 3
          - 4
          - 5
        description: "U/D=next/prev; 1=40dB, 2=46dB, 3=52dB, 4=58dB, 5=64dB"

  - id: hxd_on
    label: HXD On
    kind: action
    command: "(THH 1)"
    params: []

  - id: hxd_off
    label: HXD Off
    kind: action
    command: "(THH 0)"
    params: []

  - id: output_switch_mode
    label: Set Output Switch Mode
    kind: action
    command: "(OSM {mode})"
    params:
      - name: mode
        type: enum
        values:
          - 0
          - 1
          - 2
          - 3
        description: "0=Switched, 1=Unswitched, 2=Bi-Amped (Fixed), 3=Bi-Amped (Split). Output 1 only."

  - id: output1_trim_set
    label: Set Output 1 Trim
    kind: action
    command: "(OTR {level})"
    params:
      - name: level
        type: integer
        min: -12
        max: 6
        description: "Half-dB indexed (e.g. -12=-6.0dB)"

  - id: crossover_set
    label: Set Crossover Frequency
    kind: action
    command: "(OCF {index})"
    params:
      - name: index
        type: enum
        values:
          - 1
          - 2
          - 3
        description: "1=150Hz, 2=350Hz, 3=900Hz. Bi-Amped (Fixed) only."

  - id: high_pass_set
    label: Set High Pass Filter
    kind: action
    command: "(OHP {index})"
    params:
      - name: index
        type: enum
        values:
          - 0
          - 1
          - 2
          - 3
        description: "0=Bypass, 1=50Hz, 2=100Hz, 3=250Hz. Bi-Amped (Split) only."

  - id: low_pass_set
    label: Set Low Pass Filter
    kind: action
    command: "(OLP {index})"
    params:
      - name: index
        type: enum
        values:
          - 1
          - 2
          - 3
        description: "1=600Hz, 2=1200Hz, 3=3000Hz. Bi-Amped (Split) only."

  - id: dual_mono_on
    label: Dual Mono On
    kind: action
    command: "(ODM 1)"
    params: []

  - id: dual_mono_off
    label: Dual Mono Off
    kind: action
    command: "(ODM 0)"
    params: []

  - id: status_enable_on
    label: Status Enable On
    kind: action
    command: "(STA 1)"
    params: []

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

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

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

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

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

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

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

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

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

  - id: tube_lights_on
    label: Tube Lights On (C2800)
    kind: action
    command: "(TTL 1)"
    params: []

  - id: tube_lights_off
    label: Tube Lights Off (C2800)
    kind: action
    command: "(TTL 0)"
    params: []

Feedbacks

feedbacks:
  - id: power_state
    label: Power State
    query: "(PWR)"
    type: enum
    values:
      - "1"
      - "0"

  - id: volume_level
    label: Volume Level
    query: "(VOL)"
    type: integer
    min: 0
    max: 100

  - id: mute_state
    label: Mute State
    query: "(MUT)"
    type: enum
    values:
      - "1"
      - "0"

  - id: output1_state
    label: Output 1 State
    query: "(OP1)"
    type: enum
    values:
      - "1"
      - "0"

  - id: output2_state
    label: Output 2 State
    query: "(OP2)"
    type: enum
    values:
      - "1"
      - "0"

  - id: headphone_status
    label: Headphone Status
    query: "(HPS)"
    type: enum
    values:
      - "0"
      - "1"
      - "2"
    description: "0=Unplugged, 1=Plugged, 2=No Headphone Jack (China)"

  - id: input_selected
    label: Selected Input
    query: "(INP)"
    type: integer

  - id: balance
    label: Balance
    query: "(TBA)"
    type: integer
    min: -50
    max: 50

  - id: input_trim
    label: Input Trim Level
    query: "(TIN)"
    type: integer
    min: -12
    max: 12

  - id: mono_state
    label: Mono/Stereo State
    query: "(TMO)"
    type: enum
    values:
      - "1"
      - "0"

  - id: processor_loop_state
    label: Processor Loop State
    query: "(TPL)"
    type: enum
    values:
      - "1"
      - "0"

  - id: meter_lights_state
    label: Meter Lights State
    query: "(TML)"
    type: enum
    values:
      - "1"
      - "0"

  - id: display_brightness
    label: Display Brightness
    query: "(TDB)"
    type: enum
    values:
      - "1"
      - "2"
      - "3"
      - "4"

  - id: phono_capacitance
    label: Phono Capacitance
    query: "(TPC)"
    type: integer

  - id: phono_resistance
    label: Phono Resistance
    query: "(TPR)"
    type: integer

  - id: phono_gain
    label: Phono Gain
    query: "(TPG)"
    type: integer

  - id: hxd_state
    label: HXD State
    query: "(THH)"
    type: enum
    values:
      - "1"
      - "0"

  - id: output_switch_mode
    label: Output Switch Mode
    query: "(OSM)"
    type: enum
    values:
      - "0"
      - "1"
      - "2"
      - "3"

  - id: output1_trim
    label: Output 1 Trim Level
    query: "(OTR)"
    type: integer

  - id: crossover_frequency
    label: Crossover Frequency
    query: "(OCF)"
    type: enum
    values:
      - "1"
      - "2"
      - "3"

  - id: high_pass
    label: High Pass Filter
    query: "(OHP)"
    type: enum
    values:
      - "0"
      - "1"
      - "2"
      - "3"

  - id: low_pass
    label: Low Pass Filter
    query: "(OLP)"
    type: enum
    values:
      - "1"
      - "2"
      - "3"

  - id: dual_mono_state
    label: Dual Mono State
    query: "(ODM)"
    type: enum
    values:
      - "1"
      - "0"

  - id: full_query
    label: Full Status Query
    query: "(QRY)"
    type: string
    description: Returns full unit status

  - id: status_enable_state
    label: Status Enable State
    query: "(STA)"
    type: enum
    values:
      - "1"
      - "0"

  - id: digital_audio_metadata
    label: Digital Audio Metadata
    query: "(DAM)"
    type: string
    description: Returns sample rate and/or audio format for digital inputs

  # C2800-exclusive
  - id: tone_control_state
    label: Tone Control State (C2800)
    query: "(TTN)"
    type: enum
    values:
      - "1"
      - "0"

  - id: tone_bass
    label: Tone Bass Level (C2800)
    query: "(TTB)"
    type: integer
    min: -12
    max: 12

  - id: tone_treble
    label: Tone Treble Level (C2800)
    query: "(TTT)"
    type: integer
    min: -12
    max: 12

  - id: tube_lights_state
    label: Tube Lights State (C2800)
    query: "(TTL)"
    type: enum
    values:
      - "1"
      - "0"

Variables

variables:
  - id: volume
    label: Volume
    type: integer
    min: 0
    max: 100
    unit: "%"

  - id: balance
    label: Balance
    type: integer
    min: -50
    max: 50
    unit: "dB"

  - id: input_trim
    label: Input Trim
    type: integer
    min: -12
    max: 12
    description: "Half-dB indexed steps"

  - id: display_brightness
    label: Display Brightness
    type: enum
    values:
      - "25%"
      - "50%"
      - "75%"
      - "100%"

  - id: output1_trim
    label: Output 1 Trim
    type: integer
    min: -12
    max: 6
    description: "Half-dB indexed steps"

Events

events:
  - id: startup_info
    label: Startup Information
    description: "On AC power-up, unit sends model name, serial number, system FW version, and DA FW version."
    format: "(C2800)\\n(Serial Number: XXX####)\\n(FW Version: #.#.#)\\n(DA Version: v#.#.#)"

  - id: command_echo
    label: Command Acknowledgement
    description: "Unit echoes the processed command back as acknowledgement."

  - id: status_update
    label: Unsolicited Status Update
    description: "When STA is enabled, the unit automatically transmits state changes to the host."
    trigger: "State change with STA enabled"

  - id: error_message
    label: Error Message
    description: "Sent when a command is invalid, has invalid parameters, or is not applicable."
    format: "(ERROR – <type>)"
    values:
      - "(ERROR – Unknown Error)"
      - "(ERROR – Invalid Command)"
      - "(ERROR – Invalid Parameter)"
      - "(ERROR – Invalid Input)"
      - "(ERROR – In Passthru)"

Macros

# UNRESOLVED: no multi-step sequences explicitly described in source

Safety

confirmation_required_for: []
interlocks:
  - "If Power is Off, all non-PWR RS232 commands return Invalid Command Error."
  - "Phono Capacitance/Resistance/Gain commands return Invalid Input Error if current input is not Phono."
  - "HXD command returns Invalid Command Error if headphones are not plugged in."
  - "Crossover Frequency returns Invalid Command Error if Output 1 is not Bi-Amped (Fixed)."
  - "High/Low Pass returns Invalid Command Error if Output 1 is not Bi-Amped (Split)."
  - "Input Select returns Invalid Parameter Error if specified input is disabled in Setup Menu."
# UNRESOLVED: no explicit power-on sequencing requirements stated in source

Notes

  • Command format is (XXX params) — open parenthesis prefix, 3-character command name, space-separated parameters, close parenthesis suffix. Optional trailing \x0D\x0A.
  • The RS-232 physical connector is a 3.5mm TRS jack: Tip=TXD (from unit), Ring=RXD (to unit), Sleeve=Ground.
  • Baud rate is adjustable via the Setup Menu; default is 115200. Other supported rates: 9600, 19200, 38400, 57600.
  • TCP/IP port 84 is used for both wired and wireless interfaces.
  • The source document covers both C55 and C2800. C55-exclusive command: TEQ (Equalizer). C2800-exclusive commands: TTN, TTB, TTT, TTL.
  • IR control codes use NEC format with custom code 0xCA55. IR codes are documented but not included as programmatic actions in this spec.
  • When Status Enable (STA) is on, the unit transmits unsolicited state-change updates, allowing the control system to maintain synchronised state without polling.

Provenance

source_domains: []
source_urls: []
retrieved_at: 2026-06-02T22:09:36.055Z
last_checked_at: 2026-06-02T22:09:36.055Z

Verification Summary

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

Known Gaps

- "firmware version compatibility range not stated"
- "maximum command rate / minimum inter-command delay not stated"
- "no multi-step sequences explicitly described in source"
- "no explicit power-on sequencing requirements stated in source"
- "maximum command throughput / minimum inter-command delay not stated"
- "TCP connection persistence behavior (keep-alive, timeout) not stated"
- "firmware version compatibility not stated"
- "model-specific source not located"

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