Summary

The Panamax M7500-PRO is a sequenced power conditioner / outlet manager with an RS-232 control interface on a DB9 connector. This spec covers the ASCII command/response protocol used to switch outlet banks, configure triggers and delays, query power state, and enable unsolicited feedback.

Transport

protocols:
  - serial
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
  null_modem: false  # stated: "cable not required"
  connector: DB9
  connector_pinout:
    pin2: RECEIVE DATA
    pin3: TRANSMIT DATA
    pin5: GROUND
auth:
  type: none  # inferred: no auth procedure in source
termination: "ASCII CR (13), LF (10), or NULL"

Traits

- powerable       # inferred from power command examples
- routable        # inferred from outlet bank switching examples
- queryable       # inferred from query command examples
- levelable       # inferred from !SET_BRIGHT (meter brightness) command

Actions

- id: button_on
  label: Front Panel Button ON
  kind: action
  command: "!BUTTON_ON\r"
  description: Changes the status of the front panel button to ON (equivalent to pressing the front panel button for 2 seconds).
  response: "$BUTTON = ON\r"
  params: []

- id: button_off
  label: Front Panel Button OFF
  kind: action
  command: "!BUTTON_OFF\r"
  description: Changes the status of the front panel button to OFF (equivalent to pressing the front panel button for 2 seconds).
  response: "$BUTTON = OFF\r"
  params: []

- id: all_off
  label: All Outlets OFF
  kind: action
  command: "!ALL_OFF\r"
  description: Turns off all outlets including always-on. Immediate, terminates any running sequence, overrides DC trigger input, sets front panel button OFF.
  response: "$BUTTON = OFF\r"
  params: []

- id: all_on
  label: All Outlets ON
  kind: action
  command: "!ALL_ON\r"
  description: Turns on all outlets. Immediate. Terminates any running sequence. Overrides DC trigger input, sets front panel button ON. Returns fault response on over/under-voltage.
  response:
    success: "$BUTTON = ON\r"
    overvoltage: "$PWR = OVERVOLTAGE\r"
    undervoltage: "$PWR = UNDERVOLTAGE\r"
  params: []

- id: switch
  label: Switch Outlet Bank
  kind: action
  command: "!SWITCH {bank} {state}\r"
  description: Turns a specific outlet bank or the trigger output on or off (immediate, no delay).
  response:
    invalid: "$INVALID_PARAMETER\r"
    confirmation: "see Feedbacks section 3.1"
    overvoltage: "$PWR = OVERVOLTAGE\r"
    undervoltage: "$PWR = UNDERVOLTAGE\r"
  params:
    - name: bank
      type: string
      enum: [1, 2, 3, 4, HC1, HC2, TRIGOUT]
    - name: state
      type: string
      enum: [ON, OFF]

- id: set_bright
  label: Set Meter Brightness
  kind: action
  command: "!SET_BRIGHT {x}\r"
  description: Sets the voltmeter, ammeter and LED brightness to x%.
  response:
    valid: "$BRIGHTNESS = x\r"
    invalid: "$INVALID_PARAMETER\r"
  params:
    - name: x
      type: integer
      min: 10
      max: 100

- id: set_trigger
  label: Set Trigger Source
  kind: action
  command: "!SET_TRIGGER {bank} {triggersource}\r"
  description: Assigns the trigger(s) for an outlet bank or DC trigger output. Used in CUSTOM SETTINGS mode.
  response:
    valid: "$TRIGGER FOR {bank} = {triggersource}\r"
    invalid: "$INVALID_PARAMETER\r"
  params:
    - name: bank
      type: string
      enum: [1, 2, 3, 4, HC1, HC2, TRIGOUT]
    - name: triggersource
      type: string
      enum: [NONE, BUTTON, TRIGIN]

- id: set_delay
  label: Set On/Off Delay
  kind: action
  command: "!SET_DELAY {bank} {ondelay} {offdelay}\r"
  description: Assigns the turn-on and turn-off delays for an outlet bank or DC trigger output. Used in CUSTOM SETTINGS mode.
  response:
    valid: "$DELAY FOR {bank} = {ondelay} {offdelay}\r"
    invalid: "$INVALID_PARAMETER\r"
  params:
    - name: bank
      type: string
      enum: [1, 2, 3, 4, HC1, HC2, TRIGOUT]
    - name: ondelay
      type: integer
      min: 0
      max: 240
      unit: seconds
    - name: offdelay
      type: integer
      min: 0
      max: 240
      unit: seconds

