Summary

The source describes a NetLinx module for Powersoft M Series amplifiers. It communicates with an amplifier over UDP and exposes command and feedback interfaces through a NetLinx virtual device. The documented controls include power, connection, debugging, preset recall, mute, volume, and preset operations. Feedback addresses include temperature, current, impedance, protection, voltage, readiness, power, preset, alarm, device type, firmware, and device name.

Transport

protocols:
  - udp
addressing:
  port: 8002
  discovery_port: 30718
auth:
  type: UNRESOLVED  # Authentication behavior is not stated in the source.

Traits

traits:
  - powerable
  - levelable
  - queryable

Actions

actions:
  - id: power_on
    label: Power On
    kind: action
    command: "<POWER>x."
    description: "Send the POWER command with x=1 to switch the amplifier ON. This takes effect only if external 12V power is present."
    params:
      - name: x
        type: integer
        description: "Use 1 for power on."

  - id: power_off
    label: Power Off
    kind: action
    command: "<POWER>x."
    description: "Send the POWER command with x=2 to switch the amplifier OFF. This takes effect only if external 12V power is present; otherwise the command recalls the reboot function."
    params:
      - name: x
        type: integer
        description: "Use 2 for power off."

  - id: connect
    label: Connect
    kind: action
    command: "<CONNECT>x."
    description: "Send the CONNECT command with x=1 to connect the device to the NetLinx Master."
    params:
      - name: x
        type: integer
        description: "Use 1 to connect."

  - id: disconnect
    label: Disconnect
    kind: action
    command: "<CONNECT>x."
    description: "Send the CONNECT command with x=0 to disconnect the device from the NetLinx Master. The source says to disconnect from AMX before using Armonia software."
    params:
      - name: x
        type: integer
        description: "Use 0 to disconnect."

  - id: debug_on
    label: Debug On
    kind: action
    command: "<DEBUG>x."
    description: "Send the DEBUG command with x=1 to enable the module debugger."
    params:
      - name: x
        type: integer
        description: "Use 1 to enable debugging."

  - id: debug_off
    label: Debug Off
    kind: action
    command: "<DEBUG>x."
    description: "Send the DEBUG command with x=0 to disable the module debugger."
    params:
      - name: x
        type: integer
        description: "Use 0 to disable debugging."

  - id: preset_recall
    label: Recall Preset
    kind: action
    command: "<PRESET>z-y,x."
    description: "Recall a preset from the device. By default, this is set to off at startup."
    params:
      - name: tp_index
        type: integer
        description: "z: Touchpanel count index (1 to max TP count), used for feedback."
      - name: module_id
        type: integer
        description: "y: Module ID (1-4)."
      - name: preset_number
        type: integer
        description: "x: Preset number (1-4)."

  - id: mute_on
    label: Mute On
    kind: action
    description: "Mute a module: channel code 1005 for Module 1 or 1019 for Module 2 (if present)."
    params:
      - name: module
        type: integer
        description: "Module number (1 or 2, if present)."

  - id: mute_off
    label: Mute Off
    kind: action
    description: "Unmute a module: channel code 1006 for Module 1 or 1020 for Module 2 (if present)."
    params:
      - name: module
        type: integer
        description: "Module number (1 or 2, if present)."

  - id: mute_toggle
    label: Mute Toggle
    kind: action
    description: "Toggle module mute: channel code 1007 for Module 1 or 1021 for Module 2 (if present)."
    params:
      - name: module
        type: integer
        description: "Module number (1 or 2, if present)."

  - id: mute_channel_on
    label: Mute Channel On
    kind: action
    description: "Mute a channel: codes 1121-1124 for channels 1-4 respectively; channels 3 and 4 are marked if present in the source."
    params:
      - name: channel
        type: integer
        description: "Channel number (1-4)."

  - id: mute_channel_off
    label: Mute Channel Off
    kind: action
    description: "Unmute a channel: codes 1129-1132 for channels 1-4 respectively; channels 3 and 4 are marked if present in the source."
    params:
      - name: channel
        type: integer
        description: "Channel number (1-4)."

  - id: mute_channel_toggle
    label: Mute Channel Toggle
    kind: action
    description: "Toggle software mute: codes 1012 and 1013 for channels 1 and 2, and 1026 and 1027 for channels 3 and 4 (if present)."
    params:
      - name: channel
        type: integer
        description: "Channel number (1-4)."

  - id: hw_mute_on
    label: Hardware Mute On
    kind: action
    description: "Hardware mute channel pair: code 1137 for channels 1&2 or 1138 for channels 3&4 (if present)."
    params:
      - name: pair
        type: integer
        description: "Channel pair (1 for channels 1&2, 2 for channels 3&4)."

  - id: hw_mute_off
    label: Hardware Mute Off
    kind: action
    description: "Hardware unmute channel pair: code 1141 for channels 1&2 or 1142 for channels 3&4 (if present)."
    params:
      - name: pair
        type: integer
        description: "Channel pair (1 for channels 1&2, 2 for channels 3&4)."

  - id: volume_up
    label: Volume Up
    kind: action
    description: "Increment volume for a channel using channel codes 1201-1204 for Module 1 Ch.1/2 and Module 2 Ch.1/2 (if present). Step size is defined by Dsp1VoldBStep."
    params:
      - name: channel
        type: integer
        description: "Volume control index (1-4), corresponding to the listed channel codes."

  - id: volume_down
    label: Volume Down
    kind: action
    description: "Decrement volume for a channel using channel codes 1211-1214 for Module 1 Ch.1/2 and Module 2 Ch.1/2 (if present). Step size is defined by Dsp1VoldBStep."
    params:
      - name: channel
        type: integer
        description: "Volume control index (1-4), corresponding to the listed channel codes."

  - id: volume_reload
    label: Reload Volume
    kind: action
    description: "Reload volume level from device: code 1301 for Module 1 Ch.1/2, or 1302 for Module 2 Ch.3/4 (if present)."
    params:
      - name: module
        type: integer
        description: "Module number (1 or 2, if present)."

  - id: led_blinking
    label: LED Blinking
    kind: action
    description: "LED blinking channel code 1004 for Module 1 or 1018 for Module 2 (if present)."
    params:
      - name: module
        type: integer
        description: "Module number (1 or 2, if present)."

  - id: preset_edit_name
    label: Edit Preset Name
    kind: action
    description: "Edit preset name using channel code 1401."
    params: []

  - id: preset_abort
    label: Abort Preset Operation
    kind: action
    description: "Abort preset operation using channel code 1403."
    params: []

  - id: power_toggle
    label: Power Toggle
    kind: action
    description: "Power toggle channel code 1003; this will power toggle if 12V PSU is present."
    params: []

  - id: software_mute_channel_off
    label: Software Mute Channel Off
    kind: action
    description: "Turn software mute off: channel code 1008 for Ch1, 1010 for Ch2, and 1022 for CH3 or 1024 for CH4 (Module 2 if present)."
    params:
      - name: channel
        type: integer
        description: "Channel number (1-4)."

  - id: software_mute_channel_on
    label: Software Mute Channel On
    kind: action
    description: "Turn software mute on: channel code 1009 for Ch1, 1011 for Ch2, and 1023 for CH3 or 1025 for CH4 (Module 2 if present)."
    params:
      - name: channel
        type: integer
        description: "Channel number (1-4)."

  - id: device_type_request
    label: Device Type Request
    kind: action
    description: "Device Type channel code 1060."
    params: []

  - id: firmware_info_request
    label: Firmware Info Request
    kind: action
    description: "Firmware Info channel code 1061."
    params: []

