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. A value that is not a positive number uses the 60000 default; anything under 1000 is raised to 1000. If the amp sends nothing for three resyncs in a row (bridge up, amp unplugged), the cadence doubles each time up to 5 minutes and returns to normal as soon as the amp is heard again.
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_off—Speaker A / B switching.
inputinput (1-17)See input map.
input_up / input_down / get_input—
balancebalance (-50…+50)
balance_left / balance_right / get_balance—Step 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_trim—Step 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_off—Headphones 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_close—Closes the front-panel trim menu (else it times out).
status_feedback_on / status_feedback_off / query_all—

For input, balance, input_trim, phono_resistance, phono_capacitance and display_brightness, a value that is missing, blank, not a whole number or outside the range shown is refused with an error and nothing is sent to the amp. input and input_trim also accept the amp's own U / D step letters and balance accepts L / R. volume is different: an unreadable value sends 0, and every value is held under max_volume.

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.