- id: set_feedback
  label: Set Feedback Mode
  kind: action
  command: "!SET_FEEDBACK {mode}\r"
  description: Sets feedback to ON (unsolicited) or OFF (polled). When ON, the unit sends a message whenever an input/output/power state changes.
  response:
    on: "$FEEDBACK = ON\r"
    off: "$FEEDBACK = OFF\r"
    invalid: "$INVALID_PARAMETER\r"
  params:
    - name: mode
      type: string
      enum: [ON, OFF]

- id: set_linefeed
  label: Set Linefeed Mode
  kind: action
  command: "!SET_LINEFEED {mode}\r"
  description: Controls linefeeds (ASCII 10 / 0x0A) appended to each response.
  response:
    on: "$LINEFEED = ON\r"
    off: "$LINEFEED = OFF\r"
    invalid: "$INVALID_PARAMETER\r"
  params:
    - name: mode
      type: string
      enum: [ON, OFF]

- id: reset_all
  label: Reset All to Factory Defaults
  kind: action
  command: "!RESET_ALL\r"
  description: Resets all custom configuration settings (triggers, delays, meter brightness, feedback mode, linefeed mode) to factory defaults.
  response: "$FACTORY SETTINGS RESTORED\r"
  factory_defaults:
    TRIGGER FOR 1: BUTTON
    TRIGGER FOR 2: BUTTON
    TRIGGER FOR 3: BUTTON
    TRIGGER FOR 4: BUTTON
    TRIGGER FOR HC1: BUTTON
    TRIGGER FOR HC2: BUTTON
    TRIGGER FOR TRIGOUT: TRIGIN
    DELAY FOR 1: "000,005"
    DELAY FOR 2: "001,004"
    DELAY FOR 3: "002,003"
    DELAY FOR 4: "003,002"
    DELAY FOR HC1: "004,001"
    DELAY FOR HC2: "005,000"
    DELAY FOR TRIGOUT: "005,000"
    BRIGHTNESS: 100
    FEEDBACK: ON
    LINEFEED: ON
  params: []

- id: query_id
  label: Query Identity
  kind: query
  command: "?ID\r"
  description: Request that the unit identify itself.
  response:
    - "$PANAMAX\r"
    - "$MAX 74/7500-PRO\r"
    - "$FIRMWARE {revision}\r"
  params: []

- id: query_trigstat
  label: Query Trigger Status
  kind: query
  command: "?TRIGSTAT\r"
  description: Request the on/off status of the front panel button and input trigger.
  response:
    button_on: "$BUTTON = ON\r"
    button_off: "$BUTTON = OFF\r"
    trigin_on: "$TRIGIN = ON\r"
    trigin_off: "$TRIGIN = OFF\r"
  params: []

- id: query_outletstat
  label: Query Outlet Status
  kind: query
  command: "?OUTLETSTAT\r"
  description: Request the on/off status of the outlet banks and output trigger.
  response_template:
    BANK1: status
    BANK2: status
    BANK3: status
    BANK4: status
    HC1: status
    HC2: status
    TRIGOUT: status
  status_values: [ON, OFF]
  params: []

- id: query_powerstat
  label: Query Power Status
  kind: query
  command: "?POWERSTAT\r"
  description: Request the status of the input voltage.
  response:
    normal: "$PWR = NORMAL\r"
    overvoltage: "$PWR = OVERVOLTAGE\r"
    undervoltage: "$PWR = UNDERVOLTAGE\r"
    recovery: "$PWR = RECOVERY\r"
  params: []

- id: query_voltage
  label: Query Line Voltage
  kind: query
  command: "?VOLTAGE\r"
  description: Request the line voltage.
  response:
    in_range: "$VOLTAGE = {xxx}\r"  # 140V > Vin > 90; leading zero for <100, e.g. 092
    overvoltage: "$VOLTAGE = OVERVOLTAGE"
    undervoltage: "$VOLTAGE = UNDERVOLTAGE"
  params: []