Feedbacks

feedbacks:
  - id: temperature
    type: number
    description: "Module temperature (Module 1 address 1001, Module 2 address 1013)."
    unit: "°C"

  - id: rms_current
    type: number
    description: "RMS current per channel (Module 1 Ch.1=1002, Module 1 Ch.2=1003, Module 2 Ch.3=1014, Module 2 Ch.4=1015)."
    unit: "A"

  - id: impedance
    type: number
    description: "Impedance per channel (Module 1 Ch.1=1004, Module 1 Ch.2=1005, Module 2 Ch.3=1016, Module 2 Ch.4=1017)."
    unit: "Ohm"

  - id: protection_status
    type: string
    description: "Bitmap protection status per module (Module 1 address/channel 1006, Module 2 address/channel 1018); bitmap interpretation is not documented."

  - id: aux_positive_voltage
    type: number
    description: "Aux positive voltage (Module 1 address 1007, Module 2 address 1019)."
    unit: "V"

  - id: aux_negative_voltage
    type: number
    description: "Aux negative voltage (Module 1 address 1008, Module 2 address 1020)."
    unit: "V"

  - id: hardware_mute_state
    type: UNRESOLVED
    description: "Hardware mute feedback is listed at address/channel 4001 for each module; state encoding is not documented."

  - id: module_ready
    type: UNRESOLVED
    description: "Module ready feedback (Module 1 address/channel 1010, Module 2 address/channel 1022); value encoding is not documented."

  - id: external_power
    type: UNRESOLVED
    description: "External power feedback at address/channel 1011; value encoding is not documented."

  - id: current_preset
    type: integer
    description: "Current preset per module (Module 1 address 1012, Module 2 address/channel 1024)."

  - id: alarm
    type: UNRESOLVED
    description: "Alarm feedback for Module 1 at channel 1061 and Module 2 at channel 1062; value encoding is not documented."

  - id: device_type
    type: string
    description: "Device type identifier (address 1069)."
    query_command: 1060

  - id: firmware_info
    type: string
    description: "Firmware information (address 1070)."
    query_command: 1061

  - id: device_name
    type: UNRESOLVED
    description: "Device Name is listed at address 4001 in the source; its behavior is not further specified."

