Skip to main content

McIntosh MA12000

The mcintosh_ma12000 driver controls the McIntosh MA12000 hybrid integrated amplifier over its native RS232 protocol fronted by a serial-to-IP bridge. One GEM device represents the amplifier; there are no zones — the MA12000 is a single-zone unit.

What's supported

Power, volume (0-100), mute, input selection (1-17), Output 1 / Output 2 speaker switching, balance, per-input trim, EQ, mono, meter and tube lights, display brightness, headphone HXD crossfeed, and MM/MC phono trim are all controllable. The amplifier pushes status updates automatically (it re-enables status feedback on every power cycle), so most attribute changes appear in GEM without polling. A 60 s safety resync re-reads power, volume, mute, input, and both speaker outputs as a backstop; every other setting (balance, trim, EQ, lights, brightness, phono) relies on the amp's automatic push.

Prerequisites

  • Serial-to-IP bridge (Brainboxes, Global Cache, etc.) wired to the MA12000 RS232 jack with a DB9-F to 3.5 mm TRS cable (e.g. SF Cable D935-06: Tip = TXD, Ring = RXD, Sleeve = GND).
  • Bridge serial port set to 115200 8N1, no flow control (the amp also supports 57600 / 38400 / 19200 / 9600).
  • Bridge running in raw TCP mode (not telnet), with a stable LAN IP (DHCP reservation or static).

Setup

  1. Cable the MA12000 RS232 jack to the bridge.
  2. Configure the bridge to expose the serial port as raw TCP at 115200 8N1.
  3. System → Devices: add a device with driver mcintosh_ma12000. Set:
    • ip — LAN IP of the bridge
    • port — TCP port the bridge maps to that serial port
  4. Save and enable. On AC connect the amp emits its model, serial number, and firmware version banner — the driver captures these into the model, serial_number, and firmware_version device attributes automatically.

Attributes

Device — required

AttributeTypeDescription
ipstringLAN IP of the serial-to-IP bridge.
portintTCP port on the bridge that mirrors the RS232 serial port.

Device — optional

AttributeTypeDefaultDescription
monitor_intervalint (ms)60000Safety resync cadence. The amp pushes updates on every change; this is a backstop.
max_volumeint (0-100)60Hard cap applied to discrete volume commands. volume_up / volume_down are not clamped since they only step by 1%. Protects against accidental loud levels on this very high-output amp.

Reflected device attributes

The driver mirrors the following onto the device as state changes:

AttributeTypeSource
power_statestringon / off
volumeint0-100
mutebool
inputint1-17
input_labelstringResolved label (BAL1, UNBAL3, MM PHONO, etc.)
output1, output2boolSpeaker output switching
balanceint-50…+50 (left negative, right positive)
input_trimint-12…+12 (0.5 dB steps)
eqbool
monobool
meter_lightsbool
display_brightnessint1 (dimmest) … 4 (brightest)
headphone_hxdboolCrossfeed; only effective with headphones plugged in
headphone_statestringunplugged / plugged / no_jack
phono_resistanceint1=50Ω 2=100Ω 3=200Ω 4=400Ω 5=1000Ω (MC only)
phono_capacitanceint1=50pF 2=100pF 3=150pF 4=200pF 5=250pF 6=300pF 7=350pF 8=400pF (MM only)
status_feedbackboolWhether the amp is pushing unsolicited status updates

Input map

IndexInput
1-2BAL1, BAL2
3-8UNBAL1 … UNBAL6
9MM PHONO
10MC PHONO
11-12COAX1, COAX2
13-14OPTI1, OPTI2
15USB
16MCT
17HDMI (DA2 module only)

Commands

CommandArgsNotes
power_on / power_off / get_power
volumevolume (0-100)Absolute level. Clamped server-side to the max_volume attribute (default 60).
volume_up / volume_down / get_volume
mute_on / mute_off / get_mute
output1_on / output1_off / output2_on / output2_offSpeaker A / B switching.
inputinput (1-17)See input map.
input_up / input_down / get_input
balancebalance (-50…+50)
balance_left / balance_right / get_balanceStep in single increments.
input_trimtrim (-12…+12)Absolute per-input trim in 0.5 dB steps; persists per source.
input_trim_up / input_trim_down / get_input_trimStep the active input's trim up/down by one increment.
eq_on / eq_off / mono_on / mono_off
meter_lights_on / meter_lights_off / tube_lights_on / tube_lights_off
display_brightnesslevel (1-4)
headphone_hxd_on / headphone_hxd_offHeadphones must be plugged in.
phono_resistanceindex (1-5)MC PHONO must be the active input.
phono_capacitanceindex (1-8)MM PHONO must be the active input.
trim_menu_closeCloses the front-panel trim menu (else it times out).
status_feedback_on / status_feedback_off / query_all

Every readable setting also has a matching get_… query — get_output1, get_output2, get_eq, get_mono, get_meter_lights, get_display_brightness, get_headphone_hxd, get_headphone_state, get_phono_resistance, get_phono_capacitance — that fetches its current value on demand. query_all asks the amp to report the status of every setting in one shot.

Known quirks

Power-off rejects most commands

While the amp is in standby, every command except PWR returns (ERROR - Invalid Command). The driver only polls non-power state when power_state is on.

  • The amp turns its status feedback (STA) on automatically at every power cycle, so unsolicited updates are the norm.
  • phono_resistance (TPR) only works while input is MC PHONO; phono_capacitance (TPC) only works while input is MM PHONO. They return an Invalid Input error otherwise.
  • Power-on takes ~15 s; commands sent during warm-up are buffered and acted on after.
  • tube_lights_on / tube_lights_off switch the tube lighting, but the amp reports no tube-light state back, so GEM never reflects their current status. The meter lights, by contrast, do report (meter_lights).
  • The driver keeps the link alive with a get_power query every 60 s — the one query the amp answers while in standby — so an idle socket stays connected even with the amp off.

Troubleshooting

SymptomCheck
Every command returns Invalid CommandAmp is in standby. Send power_on first.
No volume / input updates appear in GEMConfirm the bridge is in raw TCP mode (not telnet) and the serial settings are 115200 8N1.
Phono resistance / capacitance command rejectedTPR requires MC PHONO selected; TPC requires MM PHONO selected.
Model / serial / firmware never populatedThe banner is only emitted when the amp is power-cycled at the AC mains while the bridge is connected. Power-cycle the amp once after wiring.
Connection drops when the amp sits idleThe driver already pings the amp every 60 s. If a firewall or NAT still idles the socket, add a ping_interval attribute (ms) on the device row and lower it.
  • Devices — add and configure the amplifier (this driver creates a single standalone device, no zones).
  • Subsystems — the AV subsystem the device is placed in.
  • Commands — the command grid and Test runner for the power, volume, input, and trim commands above.
  • Device Types — the av_receiver / amplifier classification the driver hints.