- id: query_current
  label: Query Input Current
  kind: query
  command: "?CURRENT\r"
  description: Request the input current draw.
  response: "$CURRENT = {xxx}\r"  # decimal; leading zero for <10, e.g. 03.3
  params: []

- id: query_help
  label: Query Help
  kind: query
  command: "?HELP\r"
  description: Request a list of all commands and queries.
  response: "Listing of all commands and queries"
  params: []

- id: query_list_config
  label: Query Configuration
  kind: query
  command: "?LIST_CONFIG\r"
  description: Request a list of all configurable parameters and current settings.
  response_template:
    - "$TRIGGER FOR 1 = {triggersource}\r"
    - "$TRIGGER FOR 2 = {triggersource}\r"
    - "$TRIGGER FOR 3 = {triggersource}\r"
    - "$TRIGGER FOR 4 = {triggersource}\r"
    - "$TRIGGER FOR HC1 = {triggersource}\r"
    - "$TRIGGER FOR HC2 = {triggersource}\r"
    - "$TRIGGER FOR TRIGOUT = {triggersource}\r"
    - "$DELAY FOR 1 = {ondelay} {offdelay}\r"
    - "$DELAY FOR 2 = {ondelay} {offdelay}\r"
    - "$DELAY FOR 3 = {ondelay} {offdelay}\r"
    - "$DELAY FOR 4 = {ondelay} {offdelay}\r"
    - "$DELAY FOR HC1 = {ondelay} {offdelay}\r"
    - "$DELAY FOR HC2 = {ondelay} {offdelay}\r"
    - "$DELAY FOR TRIGOUT = {ondelay} {offdelay}\r"
    - "$BRIGHTNESS = {x}\r"
    - "$FEEDBACK = {x}\r"
    - "$LINEFEED = {x}\r"
  params: []

Feedbacks

- id: outlet_bank_state
  type: object
  description: Unsolicited feedback when an outlet bank or trigger output changes state (requires SET_FEEDBACK ON).
  fields:
    BANK1: enum [ON, OFF]
    BANK2: enum [ON, OFF]
    BANK3: enum [ON, OFF]
    BANK4: enum [ON, OFF]
    HC1: enum [ON, OFF]
    HC2: enum [ON, OFF]
    TRIGOUT: enum [ON, OFF]
  example: "$BANK1 = ON\r"

- id: trigger_input_state
  type: object
  description: Unsolicited feedback when front panel button or input trigger changes state.
  fields:
    BUTTON: enum [ON, OFF]
    TRIGIN: enum [ON, OFF]
  example: "$BUTTON = OFF\r"

- id: power_overvoltage
  type: enum
  values: [OVERVOLTAGE]
  description: Input voltage rose above the overvoltage threshold.
  message: "$PWR = OVERVOLTAGE\r"

- id: power_undervoltage
  type: enum
  values: [UNDERVOLTAGE]
  description: Input voltage fell below the undervoltage threshold.
  message: "$PWR = UNDERVOLTAGE\r"

- id: power_recovery
  type: enum
  values: [RECOVERY]
  description: Input voltage returned to safe operating range after an over/under-voltage condition.
  message: "$PWR = RECOVERY\r"

- id: power_normal
  type: enum
  values: [NORMAL]
  description: Recovery completed, normal operation resumed.
  message: "$PWR = NORMAL\r"

Variables

- id: trigger_source
  label: Trigger Source per Bank
  type: string
  enum: [NONE, BUTTON, TRIGIN]
  description: Source that switches each outlet bank. NONE = always ON (RS-232 only). BUTTON = front panel button. TRIGIN = DC input trigger.
  scope: per-bank (1, 2, 3, 4, HC1, HC2, TRIGOUT)

- id: on_delay
  label: Turn-On Delay
  type: integer
  min: 0
  max: 240
  unit: seconds
  description: Delay applied to outlet bank turn-on. Used in CUSTOM SETTINGS mode.
  scope: per-bank (1, 2, 3, 4, HC1, HC2, TRIGOUT)

- id: off_delay
  label: Turn-Off Delay
  type: integer
  min: 0
  max: 240
  unit: seconds
  description: Delay applied to outlet bank turn-off. Used in CUSTOM SETTINGS mode.
  scope: per-bank (1, 2, 3, 4, HC1, HC2, TRIGOUT)

