Summary
The Panamax M4320-PRO is a 1U, 20A, 8-outlet IP-controlled power conditioner with BlueBOLT cloud management. This spec covers the BlueBOLT XML-over-UDP control protocol used by BlueBOLT-enabled devices for command, information, and event messaging on the local network.
Transport
protocols:
- udp
- http
addressing:
port: 57010 # UDP port for XML command, information, and event messaging
base_url: "http://<device-ip>/" # built-in HTTP web interface for network configuration
auth:
type: none # inferred: no auth procedure described in source
Traits
- powerable # inferred from power on/off sequence and outlet switch commands
- queryable # inferred from sendinfo, sendstatus, sendchild, sendfamily, sendsettings queries
- routable # inferred from per-outlet switch and cycle commands
Actions
# --- BB-RS232 gateway-level queries (Section 1) ---
- id: send_info
label: Send Information Query (BB-RS232)
kind: query
command: "<sendinfo/>"
params: []
- id: send_status
label: Send Status Query (BB-RS232)
kind: query
command: "<sendstatus/>"
params: []
- id: send_child
label: Send Child Query (BB-RS232)
kind: query
command: "<sendchild ndx=\"{ndx}\"/>"
params:
- name: ndx
type: integer
description: SmartLink index number, starting at 0
- id: send_family
label: Send Family Query (BB-RS232)
kind: query
command: "<sendfamily/>"
params: []
# --- BB-RS232 gateway-level commands (Section 2) ---
- id: set_time
label: Set Time
kind: action
command: "<settime>{unix_timestamp}</settime>"
params:
- name: unix_timestamp
type: integer
description: Number of seconds elapsed since January 1, 1970 (UNIX time)
- id: set_timezone
label: Set Timezone
kind: action
command: |
<setzoneinfo>
<timezone>{offset}</timezone>
<dststart>{dst_start}</dststart>
<dstshift>{dst_shift}</dstshift>
<dstend>{dst_end}</dstend>
</setzoneinfo>
params:
- name: offset
type: integer
description: Seconds offset from UTC
- name: dst_start
type: integer
description: UNIX timestamp of DST start
- name: dst_shift
type: integer
description: Seconds to offset during DST (typically 3600)
- name: dst_end
type: integer
description: UNIX timestamp of DST end
- id: enumerate
label: Enumerate
kind: action
command: "<enumerate/>"
params: []
- id: roll_call
label: Roll Call
kind: action
command: "<rollcall/>"
params: []
- id: reboot
label: Reboot
kind: action
command: "<reboot/>"
params: []
- id: sequence
label: Power Sequence
kind: action
command: "<sequence>{action}</sequence>"
params:
- name: action
type: integer
description: 0 = power turn-off sequence; 1 = power turn-on sequence
# --- SmartSequencer device queries (Section 3) ---
- id: send_info_device
label: Send Information Query (Device)
kind: query
command: "<sendinfo/>"
params: []
- id: send_status_device
label: Send Status Query (Device)
kind: query
command: "<sendstatus/>"
params: []
- id: send_settings
label: Send Settings Query (Device)
kind: query
command: "<sendsettings/>"
params: []
# --- SmartSequencer device commands (Section 4) ---
- id: switch_outlet
label: Switch Outlet
kind: action
command: "<outlet id=\"{n}\">{state}</outlet>"
params:
- name: n
type: integer
description: Outlet bank number
- name: state
type: integer
description: 0 = OFF; 1 = ON
- id: cycle_outlet
label: Cycle Outlet
kind: action
command: "<cycleoutlet id=\"{n}\" delay=\"{t}\"/>"
params:
- name: n
type: integer
description: Outlet bank number
- name: t
type: integer
description: Delay in seconds (1-254); defaults to 5 if omitted
- id: sequence_device
label: Device Power Sequence
kind: action
command: "<sequence>{on_off}</sequence>"
params:
- name: on_off
type: integer
description: 0 = power turn-off sequence; 1 = power turn-on sequence
- id: refresh_info
label: Refresh Info
kind: action
command: "<refreshinfo/>"
params: []
- id: refresh_settings
label: Refresh Settings
kind: action
command: "<refreshsettings/>"
params: []
# --- Event manager (Section 5.1) ---
- id: subscribe_events
label: Subscribe to Event Messages
kind: action
command: "<eventmgr><subscribe uri=\"ctrlsys://{ipaddr}:{port}\"/></eventmgr>"
params:
- name: ipaddr
type: string
description: IP address that will receive event messages
- name: port
type: integer
description: UDP port that will receive event messages
- id: unsubscribe_events
label: Unsubscribe from Event Messages
kind: action
command: "<eventmgr><unsubscribe uri=\"ctrlsys://{ipaddr}:{port}\"/></eventmgr>"
params:
- name: ipaddr
type: string
description: Subscribed IP address
- name: port
type: integer
description: Subscribed UDP port
- id: ack_event
label: Acknowledge Event
kind: action
command: "<eventmgr><ack evtid=\"{evtid}\" subsid=\"{subsid}\"/></eventmgr>"
params:
- name: evtid
type: integer
description: Event ID from the received event message
- name: subsid
type: integer
description: Subscriber ID assigned at subscription time
Feedbacks
- id: sernum
type: string
description: Device serial number (from <info><sernum>)
- id: fwver
type: string
description: Firmware version (from <info><fwver>)
- id: bootcodever
type: string
description: Boot loader firmware version (from <info><bootcodever>)
- id: ipaddr
type: string
description: IP address as 32-bit (base-10) decimal value (from <info><ipaddr>)
- id: ntwkdevcnt
type: integer
description: Count of SmartLink connected devices (from <status><ntwkdevcnt>)
- id: ntwkinvhash
type: string
description: Hash code of connected devices; changes if device chain changes (from <status><ntwkinvhash>)
- id: ntwkpollstate
type: integer
description: Polling state of device chain; for Furman Sound use only (from <status><ntwkpollstate>)
- id: hdlcstate
type: string
description: HDLC state with optional errs attribute indicating communication errors (from <status><hdlcstate>)
- id: hdlclink
type: integer
description: HDLC link state; 1 = link up, 0 = link down (from <status><hdlclink>)
- id: voltage
type: number
description: Measured RMS line voltage in 0.1Vac resolution (from <status><voltage>)
- id: amperage
type: number
description: Measured total load current in 0.01A resolution (from <status><amperage>)
- id: wattage
type: number
description: Measured total load power in 1W resolution (from <status><wattage>)
- id: pwrva
type: number
description: Measured volt-amperes in 1VA resolution (from <status><pwrva>)
- id: pwrfact
type: number
description: Measured power factor in 0.01 resolution (from <status><pwrfact>)
- id: per_primary
type: number
description: Packet error rate for primary link, 0.00 to 1.00 (from <per id="1">)
- id: per_secondary
type: number
description: Packet error rate for secondary link, 0.00 to 1.00 (from <per id="2">)
- id: remote_input
type: integer
description: Logic level of remote sensing input (from <status><remote>)
- id: surge_protection
type: integer
description: Surge protection circuit status; 1 = OK, 0 = no protection (from <status><protok>)
- id: smp_relay
type: integer
description: Series Mode Protection power relay state; 1 = on, 0 = off (from <status><smp>)
- id: secok
type: integer
description: Secondary SmartLink status; 1 = communicating, 0 = no response (from <status><secok>)
- id: overvolt
type: integer
description: Overvoltage status; 1 = overvoltage detected, 0 = normal (from <status><overvolt>)
- id: undervolt
type: integer
description: Undervoltage status; 1 = undervoltage detected, 0 = normal (from <status><undervolt>)
- id: pwrok
type: integer
description: Normal power condition; 1 = power OK, 0 = power fault (from <status><pwrok>)
- id: seqprog
type: integer
description: Power sequence status; 1 = sequence in progress, 0 = idle (from <status><seqprog>)
- id: outlet_state
type: object
description: Per-outlet bank state; key is outlet id (n), value 0 = OFF, 1 = ON (from <outlet id="n">)
Variables
# Settings retrieved via <sendsettings/> query on SmartSequencer devices.
# UNRESOLVED: these settings apply to the CN-1800S / CN-2400S / CN-3600SE / CN-15MP / CN-20MP
# family documented in the source. Whether the M4320-PRO exposes the same <settings>
# element is not stated in the source.
- id: adj
type: number
description: Delay time adjustment percentage of time set by DIP switch (from <settings><adj>)
- id: delay
type: integer
description: Time delay in seconds set by the DIP switches (from <settings><delay>)
- id: totdelay
type: number
description: Total delay time = delay * adj (from <settings><totdelay>)
- id: remote_input_mode
type: integer
description: Remote input operating mode: 0 = 12V off, 1 = 12V on, 2 = Ground on, 3 = MOM momentary (from <settings><mode>)
- id: sequence_mode
type: integer
description: Sequence mode; 1 = Primary, 0 = Secondary (from <settings><seq>)
- id: alarm_mode
type: integer
description: Alarm input mode; 1 = Normally Open, 0 = Normally Closed (from <settings><alarm>)
- id: evs_mode
type: integer
description: Extreme Voltage Shutdown mode; CN-xxxx: 1 = automatic, 0 = manual; MP-xxxx: 1 = on, 0 = off (from <settings><evs>)
- id: override
type: integer
description: Switch position for overriding remote commands; cnmp15/20: bypass 0=OFF, 1=ON; cn1800/2400/3600: Key 0=OFF, 1=ON, 2=REMOTE (from <settings><override>)
- id: events_enabled
type: integer
description: Events enabled; 1 = enabled, 0 = disabled (from <settings><evtsena>)
Events
# All events share a common <event time="..." evtid="..." subsid="..."> envelope.
# Events are repeated until acknowledged via the <eventmgr><ack> command or until
# a ~20 minute timeout elapses.
# --- BB-RS232 events (Section 6) ---
- id: enum_event
type: object
description: Enumerate started/ended notification
payload:
element: <enum phase="..." err="..."/>
phase: start | end
err: "timeout" | "blocked" | "no n,m..." (n,m = missing SmartLink addresses)
- id: enum_required_event
type: object
description: Non-legitimate SmartLink address detected; issue <enumerate/> to re-discover
payload:
element: <enumreqd sladdr="n"/>
- id: roll_event
type: object
description: Roll call started/ended notification
payload:
element: <roll phase="..." err="..."/>
err: "timeout" | "blocked" | "dup n,m..." (duplicate SmartLink addresses)
- id: objdestroy_event
type: object
description: SmartLink device removed from internal inventory
payload:
element: <objdestroy class="..." id="..." sladdr="..."/>
- id: objcreate_event
type: object
description: SmartLink device added to internal inventory
payload:
element: <objcreate class="..." id="..." sladdr="..."/>
- id: devcnt_event
type: object
description: Number of devices on the SmartLink chain
payload:
element: <devcnt>n</devcnt>
- id: ready_event
type: object
description: All required data recorded in inventory for a device
payload:
element: <ready class="..." id="..." sladdr="..."/>
- id: fwupgdreqd_event
type: object
description: Firmware upgrade required for a device
payload:
element: <fwupgdreqd class="..." sladdr="..."/>
- id: hdlclink_event
type: object
description: HDLC link status; 1 = link up, 0 = link down
payload:
element: <hdlclink>1|0</hdlclink>
- id: scheduled_action_fired_event
type: object
description: Scheduled operation executed
payload:
element: <schedmgr><fre><day>...</day><min>...</min><command>...</command></fre></schedmgr>
daysofweek: "7-bit binary bitmap in decimal; bit 0 = Thursday, bits 1-6 = Fri-Wed"
# --- SmartSequencer device events (Section 7) ---
- id: seqdone_event
type: object
description: Power on/off sequence initiated or completed
payload:
element: <seqdone>1|0</seqdone>
state: "1 = sequence done, 0 = sequence in process"
- id: outlet_state_change_event
type: object
description: Outlet bank turned ON->OFF or OFF->ON
payload:
element: <outlet id="n">1|0</outlet>
- id: undervolt_event
type: object
description: Device entered or exited undervoltage shutoff mode
payload:
element: <undervolt>0|1</undervolt>
- id: overvolt_event
type: object
description: Device entered or exited overvoltage shutoff mode
payload:
element: <overvolt>0|1</overvolt>
- id: powerok_event
type: object
description: Operating voltage entered or exited the safe normal range
payload:
element: <powerok>1|0</powerok>
- id: alarm_event
type: object
description: Alarm input changed; latched, must be cleared with the key on the primary unit
payload:
element: <alarm>1|0</alarm>
- id: protectok_event
type: object
description: Surge protection circuit status changed
payload:
element: <protectok>1|0</protectok>
- id: reset_event
type: object
description: Device entered or exited reset state
payload:
element: <reset>1|0</reset>
Macros
# UNRESOLVED: no multi-step macro sequences are described in the source.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source does not contain explicit safety warnings, interlock procedures,
# or power-on sequencing requirements for the M4320-PRO. The <sequence> command and
# Extreme Voltage Shutdown (<evs>) settings imply surge-protection behavior, but
# the source does not state safety procedures for integrators.
Notes
All messages are XML, UTF-8, and must include the <?xml version="1.0" ?> declaration. The root element must be <device class="..." id="...">. The class is the device type per Table 1; the id is the MAC address (BB-RS232) or 14-digit serial number (Furman Contractor Series). Messages without the XML declaration or with the wrong root element are ignored. The M4320-PRO is not in the device class table in the source — the class string and id format for the M4320-PRO on this XML protocol must be confirmed against M4320-PRO-specific documentation.
To receive unsolicited event messages, the control system must first send a <eventmgr><subscribe uri="ctrlsys://IP:PORT"/></eventmgr> command. Events are repeated every retransmission interval until acknowledged via <eventmgr><ack evtid="..." subsid="..."/> or until a ~20 minute timeout. Only one subscription per device is allowed.
The optional xid attribute on <command> causes the device to return an <ack xid="..."/> element in its response, useful for matching replies to outstanding requests.
The M4320-PRO is a Panamax (Nice North America) BlueBOLT-enabled product. The BB-RS232 protocol documented here is the local-network control protocol used by BlueBOLT gateway devices. The M4320-PRO may use a parallel XML-over-UDP protocol on UDP port 57010, or it may rely entirely on the BlueBOLT cloud REST API — the source does not state which transport the M4320-PRO exposes for direct local control. A separate, M4320-PRO-specific protocol document is required to confirm device class, identifier format, and the set of supported commands and status fields.
Provenance
source_domains:
- classic.mybluebolt.com
- s3-us-west-1.amazonaws.com
- applicationmarket.crestron.com
- mybluebolt.com
source_urls:
- https://classic.mybluebolt.com/downloads/BB-RS232-COM-PROT-10006527-A.pdf
- https://s3-us-west-1.amazonaws.com/corebrands-resources/products/BLUEBOLT-CV2/pdf_BlueBOLT-CV2_manual.pdf
- https://applicationmarket.crestron.com/panamax-m4320-pro-north-america/
- https://www.mybluebolt.com/developers
retrieved_at: 2026-04-26T19:14:16.343Z
last_checked_at: 2026-06-02T22:12:51.661Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:12:51.661Z
matched_actions: 21
action_count: 21
confidence: medium
summary: "All 21 spec actions traced to source (dip-safe re-verify). (10 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "M4320-PRO is not explicitly listed in the source device class table (Table 1 covers BB-RS232 and CN-1800S / CN-2400S / CN-3600SE / CN-15MP / CN-20MP). The device class string and identifier format for the M4320-PRO on the BlueBOLT XML protocol are not stated in the source."
- "Source describes the BB-RS232 gateway protocol; the M4320-PRO is a newer Panamax BlueBOLT-enabled device and may share the same UDP port 57010 transport but this is not explicitly confirmed in the source for the M4320-PRO specifically."
- "these settings apply to the CN-1800S / CN-2400S / CN-3600SE / CN-15MP / CN-20MP"
- "no multi-step macro sequences are described in the source."
- "source does not contain explicit safety warnings, interlock procedures,"
- "device class string and identifier format for the M4320-PRO on the BlueBOLT XML protocol are not stated in the source."
- "which subset of the BB-RS232 / SmartSequencer commands the M4320-PRO implements is not stated in the source."
- "voltage, current, and power measurement fields (<voltage>, <amperage>, <wattage>) are documented for SmartSequencer devices but their applicability to the M4320-PRO is not stated."
- "firmware version compatibility range not stated in source."
- "HDLC link and SmartLink-chain concepts (ntwkdevcnt, hdlcstate, ntwkpollstate, tfilestate) are specific to BB-RS232 gateway operation and may not be exposed by the M4320-PRO."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0