Variables

variables:
  - id: volume
    type: float
    min: null  # UNRESOLVED: minimum volume not stated
    max: null  # UNRESOLVED: maximum volume not stated
    step: 1.0
    unit: dB
    description: "Per-channel volume level. Step size is configurable via Dsp1VoldBStep (source value 1.0 dB; comment says start from 0.1 dB)."

Events

# UNRESOLVED: no unsolicited event/notification mechanism described in source beyond asynchronous command feedback.

Macros

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

Safety

confirmation_required_for: []
interlocks:
  - "Power ON/OFF commands take effect only if external 12V power is present."
  - "The amplifier accepts only one connection at a time; disconnect from AMX before using Armonia software."
# UNRESOLVED: full power-on sequencing requirements not documented in source.

Notes

  • This spec documents the NetLinx module interface (AMX), not the native Powersoft serial/IP protocol. The module implements the actual Powersoft protocol internally, but its commands are not documented in this source.
  • String command format is <[COMMAND]>[VALUE].; documented examples include <DEBUG>x., <POWER>x., <CONNECT>x., and <PRESET>z-y,x..
  • Mute and volume controls use NetLinx channel codes. The channel codes are listed in the module configuration arrays.
  • The amplifier may have one or two DSP modules depending on model. Module 2 controls and feedback are marked "If Present" in the source.
  • Preset names are stored persistently with defaults "Preset #1" through "Preset #4" plus "Preset Aux" per module.
  • The source states that the module will not work on a NetLinx Master with firmware below 4.xx. It identifies Master Firmware version 4.1.373 as the development environment.
  • Volume step size is configurable (Dsp1VoldBStep); the source value is 1.0 dB and its comment says "Start from 0.1 dB".

Provenance

source_domains:
  - powersoft.com
source_urls:
  - https://www.powersoft.com/wp-content/uploads/2019/01/Powersoft_M_Series_HDSPETH_AMX_ref_sheet.pdf
retrieved_at: 2026-04-30T04:33:24.415Z
last_checked_at: 2026-10-07T15:43:31.197Z

Verification Summary

verdict: verified
checked_at: 2026-10-07T15:43:31.197Z
matched_actions: 26
action_count: 26
confidence: medium
summary: "All 26 action units match the source's string commands and channel-code arrays; transport values are supported; only a few minor channels are unrepresented. (15 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "1120 polling button"
- "1314-1317/1328-1331 preset channels"
- "1065/1066 Bat Former feedback"
- "This source documents a NetLinx module API that wraps the native Powersoft protocol. The raw amplifier protocol commands are not documented here."
- "The source references \"M Series\" generally; M20D HDSP+ETH model compatibility is assumed from the device name."
- "Number of DSP modules/channels varies by model; not confirmed for M20D HDSP+ETH specifically."
- "Firmware version compatibility for the amplifier is not stated. The source says the module will not work on a NetLinx Master with firmware below 4.xx."
- "minimum volume not stated"
- "maximum volume not stated"
- "no unsolicited event/notification mechanism described in source beyond asynchronous command feedback."
- "no multi-step sequences described in source."
- "full power-on sequencing requirements not documented in source."
- "native Powersoft protocol commands sent between module and amplifier are not documented."
- "exact number of channels/modules for M20D HDSP+ETH not confirmed."
- "volume range (min/max dB) not stated."
- "protection bitmap interpretation not documented."
- "alarm types/codes not documented."
- "connection/disconnection timeout behavior not documented."

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