- id: meter_brightness
  label: Meter / LED Brightness
  type: integer
  min: 10
  max: 100
  unit: percent
  description: Brightness of voltmeter, ammeter, and LEDs.

- id: feedback_mode
  label: Feedback Mode
  type: string
  enum: [ON, OFF]
  description: When ON, unit sends unsolicited state-change messages.

- id: linefeed_mode
  label: Linefeed Mode
  type: string
  enum: [ON, OFF]
  description: When ON, each response is terminated with a linefeed (LF / 0x0A) in addition to CR.

Events

- id: outlet_state_changed
  description: An outlet bank or trigger output transitioned state.
  payload: "$BANK{n} = {state}\r"  # or $HC1, $HC2, $TRIGOUT
  trigger: state change, requires feedback_mode=ON

- id: trigger_input_changed
  description: Front panel button or DC input trigger changed state.
  payload: "$BUTTON = {state}\r" or "$TRIGIN = {state}\r"
  trigger: state change, requires feedback_mode=ON

- id: power_fault_overvoltage
  description: Input voltage exceeded the overvoltage threshold.
  payload: "$PWR = OVERVOLTAGE\r"
  trigger: Vin > 140V

- id: power_fault_undervoltage
  description: Input voltage dropped below the undervoltage threshold.
  payload: "$PWR = UNDERVOLTAGE\r"
  trigger: Vin < 90V

- id: power_fault_recovery
  description: Input voltage re-entered safe range after a fault.
  payload: "$PWR = RECOVERY\r"
  trigger: 90V <= Vin <= 140V after fault

- id: power_fault_normal
  description: Recovery completed, normal operation resumed.
  payload: "$PWR = NORMAL\r"
  trigger: post-recovery transition

Macros

# No multi-step sequences explicitly described in source.
# All commands in the source are atomic. UNRESOLVED: not applicable.

Safety

confirmation_required_for: []
interlocks:
  - "!ALL_OFF and !ALL_ON terminate any running turn-on/turn-off sequence and override the DC trigger input."
  - "Over/under-voltage faults abort !ALL_ON and return $PWR = OVERVOLTAGE / UNDERVOLTAGE."
# UNRESOLVED: no explicit safety warnings, no interlock procedures, no power-on sequencing requirements stated in source beyond immediate switch behavior.

Notes

  • Source describes only RS-232 on DB9 (no TCP/IP, REST, or other network protocol documented). The "Known protocol" hint (TCP/IP) in the intake did not match the source — spec reflects source.
  • All commands and responses are ASCII terminated by CR (0x0D), LF (0x0A), or NULL. SET_LINEFEED controls whether LF is appended to responses.
  • DB9 wiring: pin 2 = RX, pin 3 = TX, pin 5 = GND. Null-modem cable not required (suggests the M7500-PRO is already wired as a DTE or uses straight-through to host DTE; see source page 2 for diagram).
  • ID response advertises the model string "MAX 74/7500-PRO" — preserved as-is in compatible_with and query_id.
  • Factory defaults stored in non-volatile EEPROM are restored by !RESET_ALL.

Provenance

source_domains:
  - panamax.com
source_urls:
  - https://panamax.com/wp-content/uploads/m7500pro_manual.pdf
retrieved_at: 2026-06-03T11:10:08.022Z
last_checked_at: 2026-06-04T06:28:51.084Z

Verification Summary

verdict: verified
checked_at: 2026-06-04T06:28:51.084Z
matched_actions: 19
action_count: 19
confidence: medium
summary: "All 19 spec commands matched verbatim in source with correct parameters and transport settings verified. (4 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "known protocol was given as TCP/IP, but the source document describes only RS-232. No TCP/IP control documented."
- "not applicable."
- "no explicit safety warnings, no interlock procedures, no power-on sequencing requirements stated in source beyond immediate switch behavior."
- "firmware version compatibility not stated in source. UNRESOLVED: DC trigger voltage/current ranges (3-24V, 4.6mA@3V, 58mA@24V in, <12V/<400mA out) are documented but are hardware electrical specs, not control-protocol fields — included in Notes context only."

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