This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Software

Choose Innosonix software: IDFM for network and firmware, Maxx Control for one amp (REST), Maxx Remote for multi-amp projects — including micro MAXX.

On this site, Maxx Control docs focus on the device REST API and third-party plugins; the full on-device UI manual is published separately (see downloads).

These tools apply to the MAXX family including micro MAXX (same Maxx Control webpage/API and full Maxx Remote support).

FeaturesMAXX RemoteMAXX Control
Single-Channel Control
Multichannel Control (per Device only)
Device Settings
Grouping
Undo / Redo
Offline Project Planing
  1. Basic device setup in the network → IDFM (install)
  2. Single device without much need to constantly change settings of multiple channels → Maxx Control
  3. Head start without any additional installation? → Maxx Control
  4. More than one device? Recommendation → Maxx Remote

1 - IDFM

IDFM (Innosonix Device and Firmware Manager): discover amplifiers, set IP and hostname, and update firmware before Maxx Control or Maxx Remote.

IDFM (Innosonix Device and Firmware Manager) is a desktop Electron app for bringing amplifiers onto a working network plan and keeping firmware current. Use it before Maxx Control or Maxx Remote. That workflow includes micro MAXX and other MAXX amplifiers.

When to use which tool

NeedTool
Discover amps, set IP / hostname, update firmwareIDFM (this section)
One amplifier — DSP, routing, device settings in the browserMaxx Control (on the device)
Many amplifiers — projects, groups, offline planningMaxx Remote

Download

Get IDFM from the Innosonix downloads page (IDFM tab):

PlatformArtifact
Windows.exe installer (NSIS)
Linux.AppImage
macOS.dmg (universal)

Product overview: innosonix.de/software.

  1. Install IDFM and confirm UDP STATUS.
  2. Discover devices and set IP (hostname / identify as needed).
  3. Update firmware if newer images are available.
  4. Continue with Maxx Control (single amp) or Maxx Remote (multi-amp).

How discovery works

IDFM has two ways to get devices into the list — they are not two equal “discovery protocols”:

MethodWhenHow
UDP broadcastSame L2 segment / VLAN (preferred)Broadcast to 255.255.255.255 on UDP 9453. Works even if the amp’s IP is on a different subnet than the PC, so you can still change IP settings.
Add by IP / subnet scanRouted networks where broadcast stops at a routerYou add a known IP, or scan a /24 range. IDFM then probes the device over HTTP (device REST API) — and the loader path when needed.

Routers do not forward UDP broadcast. Across VLANs, use add-by-IP or range scan — see Discover and IP.

Ports (PC ↔ amplifier)

TrafficPort / addressPurpose
UDP 9453broadcast 255.255.255.255Automatic discovery and UDP-based network config
TCP 9454amplifier IPFirmware loader / update path
HTTPamplifier IP (device REST, typically port 80)Manual add and subnet-scan probe (/rest-api/…)

Some update paths also use HTTP 8080 on the device for file upload. Allow these in the PC firewall (and between VLANs when you use scan/add).

In this section

PageUse when
InstallFirst download, platforms, firewall / UDP status
Discover and IPFind devices, STATIC/DHCP, hostname, identify, routed nets
FirmwareDownload / import .inx, multi-device update, offline; MAXX² bootloader fallback
TroubleshootMissing devices, port in use, update failures

1.1 - Install

Install IDFM on Windows, macOS, or Linux from the Innosonix downloads page, then confirm UDP discovery is allowed on the commissioning PC.

Goal / when to use

Get IDFM running on the PC you will use for commissioning so amplifiers can be discovered and configured.

Download

  1. Open the Innosonix downloads page.
  2. Select the IDFM tab.
  3. Download the build for your OS:
OSFileNotes
Windowsidfm-….exeNSIS installer — choose install directory; desktop / Start menu shortcuts available
Linuxidfm-….AppImageMake executable, then run (no separate installer)
macOSidfm-….dmgUniversal build; open the DMG and install the app as usual

IDFM may offer an in-app update when a newer tool version is published on the download service.

First launch

  1. Start IDFM.
  2. Open the DEVICES page (default).
  3. Check UDP STATUS (top right).
  4. Confirm devices appear, or that the status does not show UDP blocked / port unavailable.

Expected result

The device table loads. Online count updates as amps answer discovery. If nothing appears yet, continue with Discover and IP (same L2 segment, or add/scan).

Firewall and UDP status

Automatic discovery uses UDP 9453. The PC firewall must allow IDFM to send and receive that traffic on your control network.

  • Use UDP STATUS to see whether discovery sockets are healthy on local interfaces.
  • If another IDFM instance is already running, you may see a port already in use message — quit the other instance.
  • Windows: if devices never appear, open HELP in IDFM. The FAQ can re-apply Windows firewall allow rules for the app, or (last resort) temporarily disable the firewall profile while diagnosing. Prefer fixing rules over leaving the firewall off.

1.2 - Discover and IP

Use IDFM to find Innosonix amplifiers (UDP discovery or add/scan), then set STATIC-IP or DHCP, hostname, and identify the physical unit.

Goal / when to use

Put every amplifier on the site IP plan: discover (or add) devices, set STATIC-IP or DHCP, name them, and confirm which physical unit is which.

Prerequisites

  • IDFM installed with healthy UDP STATUS when you expect automatic discovery
  • PC on the same L2 segment as the amps for UDP broadcast, or known amp IPs / reachable routed subnet for add/scan

UDP discovery (preferred)

On the same switch / VLAN, IDFM discovers amps with UDP broadcast on port 9453 (255.255.255.255).

  1. Open DEVICES.
  2. Wait for rows to appear (hostname, model, firmware, IP, status).
  3. Filter or sort the table if you have many units.

UDP discovery still works when the amp’s configured IP is on a different subnet than the PC — as long as they share the same broadcast domain. That is how you recover “wrong IP” units without serial console access.

Example (wrong subnet, same switch)

PC:         192.168.0.33 / 255.255.255.0
Amplifier:  192.168.99.2 / 255.255.255.0

Unicast HTTP may fail, but UDP discovery can still list the amp and accept a new IP configuration.

Expected result

Amps show as online in the list. You can open IP / hostname dialogs from the row.

Set IP (STATIC or DHCP)

  1. Click the IP cell for the device.
  2. Choose TYPE:
    • STATIC-IP — enter IP, subnet, gateway
    • DHCP — device takes an address from the DHCP server
  3. Click SET.
  4. Optional on DHCP: NEW DHCP LEASE to renew.

After a STATIC change, wait a few seconds for the list to refresh. After DHCP, the old address may go offline until the amp reappears with the new lease.

Hostname and identify

ActionHow
HostnameClick the hostname cell → enter a unique name → SET HOSTNAME
IdentifyUse IDENT on the row so the physical amp signals which unit you selected
LocationOptional site text via the location cell (stored on the device when reachable over HTTP)
Device pageUse the external/page control to open the amp’s web UI (Maxx Control) once the IP is reachable

Add by IP or subnet scan (routed networks)

Routers do not forward UDP broadcast. If the PC and amps are on different routed VLANs, use + above the device list:

  1. Add by IP — enter a known amplifier IP (device must answer ping / HTTP).
  2. Subnet scan — enter the first three octets of the target /24 (for example 192.168.99) and scan. IDFM probes live hosts via the device HTTP REST API.

Example (routed VLANs)

VLAN1: PC          192.168.0.33 / 24
         |
       ROUTER
         |
VLAN2: Amplifier   192.168.99.2 / 24

Scan or add in 192.168.99.0–255. After add, configure IP/hostname as needed (unicast path must reach the amp).

Expected result

Added devices appear in the list (often marked as manually added). Save the list if you want them remembered on next launch.

List tools

On DEVICES you can save, clear, or export the current device list. Saving helps when you rely on manually added units across sessions.

1.3 - Firmware

Update amplifier firmware in IDFM: download or import .inx packages and flash one or many devices before Maxx Control or Maxx Remote commissioning.

Goal / when to use

Bring amplifiers to a known, current firmware before commissioning with Maxx Control or Maxx Remote.

Prerequisites

  • Devices listed and reachable in Discover and IP
  • For a successful update, the PC and amplifier should share a reachable unicast path on the same subnet (loader / update traffic is not the same as UDP discovery-only)
  • Internet on the PC to fetch images from Innosonix, or .inx files copied from another machine

Check for updates

  1. Start IDFM with network access.
  2. Open the FIRMWARE tab. A red badge can indicate newer images are available to download.
  3. The FIRMWARE UPDATES control (when shown) summarizes devices that have a newer release than they are running.

IDFM compares discovered device versions against the firmware catalog and images you have stored locally.

Download firmware (online)

  1. Open FIRMWARE.
  2. Download the images you need for the models on site.
  3. Files are kept on the PC so you can update later without internet.

Local store (created by the app):

~/Innosonix/IDFM/firmwareStorageFolderIDFM/

(On Windows, under your user home directory with the same folder names.)

Import firmware (offline)

When the commissioning PC has no internet:

  1. On a connected machine, download .inx files from the downloads page (or download them inside IDFM and copy from the store above).
  2. Transfer via USB or similar.
  3. In IDFM FIRMWARE, import the .inx file(s).

Update devices

  1. On DEVICES, select the units to update (or open update from the toolbar).
  2. Choose UPDATE DEVICES / the firmware update flow.
  3. Confirm the target image per model.
  4. Start the update and wait until each unit finishes and returns to a running state.

You can update multiple devices in one session when images are already local.

Expected result

Device firmware columns show the new version. Amps reboot as required and come back online in the list.

Manual bootloader fallback (MAXX²)

On MAXX² amplifiers with a front-panel display (for example MA32/D², MA32/LP², and similar models), you can force the device into bootloader mode from the front panel. Use this when you want more manual control over the update workflow, or as a recovery path when a normal update does not start.

Steps

  1. Power the amplifier off.
  2. Hold ESC + OK on the front panel.
  3. Power the amplifier on while keeping ESC + OK held until it enters bootloader mode.
  4. In IDFM, select the device and run the firmware update with the correct .inx image (see Update devices above).

Expected result

The amp appears ready for an IDFM update from bootloader / loader state. After the update finishes, it returns to a normal running status.

1.4 - Troubleshoot

Troubleshoot IDFM when amplifiers are missing, UDP discovery fails across VLANs, or firmware updates do not complete.

Goal / when to use

IDFM does not list a device, UDP looks broken, or a firmware update fails. Match the symptom below.

Device missing from the list

Symptoms

DEVICES stays empty or omits a known amp.

Steps

  1. Confirm PC and amp share the same L2 segment if you expect UDP discovery.
  2. Check UDP STATUS — see Install.
  3. Windows: use HELP → FAQ actions to re-apply firewall allow rules for IDFM.
  4. If you know the IP, use + → add by IP.
  5. If the amp is on another routed subnet, use subnet scan — broadcast will not cross the router.
  6. Confirm only one IDFM instance is running.

Expected result

The amp appears via UDP or as a manually added / scanned device.

Port already in use

Symptoms

Message that the required port is already in use.

Steps

  1. Quit other IDFM windows / instances.
  2. Restart IDFM.
  3. If it persists, check whether another tool on the PC is bound to UDP 9453.

Expected result

Discovery starts; UDP STATUS is healthy.

Routed VLANs / no automatic discovery

Symptoms

Amps never appear until you type an IP; Maxx Remote discovery is also empty on the same PC.

Why

UDP broadcast (9453 to 255.255.255.255) stops at routers. That is expected.

Steps

  1. Add by IP or scan the remote /24 — see Discover and IP.
  2. Ensure the PC can ping and reach device HTTP (REST) on that VLAN.
  3. After IP plan is correct, Maxx Remote can use manual add the same way — see Maxx Remote · Prerequisites.

Firmware update fails

Symptoms

Update warning about subnet / reachability; device stuck in loader; progress never finishes.

Steps

  1. Put the PC on the same subnet as the amp management IP (unicast path for loader TCP 9454 / update). UDP discovery alone is not enough.
  2. Download or import the correct .inx for that model first (FIRMWARE tab).
  3. If the unit is already waiting in the loader and still unreachable from your current network, connect the PC directly to the amp (or fix routing) and retry.
  4. Do not power-cycle during the update unless support instructs you to.
  5. If you need a more manual recovery path on a MAXX² front-panel amp, force bootloader mode with ESC + OK at power-up, then update from IDFM — see Manual bootloader fallback.

Expected result

Update completes; device returns to a running status with the new version.

2 - Maxx Control (MaxxControl)

Maxx Control (MaxxControl): per-amplifier web UI and open REST API. Control one amp in the browser; use Maxx Remote when you need multi-amp projects.

Maxx Control (also written MaxxControl) is the control surface built into every Innosonix amplifier: a browser web UI plus an open REST API on the device. Use it for one amplifier when you want local control with no desktop install, or when a media-control / home-automation system should talk to a single amp. That includes micro MAXX — same webpage and API as other MAXX models. For many amplifiers, rooms/groups, and offline projects, use Maxx Remote instead.

When to use what

NeedTool
One amp, quick local tweaks, no installMaxx Control (this section)
Many amps, rooms/groups, offline projects, undoMaxx Remote
Network / IP / firmwareIDFM first

Access (brief)

  1. Set a reachable IP (and hostname) with IDFM, or use the address shown on the device front panel.
  2. Open the UI in a browser: http://<ip>/ (many networks also accept http://<hostname>.local/).
  3. On-device REST documentation (full OpenAPI / Swagger): OVERVIEW page → REST API DOC (lower right), served as http://<ip>/…/doc/maxx_rest_api.html.

HTTP is on port 80. The API base path is /rest-api.

What this docs site covers

This section focuses on REST API usage for integrators and third-party systems, plus third-party plugins that wrap that API.

Start here

  1. REST API overview — auth, hierarchy, OPTIONS, where the full schema lives
  2. REST API use cases — mute, volume, status, save, EQ, and more under Common use cases
  3. AES67 / SDP subscribe — patch a channel to an AES67 / SDP stream
  4. Third-party plugins — Q-SYS, Loxone, and similar (single device each)

2.1 - REST API

Maxx Control REST API on each Innosonix amplifier: auth, hierarchy, OPTIONS, AES67 / SDP subscribe, and where the full OpenAPI lives.

Every amplifier exposes a hierarchical JSON REST API used by Maxx Control itself and by third-party systems. Prefer this API for single-device integration. For project-level multi-amp control, use the Maxx Remote HTTP API instead.

Base URL and transport

ItemValue
Scheme / porthttp:// on port 80
Base path/rest-api
Examplehttp://${IP}/rest-api/settings/channel/1/dsp/mute

Methods you will use most: GET (read), PUT (write / partial update), OPTIONS (allowed ranges and constraints), plus POST / DELETE on a few resources (for example EQ bands).

Authentication

Write operations that change settings require an API key in the HTTP header:

HeaderDefault value
tokenf4005bf8507999192162d989d5a60823

Defined in OpenAPI as ApiKeyAuth (token in header). GET and most OPTIONS calls do not require the token. Most PUT (and many DELETE) calls do — check the on-device OpenAPI for each path; a few DELETE endpoints are unauthenticated in the schema.

curl -X PUT "http://${IP}/rest-api/settings/channel/1/dsp/mute" \
  -H "token: f4005bf8507999192162d989d5a60823" \
  -H "Content-Type: application/json" \
  -d '{"value": true}'

Hierarchical resources

The tree is organized under /settings (configuration), /status (live state), /info, /preset, and helpers such as /speakerpreset. Channel resources nest DSP blocks (volume, mute, EQ, FIR, limiters, …); device resources cover master mute/volume, Dante, network, and more.

You can:

  • PUT a deep leaf, e.g. …/settings/channel/1/dsp/mute
  • PUT a parent with a partial JSON object, e.g. …/settings/channel with an array of channel objects
  • PUT …/settings with a larger tree when you need a wide update in one call

Example shape under settings (not exhaustive):

settings/
  channel/
    {channel_id}/
      ampenable
      dsp/
        delay | eq | eqenable | fir | mute | volume | …
  device/
    dsp/ (mute, volume, …)
    dante/
    network/

Partial updates are the normal pattern: send only the fields you want to change.

OPTIONS = parameter constraints

OPTIONS on a resource returns the allowed parameter space for that property (min / max / step / unit, enums, string lengths, and similar). Use it when building UIs or validating values before PUT — especially for volume, delay, limiters, and names.

Example: discover channel volume limits:

curl -X OPTIONS "http://${IP}/rest-api/settings/channel/1/dsp/volume"

Exact response fields vary by resource; see the on-device OpenAPI schemas (for example NumberOptions).

Full OpenAPI (source of truth)

This site documents common integrator patterns. The complete, firmware-matching schema is on the device:

  1. Open Maxx Control → OVERVIEW
  2. Click REST API DOC (lower right)

That opens the Swagger UI for maxx_rest_api.html (generated from the device OpenAPI). Always trust the on-device docs for path lists and schemas for your firmware version.

Common use cases

GoalSee
Mute / unmute a channel or masterMute control
Set channel, master, or multi-zone volumeVolume control
AES67 / SDP subscribe (channel input patch)AES67 / SDP subscribe
Enable / disable channel EQEQ enable control
Read device info and health-oriented statusDevice information
Persist settings to the deviceSave / persist
Amp channel power (ampenable)Amp enable
Device-level mute / volume / startupDevice control
Channel namingChannel name
Input patchInput patch

Third-party plugins (Q-SYS, Loxone, …) use this same API against one amplifier each — see Third-party plugins.

2.1.1 - Maxx Control REST: Set channel names

Maxx Control REST: get and set channel names for zones, UI labels, and home-automation integrations.

Use the Maxx Control REST API to get and set channel names so zones and automation UIs stay readable. Names can contain alphanumeric characters, spaces, and special characters.

Get Channel Name

Retrieve the current name of a channel:

curl -X 'GET' http://${IP}/rest-api/settings/channel/1/name
{
  "value": "Living Room Left"
}

Set Channel Name

Set or update the name of a channel. Channel names can be up to 256 characters and support:

  • Letters (a-z, A-Z)
  • Numbers (0-9)
  • Spaces
  • Special characters: äöü:_()!%+*#-
curl -X 'PUT' http://${IP}/rest-api/settings/channel/1/name \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": "Living Room Left"
}'
{
  "value": "Living Room Left"
}

Set Multiple Channel Names

Set names for multiple channels in a single request:

curl -X 'PUT' http://${IP}/rest-api/settings/channel/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '[
  {
    "channel_id": 1,
    "name": {
      "value": "Living Room Left"
    }
  },
  {
    "channel_id": 2,
    "name": {
      "value": "Living Room Right"
    }
  },
  {
    "channel_id": 3,
    "name": {
      "value": "Kitchen"
    }
  },
  {
    "channel_id": 4,
    "name": {
      "value": "Bedroom"
    }
  }
]'
[
  {
    "channel_id": 1,
    "name": {
      "value": "Living Room Left"
    }
  },
  {
    "channel_id": 2,
    "name": {
      "value": "Living Room Right"
    }
  },
  {
    "channel_id": 3,
    "name": {
      "value": "Kitchen"
    }
  },
  {
    "channel_id": 4,
    "name": {
      "value": "Bedroom"
    }
  }
]

Get Maximum Channel Name Length

Check the maximum allowed length for channel names:

curl -X 'OPTIONS' http://${IP}/rest-api/settings/channel/1/name
{
  "length": 256
}

Example: Naming a Multi-Zone Setup

Here’s a practical example for naming channels in a multi-zone audio system:

curl -X 'PUT' http://${IP}/rest-api/settings/channel/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '[
  {
    "channel_id": 1,
    "name": {
      "value": "Zone 1 - Main"
    }
  },
  {
    "channel_id": 2,
    "name": {
      "value": "Zone 2 - Kitchen"
    }
  },
  {
    "channel_id": 3,
    "name": {
      "value": "Zone 3 - Bedroom"
    }
  },
  {
    "channel_id": 4,
    "name": {
      "value": "Zone 4 - Office"
    }
  }
]'
[
  {
    "channel_id": 1,
    "name": {
      "value": "Zone 1 - Main"
    }
  },
  {
    "channel_id": 2,
    "name": {
      "value": "Zone 2 - Kitchen"
    }
  },
  {
    "channel_id": 3,
    "name": {
      "value": "Zone 3 - Bedroom"
    }
  },
  {
    "channel_id": 4,
    "name": {
      "value": "Zone 4 - Office"
    }
  }
]

Tip: Use descriptive channel names to make your system easier to manage, especially when integrating with home automation systems or control interfaces.

2.1.2 - Maxx Control REST: Control device mute and volume

Maxx Control REST: set device master mute, master volume, and startup mute for one Innosonix amplifier.

Use the Maxx Control REST API to set device-level master mute, master volume, and startup mute on one amplifier. These controls affect all channels globally — useful for emergency mute, master volume, and safe startup behavior.

Device Mute

The device mute acts as a master mute that affects all channels, regardless of individual channel mute settings.

Get Device Mute State

curl -X 'GET' http://${IP}/rest-api/settings/device/dsp/mute
{
  "value": false
}

Set Device Mute

curl -X 'PUT' http://${IP}/rest-api/settings/device/dsp/mute \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": true
}'
curl -X 'PUT' http://${IP}/rest-api/settings/device/dsp/mute \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": false
}'

Device Volume

The device volume acts as a master volume control that affects all channels. Individual channel volumes are relative to this setting.

Get Device Volume

curl -X 'GET' http://${IP}/rest-api/settings/device/dsp/volume
{
  "value": 0.0
}

Set Device Volume

curl -X 'PUT' http://${IP}/rest-api/settings/device/dsp/volume \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": -5.0
}'
{
  "value": -5.0
}

Note: Device volume range is -72.0 dB to +24.0 dB. This setting affects all channels globally.

Startup Mute

Configure whether the device should start muted after a reboot or power cycle.

Get Startup Mute Setting

curl -X 'GET' http://${IP}/rest-api/settings/device/dsp/startupmute
{
  "value": false
}

Set Startup Mute

When enabled, the device will start muted after reboot or power cycle:

curl -X 'PUT' http://${IP}/rest-api/settings/device/dsp/startupmute \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": true
}'
curl -X 'PUT' http://${IP}/rest-api/settings/device/dsp/startupmute \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": false
}'

Use Case: Enable startup mute to prevent audio from playing immediately after power restoration, giving you time to verify system status before audio begins.

Complete Device Control Example

Here’s an example that combines multiple device-level controls:

# Set device to start muted
curl -X 'PUT' http://${IP}/rest-api/settings/device/dsp/startupmute \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{"value": true}'

# Set master volume to a safe level
curl -X 'PUT' http://${IP}/rest-api/settings/device/dsp/volume \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{"value": -10.0}'

# Unmute device when ready
curl -X 'PUT' http://${IP}/rest-api/settings/device/dsp/mute \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{"value": false}'

2.1.3 - Device Information

Examples for retrieving device information

Getting Device Information

The device information endpoint provides details about your amplifier model, available channels, installed options, and hardware features.

Get Device Information

Retrieve all device information with a simple GET request:

curl -X 'GET' http://${IP}/rest-api/info/device
{
  "model_name": "MA32D",
  "channel": 32,
  "options": ["IF1", "IF2", "D1", "D2"],
  "psu_fan": true,
  "housing_fan": true
}

Understanding the Response

  • model_name: The amplifier model (e.g., MA32D, MA32LP, MA24D2)
  • channel: Number of available channels (16-32)
  • options: Array of installed options:
    • IF1, IF2, IF3: Interface options
    • D1, D2, D3: Dante options
    • M1: Additional options
  • psu_fan: Whether PSU fan is installed
  • housing_fan: Whether housing fan is installed

This information is useful for:

  • Verifying device capabilities before making API calls
  • Determining available channel count
  • Checking installed hardware options
  • Building device-specific automation logic

Status snapshot

Read calls do not need the token.

GET /status returns the full status tree (channels, device, interfaces, save state, syslog summary).

curl "http://${IP}/rest-api/status"

Health-oriented errors

GET /status/error aggregates channel and device errors with severity and status_flags (error / warning / ok).

curl "http://${IP}/rest-api/status/error"

Narrower reads are available, for example GET /status/device or GET /status/channel/{channel_id} — see on-device OpenAPI.

2.1.4 - Maxx Control REST: Enable or disable EQ

Maxx Control REST: enable or disable channel EQ (eqenable) with single-channel and multi-channel PUT examples.

Use the Maxx Control REST API to enable or disable channel EQ (eqenable) — bypass the whole equalizer for testing or mode changes while keeping filter settings intact.

Enable EQ for Multiple Channels

Enable the equalizer for multiple channels in a single request:

curl -X 'PUT' http://${IP}/rest-api/settings/channel/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '[
  {
    "channel_id": 1,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 3,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  }
]'
[
  {
    "channel_id": 1,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 3,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  }
]

Disable EQ for Multiple Channels

Disable the equalizer for multiple channels:

curl -X 'PUT' http://${IP}/rest-api/settings/channel/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '[
  {
    "channel_id": 1,
    "dsp": {
      "eqenable": {
        "value": false
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "eqenable": {
        "value": false
      }
    }
  },
  {
    "channel_id": 3,
    "dsp": {
      "eqenable": {
        "value": false
      }
    }
  }
]'
[
  {
    "channel_id": 1,
    "dsp": {
      "eqenable": {
        "value": false
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "eqenable": {
        "value": false
      }
    }
  },
  {
    "channel_id": 3,
    "dsp": {
      "eqenable": {
        "value": false
      }
    }
  }
]

Single Channel EQ Control

Enable or disable EQ for a single channel:

curl -X 'PUT' http://${IP}/rest-api/settings/channel/1/dsp/eqenable \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": true
}'
curl -X 'PUT' http://${IP}/rest-api/settings/channel/1/dsp/eqenable \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": false
}'

Get EQ Enable State

Check if EQ is enabled for a channel:

curl -X 'GET' http://${IP}/rest-api/settings/channel/1/dsp/eqenable
{
  "value": true
}

Multizone Example

Example for controlling EQ across multiple zones (channels 1, 2, 3, 11, 12, 13):

curl -X 'PUT' http://${IP}/rest-api/settings/channel/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '[
  {
    "channel_id": 1,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 3,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 11,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 12,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 13,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  }
]'
[
  {
    "channel_id": 1,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 3,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 11,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 12,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  },
  {
    "channel_id": 13,
    "dsp": {
      "eqenable": {
        "value": true
      }
    }
  }
]

Note: When EQ is disabled, all equalizer settings (filters, gains, etc.) are bypassed, but the settings themselves are preserved. Re-enabling EQ will restore the previous equalizer configuration.

2.1.5 - Mute Control

Examples for controlling channel and device mute states

Channel Mute Control

Mute control allows you to silence individual channels or the entire device.

Get Channel Mute State

Check if a channel is currently muted:

curl -X 'GET' http://${IP}/rest-api/settings/channel/1/dsp/mute
{
  "value": false
}

Mute a Single Channel

Mute a specific channel:

curl -X 'PUT' http://${IP}/rest-api/settings/channel/1/dsp/mute \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": true
}'
{
  "value": true
}

Unmute a Single Channel

Unmute a specific channel:

curl -X 'PUT' http://${IP}/rest-api/settings/channel/1/dsp/mute \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": false
}'
{
  "value": false
}

Mute Multiple Channels

Mute or unmute multiple channels in a single request:

curl -X 'PUT' http://${IP}/rest-api/settings/channel/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '[
  {
    "channel_id": 1,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  },
  {
    "channel_id": 3,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  }
]'
[
  {
    "channel_id": 1,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  },
  {
    "channel_id": 3,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  }
]

Toggle Mute for Multiple Channels

Toggle mute state for multiple channels (mute some, unmute others):

curl -X 'PUT' http://${IP}/rest-api/settings/channel/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '[
  {
    "channel_id": 1,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "mute": {
        "value": false
      }
    }
  }
]'
[
  {
    "channel_id": 1,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "mute": {
        "value": false
      }
    }
  }
]

Device Mute Control

Control the main device mute that affects all channels:

Get Device Mute State

curl -X 'GET' http://${IP}/rest-api/settings/device/dsp/mute
{
  "value": false
}

Set Device Mute

curl -X 'PUT' http://${IP}/rest-api/settings/device/dsp/mute \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": true
}'
curl -X 'PUT' http://${IP}/rest-api/settings/device/dsp/mute \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": false
}'

Note: Device mute acts as a master mute control. When device mute is enabled, all channels are muted regardless of individual channel mute settings.

2.1.6 - Volume Control

Examples for controlling channel and device volume

Channel Volume Control

Volume control is one of the most common operations. You can control individual channels or multiple channels at once.

Get Channel Volume

Retrieve the current volume setting for a specific channel:

curl -X 'GET' http://${IP}/rest-api/settings/channel/1/dsp/volume
{
  "value": -10.5
}

Set Single Channel Volume

Set the volume for a single channel. Volume range is -72.0 dB to +24.0 dB:

curl -X 'PUT' http://${IP}/rest-api/settings/channel/1/dsp/volume \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": -10.5
}'
{
  "value": -10.5
}

Set Multiple Channel Volumes

Update volumes for multiple channels in a single request. This is more efficient than individual calls:

curl -X 'PUT' http://${IP}/rest-api/settings/channel/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '[
  {
    "channel_id": 1,
    "dsp": {
      "volume": {
        "value": -10.5
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "volume": {
        "value": -12.0
      }
    }
  },
  {
    "channel_id": 3,
    "dsp": {
      "volume": {
        "value": -8.5
      }
    }
  }
]'
[
  {
    "channel_id": 1,
    "dsp": {
      "volume": {
        "value": -10.5
      }
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "volume": {
        "value": -12.0
      }
    }
  },
  {
    "channel_id": 3,
    "dsp": {
      "volume": {
        "value": -8.5
      }
    }
  }
]

Get Volume Parameter Range

Check the valid volume range and step size for a channel:

curl -X 'OPTIONS' http://${IP}/rest-api/settings/channel/1/dsp/volume
{
  "value": [-72.0, 24.0, 0.1, "dB"]
}

The response format is [MIN, MAX, STEP, UNIT]:

  • MIN: -72.0 dB (minimum volume)
  • MAX: 24.0 dB (maximum volume)
  • STEP: 0.1 dB (volume adjustment step)
  • UNIT: “dB” (decibels)

Device Volume Control

Control the main device volume that affects all channels:

Get Device Volume

curl -X 'GET' http://${IP}/rest-api/settings/device/dsp/volume
{
  "value": 0.0
}

Set Device Volume

curl -X 'PUT' http://${IP}/rest-api/settings/device/dsp/volume \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "value": -5.0
}'
{
  "value": -5.0
}

Note: Device volume acts as a master volume control affecting all channels. Individual channel volumes are relative to this device volume setting.

2.1.7 - AES67 / SDP subscribe

Maxx Control REST: subscribe a channel input to an AES67 / SDP stream (source_id 25) by PUTting sdp_text or rtp_flow.

Subscribe an amplifier channel DSP patch to an external AES67 / SDP audio source. This is the same path Maxx Control’s channel-input UI uses when you paste SDP or pick a discovered AES67 flow.

When to use

Use this when a third-party sender (PipeWire, another AES67 device, etc.) publishes an SDP session and you want a MAXX channel to receive that multicast/unicast RTP stream as its input source AES67 STREAM (source_id 25).

Do not confuse this with:

API conceptsource_idTypical fields
AES67 STREAM25sdp_text (PUT) or rtp_flow
DANTE STREAM23label / channel_name / device_name
Device Dante AES67 moden/aPUT /settings/device/dante/aes67 with {"value": true|false}

Dante AES67 enable is a separate device setting (Brooklyn AES67 mode). AES67 STREAM patches use the channel patch API below.

Prerequisites

  • Amplifier reachable at http://${IP}/rest-api/… (see REST API overview).

  • Firmware that exposes AES67 STREAM as an input source. Confirm with:

    curl -X OPTIONS "http://${IP}/rest-api/settings/channel/1/dsp/patch"
    

    Look for source_id: 25 / "AES67 STREAM" in the source list.

  • A complete SDP the device can parse (see SDP requirements below).

  • Write calls need the API key header token (default documented in the overview).

API path and method

ItemValue
MethodPUT (writes require token)
Path/settings/channel/{channel_id}/dsp/patch
BodyJSON array of patch objects (SettingsPatches)
Read backGET same path (or …/patch/{patch_id})
ConstraintsOPTIONS on the same path

There is no PUT on /settings/channel/{channel_id}/dsp/patch/{patch_id} — only GET for a single patch. Writes always go to the collection path with one or more objects in the array.

Payload fields (AES67 STREAM)

FieldRole
patch_idRequired. Patch slot on the channel (116).
source_id25 for AES67 STREAM.
channelSlot within the RTP stream (1N from SDP a=rtpmap channel count), not the Brooklyn RX channel.
sdp_textPUT-only, at patch root. Full SDP string; server parses into flow params. Max length 512. Not returned on GET.
rtp_flowAlternative to sdp_text: structured fields (connection_ip, rtp_port, sample_rate, encoding, channels, session_name, clock_offset, session_id, source_address). Returned on GET after a successful subscribe.
gainOptional patch gain (dB).
muteOptional patch mute.
stream_channelGET-only Brooklyn RX channel assigned after placement (0 until placed). Do not send on PUT.

Rules from firmware / OpenAPI:

  • Put sdp_text on the patch object root. Nested rtp_flow.sdp_text is rejected.
  • Do not send sdp_text and structured rtp_flow params together.
  • Prefer one approach: paste SDP or fill rtp_flow.

SDP requirements

Server-side parse (same as Maxx Control paste) requires a parseable AES67 SDP with:

  • PCM encoding L16 or L24 (encoding 16 or 24)
  • o= session id and origin IPv4 (source address)
  • a=mediaclk:direct=… (or equivalent) so clock offset is present

OpenAPI maxLength for sdp_text is 512 characters. Trim optional SDP lines if you hit the limit.

Step-by-step: PUT with sdp_text

  1. Choose amp channel (channel_id) and patch (patch_id, often 1).
  2. Choose stream slot (channel: 1 = first channel in the SDP, 2 = second, …).
  3. PUT an array with one AES67 patch object including sdp_text.
  4. GET the patch back — expect source_id 25 and populated rtp_flow (not sdp_text).
  5. Optionally check patch status and persist with /settings/save.

Example SDP

v=0
o=root 1 3991817848 IN IP4 172.149.4.123
s=stream1
c=IN IP4 239.192.150.1/32
t=3991817848 0
m=audio 5004 RTP/AVP 127
i=2 channels: L, R
a=recvonly
a=rtpmap:127 L24/48000/2
a=source-filter: incl IN IP4 239.192.150.1 172.149.4.123
a=ssrc:2393712005
a=ptime:1.000000
a=framecount:48
a=ts-refclk:ptp=IEEE1588-2008:00-1D-C1-FF-FE-29-1C-8A:0
a=mediaclk:direct=2626298912
a=tool:PipeWire 1.6.7
a=type:broadcast

This session is 2 channels at 48 kHz / L24. Use "channel": 1 for L and "channel": 2 for R on two amp channels (or two patches) if needed.

JSON shape

[
  {
    "patch_id": 1,
    "source_id": 25,
    "channel": 1,
    "gain": 0.0,
    "sdp_text": "v=0\no=root 1 3991817848 IN IP4 172.149.4.123\ns=stream1\n…"
  }
]

Newlines in SDP must be encoded inside the JSON string (\n). Do not put raw multi-line SDP inside a single-quoted -d '…' shell string unless you build JSON with a tool.

export IP=10.77.150.42
export TOKEN=f4005bf8507999192162d989d5a60823

BODY=$(python3 - <<'PY'
import json
sdp = """v=0
o=root 1 3991817848 IN IP4 172.149.4.123
s=stream1
c=IN IP4 239.192.150.1/32
t=3991817848 0
m=audio 5004 RTP/AVP 127
i=2 channels: L, R
a=recvonly
a=rtpmap:127 L24/48000/2
a=source-filter: incl IN IP4 239.192.150.1 172.149.4.123
a=ssrc:2393712005
a=ptime:1.000000
a=framecount:48
a=ts-refclk:ptp=IEEE1588-2008:00-1D-C1-FF-FE-29-1C-8A:0
a=mediaclk:direct=2626298912
a=tool:PipeWire 1.6.7
a=type:broadcast"""
print(json.dumps([{
    "patch_id": 1,
    "source_id": 25,
    "channel": 1,
    "gain": 0.0,
    "sdp_text": sdp,
}]))
PY
)

curl -X PUT "http://${IP}/rest-api/settings/channel/1/dsp/patch" \
  -H "token: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d "${BODY}"

curl (inline \n escapes)

curl -X PUT "http://${IP}/rest-api/settings/channel/1/dsp/patch" \
  -H "token: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '[{"patch_id":1,"source_id":25,"channel":1,"gain":0.0,"sdp_text":"v=0\no=root 1 3991817848 IN IP4 172.149.4.123\ns=stream1\nc=IN IP4 239.192.150.1/32\nt=3991817848 0\nm=audio 5004 RTP/AVP 127\ni=2 channels: L, R\na=recvonly\na=rtpmap:127 L24/48000/2\na=source-filter: incl IN IP4 239.192.150.1 172.149.4.123\na=ssrc:2393712005\na=ptime:1.000000\na=framecount:48\na=ts-refclk:ptp=IEEE1588-2008:00-1D-C1-FF-FE-29-1C-8A:0\na=mediaclk:direct=2626298912\na=tool:PipeWire 1.6.7\na=type:broadcast"}]'

Structured rtp_flow alternative

If you already know the RTP parameters (or you copied them from a GET after an SDP PUT):

curl -X PUT "http://${IP}/rest-api/settings/channel/1/dsp/patch" \
  -H "token: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d '[{
    "patch_id": 1,
    "source_id": 25,
    "channel": 1,
    "gain": 0.0,
    "rtp_flow": {
      "connection_ip": "239.192.150.1",
      "rtp_port": 5004,
      "sample_rate": 48000,
      "encoding": 24,
      "channels": 2,
      "session_name": "stream1",
      "clock_offset": 2626298912,
      "session_id": "3991817848",
      "source_address": "172.149.4.123"
    }
  }]'

Exact field meaning matches OpenAPI schema SettingsPatch / rtp_flow.

Verify

# Settings: parsed flow (sdp_text is write-only — not echoed)
curl "http://${IP}/rest-api/settings/channel/1/dsp/patch/1"

# Patch health
curl "http://${IP}/rest-api/status/channel/1/dsp/patch/1"

# Optional: SAP-discovered sessions (cache; may include sdp_text)
curl "http://${IP}/rest-api/info/aes67"

# Optional: Dante interface flows (interface_id from GET /status/interface/interfaces)
curl "http://${IP}/rest-api/status/interface/interfaces/4"

Persist runtime settings if needed:

curl -X PUT "http://${IP}/rest-api/settings/save" \
  -H "token: ${TOKEN}"
PathMethodPurpose
/info/aes67GETSAP-discovered AES67 flows (cache)
/info/aes67/refreshPUTClear SAP cache (listening continues)
/settings/device/dante/aes67GET/PUTDevice Dante AES67 enable ({"value": bool})

Source of truth

Path lists and schemas follow the on-device OpenAPI (Maxx Control → OVERVIEWREST API DOC). Firmware versions can add fields; always confirm SettingsPatch on the live device. See also the REST API overview and input patch recipes.

2.1.8 - Maxx Control REST: Switch input patches

Maxx Control REST: switch amplifier channel input patches (Dante and other sources) with bulk or per-channel PUT examples.

Use the Maxx Control REST API to switch channel input patches (for example Dante slots) with a bulk PUT or per-channel calls. When switching between inputs, there are multiple approaches:

Changing the Input Patch itself

Example Configuration for CH1, CH2, CH4, CH7, switch between Dante Input 1-4 and Dante Input 21-24

HTTP Put a full json object containing all affected Channels into the http://${IP}/rest-api/settings/channel/ path

Advantage: Using the bulk endpoint /settings/channel/ allows you to patch multiple channels in a single HTTP call, which is more efficient than making individual calls for each channel. This reduces network overhead and ensures all channels are updated atomically.

To determine the source_id of the desired Interfaces, perform an HTTP OPTION call to http://${IP}/rest-api/settings/channel/1/dsp/patch' to get a list of available interfaces.

[
  {
    "channel_id": 1,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "source_id": 4,
          "channel": 1
        }
      ]
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "source_id": 4,
          "channel": 2
        }
      ]
    }
  },
  {
    "channel_id": 4,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "source_id": 4,
          "channel": 3
        }
      ]
    }
  },
  {
    "channel_id": 7,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "source_id": 4,
          "channel": 4
        }
      ]
    }
  }
]
[
  {
    "channel_id": 1,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "source_id": 4,
          "channel": 21,
          "gain": 0.0,
          "mute": false
        }
      ]
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "source_id": 4,
          "channel": 22,
          "gain": 0.0,
          "mute": false
        }
      ]
    }
  },
  {
    "channel_id": 4,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "source_id": 4,
          "channel": 23,
          "gain": 0.0,
          "mute": false
        }
      ]
    }
  },
  {
    "channel_id": 7,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "source_id": 4,
          "channel": 24,
          "gain": 0.0,
          "mute": false
        }
      ]
    }
  }
]

Patching Channels Individually

Alternatively, you can patch each channel individually by making separate HTTP PUT calls to each channel’s endpoint: http://${IP}/rest-api/settings/channel/{channel_id}/

This approach allows you to update channels one at a time, which can be useful when you need to patch channels conditionally or handle errors per channel.

curl -X 'PUT' http://${IP}/rest-api/settings/channel/1/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 1,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "source_id": 4,
        "channel": 1
      }
    ]
  }
}'
curl -X 'PUT' http://${IP}/rest-api/settings/channel/2/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 2,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "source_id": 4,
        "channel": 2
      }
    ]
  }
}'
curl -X 'PUT' http://${IP}/rest-api/settings/channel/4/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 4,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "source_id": 4,
        "channel": 3
      }
    ]
  }
}'
curl -X 'PUT' http://${IP}/rest-api/settings/channel/7/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 7,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "source_id": 4,
        "channel": 4
      }
    ]
  }
}'
curl -X 'PUT' http://${IP}/rest-api/settings/channel/1/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 1,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "source_id": 4,
        "channel": 21,
        "gain": 0.0,
        "mute": false
      }
    ]
  }
}'
curl -X 'PUT' http://${IP}/rest-api/settings/channel/2/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 2,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "source_id": 4,
        "channel": 22,
        "gain": 0.0,
        "mute": false
      }
    ]
  }
}'
curl -X 'PUT' http://${IP}/rest-api/settings/channel/4/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 4,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "source_id": 4,
        "channel": 23,
        "gain": 0.0,
        "mute": false
      }
    ]
  }
}'
curl -X 'PUT' http://${IP}/rest-api/settings/channel/7/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 7,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "source_id": 4,
        "channel": 24,
        "gain": 0.0,
        "mute": false
      }
    ]
  }
}'

Toggle Mute between channels

Assuming we’ve already patched our desired Inputs for each channel on Slot 1 and 2

When inputs are already patched, you can toggle the mute state between different patch slots (e.g., Slot 1 and Slot 2) by only updating the mute flag in the patch object. This is more efficient than repatching the entire input configuration.

HTTP Put a JSON object containing all affected Channels into the http://${IP}/rest-api/settings/channel/ path, specifying only the patch_id and mute flag for each patch slot.

[
  {
    "channel_id": 1,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "mute": true
        },
        {
          "patch_id": 2,
          "mute": false
        }
      ]
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "mute": true
        },
        {
          "patch_id": 2,
          "mute": false
        }
      ]
    }
  },
  {
    "channel_id": 4,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "mute": true
        },
        {
          "patch_id": 2,
          "mute": false
        }
      ]
    }
  },
  {
    "channel_id": 7,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "mute": true
        },
        {
          "patch_id": 2,
          "mute": false
        }
      ]
    }
  }
]
[
  {
    "channel_id": 1,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "mute": false
        },
        {
          "patch_id": 2,
          "mute": true
        }
      ]
    }
  },
  {
    "channel_id": 2,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "mute": false
        },
        {
          "patch_id": 2,
          "mute": true
        }
      ]
    }
  },
  {
    "channel_id": 4,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "mute": false
        },
        {
          "patch_id": 2,
          "mute": true
        }
      ]
    }
  },
  {
    "channel_id": 7,
    "dsp": {
      "patch": [
        {
          "patch_id": 1,
          "mute": false
        },
        {
          "patch_id": 2,
          "mute": true
        }
      ]
    }
  }
]

Toggling Mute on Individual Channels

You can also toggle mute on individual channels by making separate HTTP PUT calls to each channel’s endpoint: http://${IP}/rest-api/settings/channel/{channel_id}/

curl -X 'PUT' http://${IP}/rest-api/settings/channel/1/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 1,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "mute": true
      },
      {
        "patch_id": 2,
        "mute": false
      }
    ]
  }
}'
curl -X 'PUT' http://${IP}/rest-api/settings/channel/2/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 2,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "mute": true
      },
      {
        "patch_id": 2,
        "mute": false
      }
    ]
  }
}'
curl -X 'PUT' http://${IP}/rest-api/settings/channel/4/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 4,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "mute": true
      },
      {
        "patch_id": 2,
        "mute": false
      }
    ]
  }
}'
curl -X 'PUT' http://${IP}/rest-api/settings/channel/7/ \
-H 'Content-Type: application/json' \
-H 'token: f4005bf8507999192162d989d5a60823' \
-d '{
  "channel_id": 7,
  "dsp": {
    "patch": [
      {
        "patch_id": 1,
        "mute": true
      },
      {
        "patch_id": 2,
        "mute": false
      }
    ]
  }
}'

2.1.9 - Amp enable

Power-enable channel amplifier stages via ampenable (distinct from mute).

Power-enable a channel amplifier stage (distinct from mute):

PUT /settings/channel/{channel_id}/ampenable

curl -X PUT "http://${IP}/rest-api/settings/channel/1/ampenable" \
  -H "token: f4005bf8507999192162d989d5a60823" \
  -H "Content-Type: application/json" \
  -d '{"value": true}'

Use "value": false to disable. Multi-channel updates can go through PUT /settings/channel with ampenable on each object.

2.1.10 - Save / persist

Persist runtime REST changes with /settings/save and check save status.

Runtime changes are held until they are saved. Trigger a manual save with:

PUT /settings/save (token required; no JSON body)

curl -X PUT "http://${IP}/rest-api/settings/save" \
  -H "token: f4005bf8507999192162d989d5a60823"

Check save / autosave state with GET /status/save.

2.2 - Third Party Plugins

Third-party plugins that use the Maxx Control REST API against a single amplifier.

These plugins use the device REST API to control one amplifier each. For multi-amp project control, use Maxx Remote instead.

2.2.1 - Loxone Maxx Control plugin

Install the Loxone Maxx Control plugin and MAXX-CONTROL / MAXX-STATUS templates to control one Innosonix amplifier from Loxone Config.

Loxone integrators can control one Innosonix amplifier via Maxx Control using the Loxone Library plugins and example templates. Install the add-ons into Loxone Config, point each instance at the amp IP (or hostname.local), and drive mute, volume, and status over the device REST API.

What is the Loxone Maxx Control plugin?

The Loxone Maxx Control integration is a set of .LxAddon plugins from the Loxone Library that talk to a single amplifier’s Maxx Control REST API. Instantiate a plugin once per physical device.

Which Loxone templates do I need?

Because Loxone can only combine either Virtual Inputs or Virtual Outputs in a template file, two different templates have to be installed:

  • MAXX-CONTROL which allows to set parameters to the amplifier
  • MAXX-STATUS fetches Data from the Amplifier, mainly intended for Channel and Device Status

It’s totally valid to use only one, depending on your needs.

Installation

Download the corresponding .LxAddon Files and install it into your Loxone Config by double clicking or via the Import wizard like:


General

Both Plugins can be instantiated multiple times, as often as you want to control physical devices.


MAXX-CONTROL

Download the MAXX-CONTROL.Loxone example file from the Loxone Library

The Template basically provides the following predefined controls:

  • Channel Power
  • Channel Mute
  • Channel Volume
  • Device Identify
  • Device Master Mute
  • Device Master Volume

and some examples of how to create custom commands for improved performance.


Power / Mute

Simple digital outputs which can be grouped together in any desired combination.


Volume

Similar to Power / Mute Volume will send out any changes for each output as a single http request.

The interesting part here is how to map the common Loxone Analog Values in a range of 0-10 to a dB value for the amplifiers. That can be easily done with the Correction field of each output. The default configuration will map the values of 0-10 to -72dB - +10dB

This will give you almost the full dynamic range of the volume value:


Combined Commands

A basic understanding of the REST-API interface is recommended to create those combined commands.

As a starting point, have a look at the three included examples:

  • Multichannel Mute
  • Multichannel Power
  • Multichannel Volume

Those commands send the same value to multiple channels within a single HTTP request, significantly improving performance when many channels are involved in a call.

Multichannel Mute

Let’s have a look at the HTTP body which is sent out when the DIGITAL OUTPUT is set to ON by clicking on the edit button of that line:

You basically see a JSON payload file containing an ARRAY of single JSON objects for the corresponding channels, indicated by the channel_id tag:

[
  {
    "channel_id": 1,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  },
  {
    "channel_id": 5,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  },
  {
    "channel_id": 7,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  },
  {
    "channel_id": 30,
    "dsp": {
      "mute": {
        "value": true
      }
    }
  }
]

To modify that, simply duplicate the entries:

{
   "channel_id": 1,
   "dsp": {
      "mute": {
         "value": true
      }
   }
},

for each channel, you want to control and change the channel_id to the desired channel number.


MAXX-STATUS

Download the MAXX-STATUS.Loxone example file from the Loxone Library

The MAXX-STATUS Template periodically polls the /rest-api/status URL of the amplifier and filters the response for each channel status/device status.

The raw CHxx STATUS value represents the default syslog severity levels like:

STATUSLevel
0EMERGENCY
1ALERT
2CRITICAL
3ERROR
4WARNING
5NOTICE
6INFORMATIONAL
7DEBUG
8OK

In combination with the provided STATUS component with the following settings:

An easy virtualization can be achieved.

Combining the Val output of each STATUS component with an OR Gate, a simple GLOBAL STATUS can be generated when any channels or device assert any state higher than NOTICE ( see STATUS settings, State value).

2.2.2 - Q-SYS Maxx Control plugin

Install the Q-SYS Maxx Control plugin in Q-SYS Designer 9.8+ to control mute, volume, status, and more on one Innosonix amplifier.

Q-SYS integrators can control one Innosonix amplifier via Maxx Control using the Innosonix Maxx Control plug-in for Q-SYS Designer. Add the plug-in to your design, enter the amp IP, and expose mute, volume, meters, and status to Q-SYS UCIs and logic.

What is the Q-SYS Maxx Control plugin?

Innosonix provides a plug-in that integrates Maxx Series amplifiers (Maxx Control) with the QSC Q-SYS ecosystem. Devices can then be controlled from Q-SYS Designer, Q-SYS compatible user-control interfaces, and GPIO logic on Q-SYS cores and peripherals.

You must be using Q-SYS Designer 9.8 or above.

Control features

  • Ampenable
  • Ch Fault
  • Ch Name
  • Ch Status
  • Connection Status
  • Device Fault
  • Device Status
  • Disable
  • Input Meter Level
  • IP Address
  • Load Monitor Impedance
  • Mute
  • Output Meter Level
  • Output Meter Reduction
  • Volume

Innosonix devices must have firmware version V3.19.4 or above installed to be compatible with the Maxx Control Plug-in. If you are unsure what firmware you device is currently using, please download IDFM to help confirm and if need be install up to date firmware.

For further control and processing capabilties of your Maxx Device please download Maxx Remote

How do I install it in Q-SYS Designer?

  1. Download the Innosonix Maxx Control Plug-in from the Third Party Downloads section of the Downloads section of our website.

  2. Copy the downloaded plug-in file into the My Documents/QSC/Q-Sys Designer/Plugins folder (exact filename is in the download package from the Innosonix website).

  3. Open Q-SYS Designer; the plug-in appears under Schematic Elements → Plugins:

    Image of Plug-in file path

  4. Drag and drop the Plug-in into your design and select it by clicking once on the Plug-in icon.

  5. Control pins can be enabled by ticking the check-boxes in the “Control Pins” section as required:

    Image of the location of the Plug-in Control Pins

  6. Go “Online” with your Q-Sys project. If devices are not connected you can use the “Emulate” function under the “File” tab in the menu above.

  7. Double-click the plug-in icon, open the Global tab, and enter the amplifier IP address. The IP is shown on the device front panel, or use IDFM to discover it:

    Image of Plug-ins global tab page

  8. The “Global Tab” notifies the user of important information on the Innosonix device including:

    • IP Address
    • Model
    • Software Version
    • Serial Number
    • Device Name
    • Device Location
    • Pole Counter
    • Device Status
  9. Select the “Channels Tab”:

    Image of Plug-ins channel tab page

  10. Within the “Channels Tab” the user has the facility to adjust a number of the devices features including:

  • Mute
  • Enable or Disable Channel
  • Volume

Further Assistance:

For any more information please visit feel free to Contact us!

3 - Maxx Remote

Maxx Remote is Innosonix project-based control for multiple amplifiers: design channels and groups, tune offline, then link to real outputs including micro MAXX.

Maxx Remote is the project-based control software for Innosonix amplifiers. You design the system as channels (speakers) and groups (rooms or zones), then link those to real amplifier outputs when the hardware is available. micro MAXX amplifiers have full Maxx Remote support alongside other MAXX models.

What / when / how: use Maxx Remote when one site has many amplifiers or you need room-level groups, offline projects, or undo/redo while tuning. Install the Desktop app or Docker server, create a project, add channels and groups, link devices, then operate from GROUPS / CHANNELS / VIEW.

Use Maxx Remote when you need:

  • One place to tune and operate many amplifiers
  • Groups for room-level volume, mute, EQ, and routing
  • Offline planning before the amps are on site
  • Undo / redo while dialing in a system
  • Operator-friendly VIEW pages for day-to-day control

Desktop vs Server

FormBest forHow you open it
Desktop applicationDesign, commissioning, laptop use on sitePortable app (Windows / macOS / Linux) from the downloads page
Server (Docker)Always-on control in a rack or server roomDocker image; open http://<host>:8000 in a browser

Both forms run the same Maxx Remote server and web UI. The Desktop app includes the server; Docker exposes the same UI on port 8000.

Maxx Remote vs Maxx Control

NeedUse
One amplifier, quick local tweaks, no installMaxx Control (built into each device)
Multiple amplifiers, rooms, groups, offline projectsMaxx Remote
Device network / IP / firmware setupIDFM first

See the full comparison table on the Software overview.

  1. Concept — channels, groups, devices, and how values add up
  2. Installation — Desktop or Docker
  3. Prerequisites — network, discovery, Dante, ports
  4. Quick-Start — L / R / Sub demo with music
  5. Projects — create, save, export, persist on Docker
  6. Build a system — channels, linking, inputs, tuning
  7. Everyday control — operate rooms and VIEW pages
  8. Advanced — multi-way speakers, surround, speaker presets
  9. Troubleshoot — sync, discovery, Dante, device replace
  10. GUI reference and API when you need screen-level or integration detail

3.1 - Concept

How Maxx Remote thinks about channels, groups, devices, and output levels.

Goal / when to use

Read this once before you build a project. Maxx Remote sits between your speakers / rooms and the amplifier hardware, so you can tune and operate without constantly asking “which amp, which output?”

Mental model

Maxx Remote is an abstraction layer over amplifier outputs. It does not matter whether 1,000 speakers sit on thirty-two 32-channel amplifiers or on many smaller units — you work with project channels and groups.

As an operator or tuner, you usually care about this speaker or this room, not which physical output is used that day. Linking can change later; the channel settings stay in the project.

System overview

Desktop / Server and UI

Maxx Remote always consists of:

  1. A server that holds the project and talks to amplifiers
  2. A web UI (the screens you use in the browser or Desktop window)

Access the UI at http://localhost:8000 on the machine running the server (or http://<server-ip>:8000 for Docker / remote hosts).

Objects you will use

ObjectWhat it means in the room
Channel (project channel)One speaker (or speaker strip) with full DSP: volume, EQ, delay, mute, and more
GroupA room or zone that can adjust the same kinds of parameters for many channels at once
DeviceAn amplifier in the project (for example 8 / 16 / 24 / 32 outputs, depending on model)
HW channelA physical amplifier output, for example CH1 on AMP1

How they relate

A channel behaves like a channel strip: you can set it directly.

If that channel also belongs to one or more groups, group values are added (summed) with the channel’s own values. The result is what the amplifier should play.

Example for volume:

SourceVolume
Channel−2 dB
Group 1−1 dB
Group 2+5 dB
Output+2 dB

When a channel is linked to a HW channel, Maxx Remote sends that output result to the device.

Because settings live in the Maxx Remote project, you can replace an amplifier or re-link speakers to different outputs without rebuilding the whole tuning from scratch.

Out of Sync

After a channel is linked, Maxx Remote periodically compares project data with the device. Someone can still change the amp from Maxx Control or other tools — Maxx Remote then reports OUT OF SYNC for the mismatched parameters.

You resolve sync by aligning values in Maxx Remote with the device, or by pushing project data to the device (SYNC). Details: Troubleshoot.

Expected result

You understand that:

  • Channels and groups are how you design and operate the system
  • Devices and HW channels are how sound reaches the speakers
  • Output levels are the sum of channel + group contributions

Common mistakes

3.2 - Installation

Install Maxx Remote as a portable Desktop app or run it as a Docker server.

Goal / when to use

Get Maxx Remote running so you can open the UI and create or load a project.

  • Choose Desktop for commissioning laptops and day-to-day design work.
  • Choose Docker for an always-on server that browsers can reach on the network.

Prerequisites

  • Supported OS for Desktop, or a host that can run Docker
  • Network access to your amplifiers (see Prerequisites)
  • For automatic discovery (amplifiers and Dante TX sources): the host must receive the UDP broadcast / multicast traffic listed under Ports and discovery — on Docker that means host networking

Desktop application

  1. Download Maxx Remote from the Innosonix downloads page.
  2. Unpack or place the portable application where you want it — no installer is required.
  3. Start the application.
  4. On first launch, use Start a new project or import an existing project archive.

Expected result

The Maxx Remote window opens with the project splash / HOME UI. You can also reach the same UI in a browser at http://localhost:8000 while the Desktop app is running.

Server / Docker

Ports and discovery

Maxx Remote listens for more than the web UI. Automatic discovery uses UDP broadcast and multicast, which Docker’s default bridge network does not forward reliably when you only publish ports with -p.

TrafficAddress / portPurpose
TCP 8000host :8000Web UI and REST API
UDP 9453broadcast 255.255.255.255Innosonix amplifier discovery (INX / IDFM)
UDP 5353multicast 224.0.0.251mDNS — Dante device discovery (_netaudio-arc / _netaudio-cmc / _netaudio-dbc)
UDP 8702multicast 224.0.0.231Dante control-plane notifications (live TX updates)
UDP 8708multicast 224.0.0.233Dante heartbeats (device liveness)

Maxx Remote also sends outbound unicast UDP to Dante devices (ARC channel queries, typically ports 4440 / 4444 / 4455, and CMC registration, typically 8800). Those are device-side ports — they are not something you “publish” on the container; the host firewall must allow the outbound path.

Use host networking whenever you want automatic amplifier scan or Dante TX discovery:

docker run --detach --name maxx-remote --network host innosonix/maxx-remote:latest

Once the container is running, open:

http://<docker-host-ip>:8000

Alternative: published ports (UI only — no discovery)

If you only need the web UI and will add amplifiers by IP / hostname (and do not rely on Maxx Remote’s Dante discovery), bridge networking with a published HTTP port is fine:

docker run --detach \
  --name maxx-remote \
  -p 8000:8000 \
  innosonix/maxx-remote:latest

Compose equivalent:

services:
  maxx-remote:
    image: innosonix/maxx-remote:latest
    ports:
      - "8000:8000"
    # Discovery (INX + Dante) will not work reliably on the default bridge.
    # Prefer network_mode: host when you need ADD FROM NETWORK or Dante TX scan.

Do not expect a long -p 9453:9453/udp -p 5353:5353/udp … list to replace --network host for discovery. Map TCP 8000 for the UI; use host networking when discovery matters.

Option A — Export / import yourself

Use the UI Export / Import controls when you migrate to a new container.

Option B — Docker volume (preferred)

# create once
docker volume create maxx-remote-volume

docker run  --detach \
            --restart always \
            --name maxx-remote \
            --network host \
            --mount source=maxx-remote-volume,target=/root \
            innosonix/maxx-remote:latest

Expected result

Browsers on the network can open the Maxx Remote UI on port 8000, and projects survive container restarts when a volume is mounted. With --network host, ADD FROM NETWORK and Dante TX discovery can see devices on the same LAN segment.

Common mistakes

3.3 - Prerequisites

Network, discovery, Dante, and tools you need before commissioning with Maxx Remote.

Goal / when to use

Check this list before you expect amplifiers to appear automatically, Dante streams to route, or a Docker server to stay reachable.

1. Device network setup (IDFM)

Before Maxx Remote, put amplifiers on a working IP plan with IDFM (install):

  1. Discover devices.
  2. Set IP mode / address / hostname as required by the site.
  3. Update firmware if IDFM reports newer versions.

2. Ports and reachability

TrafficAddress / portPurpose
TCP 8000host :8000Maxx Remote UI and REST API (http://host:8000, OpenAPI at /api-docs/)
UDP 9453broadcast 255.255.255.255Innosonix amplifier discovery (INX / IDFM)
UDP 5353multicast 224.0.0.251mDNS used for Dante device discovery
UDP 8702multicast 224.0.0.231Dante control-plane notifications
UDP 8708multicast 224.0.0.233Dante heartbeats

Outbound (device-side ports Maxx Remote talks to, not listens on): Dante ARC queries typically 4440 / 4444 / 4455, CMC registration typically 8800.

Firewall / VLAN notes:

  • The PC or Docker host must reach each amplifier’s management IP (HTTP/API used by Maxx Remote).
  • Discovery broadcast/multicast usually do not cross routers. Across subnets, add amplifiers by hostname + IP instead of relying on scan.
  • Docker: use --network host for automatic INX and Dante discovery. Publishing only -p 8000:8000 is enough for the UI if you add devices manually — see Installation.

3. Dante (audio network)

If you use Dante input sources:

  • Amplifiers and sources must share a working Dante network (often separate from or VLAN’d from control).
  • Maxx Remote discovers Dante TX channels on the LAN (mDNS + multicast control plane above). You can still use Dante Controller (or equivalent) to confirm Transmit Channel@Hostname names when creating INPUTS.
  • Maxx Remote can create dynamic Dante subscriptions (often shown with a D: prefix in Dante Controller).
  • On Docker, Dante discovery needs the same host-network path as amplifier discovery — bridge -p mappings are not enough.

Stereo / surround routing is covered in Inputs and routing and Surround input sources.

4. Control PC / server

  • Desktop: portable Maxx Remote build for your OS
  • Server: Docker host with enough disk for a volume (do not rely on ephemeral container storage)
  • Browser: modern Chromium / Firefox / Edge for the web UI

5. Project planning (optional)

You can create channels, groups, EQ, and routing offline with no amplifiers present. Link hardware later on site. See Projects.

Expected result

  • Amplifiers respond to ping / IDFM
  • Maxx Remote UI opens on port 8000
  • Amplifier and Dante discovery work on the same L2 segment (or you are ready to add amplifiers manually and pick TX names from Dante Controller)

Common mistakes

3.4 - Quick-Start

Guided demo: Left / Right / Sub on an MA32/D² with Dante music.

Goal / when to use

Get first music out of a simple system: three speakers (Left, Right, Sub) on an MA32/D², with group volume/EQ and a stereo Dante source (for example Dante Virtual Soundcard).

This is a guided walkthrough. For deeper topics afterward, use Build a system and Everyday control.

Prerequisites

  • Maxx Remote installed and running (Installation)
  • Amplifier on the network (Prerequisites, IDFM / install)
  • Speakers on amp channels 1, 4, and 9 (or adapt the link steps)
  • Dante TX available (hostname + transmit channel names)

1. Create a project

  1. Start Maxx Remote. On the splash screen, click Start a new project.
  2. Enter a project name and confirm.

Expected result

HOME opens for the new project.

2. Create channels and a group

  1. Open CHANNELSMAP | CREATE.

  2. Click + CHANNEL, set CHANNELS TO ADD to 3, name them (for example Left, Right, Subwoofer), then CREATE CHANNELS.

  3. Confirm the three PROJECT CHANNELS exist. LINKED TO is empty until you connect hardware.

  4. Click + GROUP, name it (for example ROOM 1), and create it.

  5. Map all three channels into the group: drag and drop, or select them and click MAP.

Expected result

Three unlinked channels mapped to ROOM 1.

3. Add the amplifier and link outputs

  1. Open DEVICESADD DEVICE.

  2. Add a device found on the network, or add manually (model + hostname).

  3. Disable CREATE CHANNELS / GENERATE PROJECT CHANNELS if offered — you already created the three you need.

  1. Wait until Maxx Remote connects. Use CONNECT to disable network activity if needed.

  2. Open the LINK CHs (linked channels) control.

  3. Use IDENTIFY to play a test tone (for example pink noise at −40 dB) and confirm the physical speaker.

  4. Link each project channel to the correct HW channel (drag and drop or LINK).

  5. Finish Left, Right, and Sub.

  6. Reorder later by dragging HW channels between empty slots, or swap by dropping onto an assigned slot.

Expected result

All three project channels show a hardware link; identify confirms the correct speakers.

4. Set safe group volume

  1. Open GROUPS and click the VOLUME field for ROOM 1.

  2. Enter -20 and press Enter or SET.

  3. On CHANNELS, raise the Subwoofer channel by +6 dB for a bit of boost.

Example: group −20 dB + channel +6 dB → −14 dB output.

Expected result

Room is at a safe level; Sub sits 6 dB hotter than Left/Right at the channel layer.

5. EQ the Subwoofer

  1. Open CHANNELS → EQ for Subwoofer.

  2. Drag a LOW PASS filter into the EQ view.

  3. Select the filter (blue handle / row), open the gear editor, pick for example 24 dB Butterworth, confirm OK.

  4. Set frequency by dragging or typing, then Enter / SET.

  5. Add more filters if needed.

6. EQ the group (room)

  1. Add overall EQ on GROUPSROOM 1.

  2. Jump back to the group’s channels (arrow control).

  3. Re-open Subwoofer EQ — you should see channel EQ plus group EQ summed.

Expected result

Room EQ affects all members; Sub still shows its own low-pass on top.

7. Create Dante INPUTS and assign roles

From Dante Controller, note Transmit Channel@Hostname (example: 01@STEFFEN-PC).

  1. Open INPUTS+ INPUT SOURCE. Fill in:

    • SOURCE LABEL — name in Maxx Remote
    • RECEIVE HOSTNAME — Dante device hostname
    • RECEIVE LABEL — transmit channel name

  2. Open GROUPSINPUT and assign the source to ROOM 1.

  3. Channels inherit the source using their ROLE (Left / Right / Mono, …).

  4. If Left is still MONO, it may downmix both legs — set ROLELEFT.

  5. Confirm Dante Controller shows dynamic subscriptions (often prefixed with D:).

  6. Set Right to role RIGHT. Leave Sub as MONO for a stereo downmix to the sub.

Expected result

Music plays Left / Right / Sub with correct legs; Dante shows the subscriptions Maxx Remote created.

Checklist — you are done when

  • Project created and named
  • Three channels + one group, channels mapped to the group
  • Amplifier connected; three HW links confirmed with IDENTIFY
  • Group volume set to a safe level; Sub offset applied if desired
  • Sub low-pass (and optional room EQ) in place
  • Stereo INPUT created and assigned to the group
  • Channel roles Left / Right / Mono correct
  • Audio heard on all three speakers

Common mistakes

3.5 - Projects

Create, open, save, export, and persist Maxx Remote projects — including offline planning and Docker volumes.

Goal / when to use

Manage the project file that holds your channels, groups, devices, inputs, views, and tuning. Use this when starting a job, moving between machines, or keeping a Docker server’s configuration safe.

Prerequisites

Create a new project

Desktop or browser splash

  1. Start Maxx Remote with no project loaded.
  2. Choose Start a new project.
  3. Enter a clear site name (for example Museum-Floor2).

Desktop menu (Electron)

Use the application menu when available:

  • New Project
  • Load Project / Last Projects
  • Save Project / Save Project As
  • Close Project

Expected result

HOME shows the new project name; DEVICE / CHANNEL counts start empty.

Open / import an existing project

  1. On the splash screen, choose Import project archive to host, or
  2. Use the top-bar Import control to upload a project archive or partial JSON.

Expected result

HOME and list pages populate with the imported project.

Export / backup

  1. Use the top-bar Export control.
  2. Store the download with your site documentation.

Export before:

  • Updating Maxx Remote
  • Recreating a Docker container
  • Handing the project to another engineer

Offline planning

You can design without amplifiers:

  1. Create channels and groups.
  2. Set volumes, EQ, delay, mute, speaker presets.
  3. Define INPUTS and roles (even if Dante is not online yet).
  4. On site, add devices and link.

Project settings stay in Maxx Remote until you link and sync to hardware.

Docker persistence

Recommended pattern:

  1. Mount a volume (see Installation).
  2. Periodically Export from the UI as an off-host backup.
  3. When migrating hosts, import the archive into the new server.

HOME project card

On HOME you can:

  • View / set the project NAME
  • See overall STATUS for devices and linked channels
  • Enable AUTO SYNC so Maxx Remote can push project data when differences are found
  • Open REST-API Doc for integrators

Details: GUI · HOME.

Expected result

You can create, reopen, and back up a project, and you know how Docker storage differs from Desktop files.

Common mistakes

3.6 - Build a system

Commission a Maxx Remote system: create channels and groups, link amplifiers, route Dante inputs, and tune volume, EQ, and delay.

Goal / when to use

Use this chapter after Quick-Start when you commission a real site: model speakers and rooms, connect amplifiers, bring in program sources, then tune.

PageUse when you need to…
Channels and groupsModel speakers and rooms
Devices and linkingConnect amplifiers and map outputs
Inputs and routingBring Dante (or other) sources into groups
TuningSet volume, mute, EQ, delay, phase

For multi-way cabinets, surround, and speaker presets, see Advanced.

3.6.1 - Channels and groups

Create project channels (speakers) and groups (rooms), and map them together.

Goal / when to use

Build the logical system: one channel per speaker (or multi-way cabinet), and groups for rooms, zones, or show control.

Prerequisites

  • Open project (Projects)
  • Optional: sketch which speakers belong to which rooms

Create channels

  1. Open CHANNELSMAP | CREATE.
  2. Click + CHANNEL.
  3. Set how many channels to add and name them (for example Lobby Left, Lobby Right).
  4. Click CREATE CHANNELS.

For multi-way cabinets (one channel object with Low/Mid/High ways), enable MULTI-WAY MODE — see Multi-way channels.

Expected result

Channels appear in the CHANNELS list with empty LINKED TO until devices are linked.

Create groups

  1. In MAP | CREATE, click + GROUP.
  2. Name the group after the room or zone (for example Foyer, Hall A).
  3. Create the group.

Expected result

The group appears in GROUPS and in the mapping lists.

Map channels into groups

  1. Stay in CHANNEL | GROUP MAPPING (MAP | CREATE).
  2. Select one or more channels.
  3. Drag them onto a group, or click MAP.
  4. Use UNMAP when a speaker should leave a room.
  5. Filters MAPPED ONLY / UNMAPPED ONLY help large projects.

Expected result

Groups show their member channels; CHANNELS can show group membership.

Choose what a group can control

On a group’s edit dialog, GROUP ABILITIES decide which controls the group exposes (Mute, Volume, EQ, Input, Speaker Preset, and more). Turn off abilities you do not want operators to touch at group level.

Expected result

GROUPS overview and edit tabs match the abilities you enabled.

Channel roles (for inputs)

Set each channel’s ROLE (Left, Right, Mono, Center, LFE, surrounds, …) so group INPUT assignment routes the correct Dante legs. Details: Inputs and routing, Surround.

Common mistakes

3.6.2 - Devices and linking

Add amplifiers to the project and link project channels to physical outputs.

Goal / when to use

Connect real amplifiers and map each project channel (speaker) to the correct HW channel (amp output).

Prerequisites

Add a device

  1. Open DEVICESADD DEVICE.
  2. Choose:
    • ADD FROM NETWORK — select discovered units (SCAN NETWORK as needed)
    • ADD MANUALLY — model + hostname (and IP when known)
  3. Decide whether to CONNECT AFTER ADDING.
  4. Only enable CREATE CHANNELS if you want Maxx Remote to auto-create a project channel per amp output. For planned systems, leave this off.
  5. Confirm ADD / ADD SELECTED.

Expected result

The device row appears with STATUS updating as Maxx Remote connects. CONNECT can pause network activity.

  1. On the device row, open LINK CHs.

  2. Select a project channel and a free HW channel.

  3. Use IDENTIFY on the HW side to play a test tone and confirm the speaker.

  4. LINK (or drag and drop).

  5. Repeat for all speakers.

  6. Reorder / swap by dragging HW channels between slots.

Expected result

CHANNELS LINKED TO shows the amp/output; identify matches the physical position.

Multi-way and speaker devices

Multi-way channels need several HW channels (or a speaker-style device) linked together. See Multi-way channels.

Replace a device

Typical sequence:

  1. Export the project (Projects).
  2. On the old device row, note hostname / links (or leave links and remove carefully).
  3. Add the replacement amplifier (same model when possible).
  4. Re-link project channels to the new HW channels (IDENTIFY again).
  5. Use SYNC if STATUS shows differences (Troubleshoot).

Optional delete dialog may offer to remove linked project channels — usually keep project channels and only remove the device.

Device row actions worth knowing

ControlPurpose
STATUSConnection / health
SYNCResolve project vs device differences
IDENTIFYVisual / audible identify on the amp
CONNECTEnable or pause control connection
LINK CHsOpen the linker
SETTINGS / REMOVEDevice config or remove from project
REBOOT DEVICEReboot from Maxx Remote when available

Common mistakes

3.6.3 - Inputs and routing

Create Dante input sources, assign them to groups, and set channel roles.

Goal / when to use

Bring program audio into Maxx Remote so groups and channels receive the correct Dante (or related) streams.

Prerequisites

  • Groups with Input ability enabled
  • Channel ROLE planned (Left / Right / Mono / surround roles)
  • Dante Controller available to read TX names
  • See also Surround input sources for 5.1 / 7.1

Create an INPUT SOURCE

  1. Open INPUTS+ INPUT SOURCE.
  2. Fill in:
    • SOURCE LABEL — friendly name in Maxx Remote
    • RECEIVE HOSTNAME — Dante device hostname
    • RECEIVE LABEL — transmit channel name
  3. For stereo / surround sources, add each leg as required by the source type.
  4. Save with CREATE SOURCE.

Example TX naming in Dante Controller: 01@STEFFEN-PC.

Optional tools on INPUTS: DANTE DISCOVERY, volume offset / mute on the source, CSV import/export for large lists.

Expected result

The source appears in INPUTS and can be selected on groups.

Assign a source to a group

  1. Open GROUPS → select the group.
  2. Open INPUT and choose the source.
  3. Confirm the group output / channel setup (Stereo, 2.1, 5.1, …) matches the speakers in that room.

Expected result

Member channels receive streams according to their ROLE and the active crossmix strategy.

Set channel roles

  1. Open CHANNELS (or the channel edit dialog).
  2. Set ROLE to LEFT, RIGHT, MONO, or a surround role.
  3. NONE means this channel will not take INPUT SOURCE streams.

Expected result

Left hears left, Right hears right; Dante Controller shows dynamic subscriptions (often D:).

Review the signal path

Use SIG-PATH to see source → group → channel → device at a glance, and to run TEST / identify from that view. See GUI · SIG-PATH.

Common mistakes

3.6.4 - Tuning

Set volume, mute, EQ, delay, and phase on channels and groups.

Goal / when to use

Dial in levels and DSP after speakers are linked. Prefer group moves for room-wide changes and channel moves for speaker-specific trim.

Prerequisites

  • Channels mapped to groups
  • Devices linked if you want to hear results on hardware
  • Understand summation (Concept)

Volume

Room (group)

  1. Open GROUPS.
  2. Click VOLUME for the room.
  3. Enter a value (for example -20) → Enter / SET.

Speaker trim (channel)

  1. Open CHANNELS.
  2. Click VOLUME on the speaker.
  3. Enter an offset relative to the current summed output workflow you are using → SET.

Mute and power

  • Use group MUTE for room silence.
  • Use channel MUTE for a single speaker.
  • POWER controls (where available) can be driven from channel, group, or operator VIEW widgets.

EQ

  1. Open EQ from the channel or group row (EQ icon / edit dialog EQ tab).
  2. Drag filter types (PEQ, shelves, HP/LP, …) into the plot.
  3. Select a filter, set type (gear), frequency, gain, Q.
  4. On a channel, review the summed curve when groups also contribute EQ.

Delay and phase

  1. Open the channel or group edit dialog → DELAY / PHASE.
  2. Set delay for alignment; use phase invert when polarity must flip.
  3. Prefer group delay only when the whole room should shift together.

Limiters, FIR, speaker tools

Advanced DSP (limiters, FIR, speaker detection, speaker presets) lives in the channel / group edit tabs (LIMIT, SPEAKER, …). For packaged speaker tunings see Speaker presets.

Bulk edits

On CHANNELS / GROUPS list pages, column headers such as VOLUME, MUTE, DELAY, PHASE open editors that can apply to the current selection — useful for many identical fills.

Undo / redo

Maxx Remote supports undo/redo for project edits — use it while tuning instead of guessing previous values.

Expected result

Rooms sit at safe levels; individual speakers are trimmed; EQ/delay match the design intent; CHANNELS output values match what you hear.

Common mistakes

3.7 - Everyday control

Operate rooms and speakers day to day — groups vs channels, meters, status, and VIEW pages.

Goal / when to use

Run the finished system: change room levels, mute zones, watch meters/status, and hand simple control to operators via VIEW.

Prerequisites

Group vs channel — which control?

You want to…Prefer
Change whole room level / muteGROUPS
Trim one speakerCHANNELS
Change program source for a roomGROUPS → INPUT
Give a receptionist a simple panelVIEW (operator link)

Remember: group and channel values add. CHANNELS shows the output result.

Typical operator moves

Set room volume

  1. Open GROUPS.
  2. Set VOLUME (or use a VIEW volume widget).
  3. Confirm meters move on member channels.

Mute a room

  1. GROUPSMUTE on, or VIEW mute control.
  2. Confirm CHANNELS / SIG-PATH reflect mute.

Check health

  1. HOME — project / device / linked-channel status cards.
  2. DEVICES — STATUS, CONNECT, SYNC.
  3. CHANNELS — LEVEL and STATUS columns.
  4. LOG — export or filter if something failed.
  5. Floating OUT OF SYNC — resolve before a show (Troubleshoot).

Operator VIEW pages

  1. Open VIEW (view manager).
  2. Create a page with + VIEW.
  3. Add objects: group volume/mute, channels, level meters, images, links to other views.
  4. SAVE VIEW.
  5. Copy the operator Link (fullscreen page without editor chrome).
  6. Open that URL on a tablet or control PC.

Details: GUI · VIEW and View API.

Expected result

Operators adjust the intended rooms without accessing CHANNELS / DEVICES commissioning screens.

Snapshots (groups)

Where available, group SNAPSHOTS store and recall sets of group-related settings for scene changes. Use them for rehearsed level/EQ scenes — not as a substitute for project export.

Expected result

Day-to-day control happens mostly from GROUPS and VIEW; CHANNELS is for trim and diagnosis; OUT OF SYNC stays clear.

Common mistakes

3.8 - Advanced

Maxx Remote advanced features: multi-way speaker channels, surround / crossmix layouts, and reusable speaker presets.

Goal / when to use

Use these Maxx Remote topics after the basic stereo / mono workflow is solid.

TopicWhen you need it
Multi-way channelsOne cabinet with separate amp ways (2 / 3 / 4-way)
Surround input sources5.1 / 7.1 roles, group setups, crossmix up/down
Speaker presetsPackage and reuse speaker tunings (.spkr)

3.8.1 - Multi-way channels

Represent one loudspeaker cabinet as a single channel with 2 / 3 / 4 amp ways.

Goal / when to use

Use a multi-way channel when one physical speaker cabinet needs several amplifier outputs (for example low / mid / high). You still control the cabinet as one channel, while each way holds driver-specific DSP.

Prerequisites

Create multi-way channels

  1. Open CHANNELSMAP | CREATE+ CHANNEL.
  2. Enable MULTI-WAY MODE.
  3. Set NR OF WAYS to 2, 3, or 4.
  4. Name the parent channels and click CREATE CHANNELS.

Expected result

Each new channel is a parent cabinet with fixed child ways (not separately deletable).

Convert an existing channel

  1. Open the channel edit dialog → MAIN.
  2. Enable multi-way (or change way count) and confirm the popup.
  3. You can pre-set the way count before enabling.

Naming

Ways are named from the parent plus a role:

WaysRoles
2Low, High
3Low, Mid, High
4Sub, Low, Mid, High

Linking is like normal channels, with a few extras:

  1. Open DEVICESLINK CHs.

  2. Multi-way parents show their way count.

  3. Use the PROJECT CHANNELWAYS tab to link individual ways (different amps or non-default order).

  4. On the PROJECT CHANNELS tab, select the matching number of device channels before LINK unlocks (3-way → 3 HW channels).

Drag and drop rules

  • Dragging a multi-way parent highlights the matching number of HW channels.

  • Dragging HW channels onto a parent requires the same count.

  • Extra HW channels continue to the next project channel in line.

  • Whole-cabinet links assign HW channels low → high in list order.

Speaker-style devices

Some amplifiers present as a single “speaker” device with a fixed internal way layout. For those:

  • Link a matching multi-way parent as a whole — not individual ways.
  • The linker filters to parents with the correct way count (shown next to the device name).

How settings combine

Parent settings and way settings combine much like group + channel. For limited DSP resources (EQ, FIR, limiters, speaker detection), a way’s own settings take precedence when the hardware cannot hold everything. Parent values may already include group contributions.

UI differences

CHANNELS overview

  • Ways are not multi-selected for bulk edits — edit the parent for “whole cabinet” changes.
  • Ways have no separate power control; INPUT on ways is read-only (inherited).
  • Parent level meter shows the combined level of its ways; STATUS combines way status.

Edit dialogs

  • Way editor: no Power / Input tabs; name read-only; no channel role / multi-way section.
  • Parent SPEAKER tab: no one-shot speaker detection (set per way).
  • Parent STATUS lists way status (similar to groups listing members).

Common mistakes

3.8.2 - Surround input sources

5.1 / 7.1 roles, group output setups, and crossmix strategies in Maxx Remote.

Goal / when to use

Route surround program (5.1 / 7.1 and related) into rooms when the speaker layout and the source layout are not always identical. For basic stereo INPUTS, start with Inputs and routing or Quick-Start.

Prerequisites

  • Groups with Input ability enabled
  • Channels created and given surround ROLEs
  • Dante TX labels known for every surround leg

Surround channel names in Maxx Remote

Naming varies across the industry. Maxx Remote uses:

5.1

  1. Center (C)
  2. Left (L)
  3. Right (R)
  4. Left Surround (Ls)
  5. Right Surround (Rs)
  6. Low Frequency Effect (LFE)

7.1

  1. Center (C)
  2. Left (L)
  3. Right (R)
  4. Left Surround (Ls)
  5. Right Surround (Rs)
  6. Back Surround Left (Bsl)
  7. Back Surround Right (Bsr)
  8. Low Frequency Effect (LFE)

Create surround INPUT SOURCES

Same workflow as stereo INPUTS, with more RECEIVE LABEL entries — one per surround leg. See Quick-Start · inputs.

Channel roles

Assign each speaker channel a role. NONE receives no INPUT SOURCE streams. MONO usually receives a combination of legs (see crossmix).

Group output / channel setup

On GROUPS, set output / channel setup to match the room (Stereo, 2.1, 5.0, 5.1, 7.0, 7.1, …). Every role in that setup should exist on at least one mapped channel.

Missing or extra roles do not always hard-error — you may simply get silent speakers or unused streams.

Crossmix (upmix / downmix)

What it is

When the INPUT SOURCE layout and the group speaker layout differ, Maxx Remote needs a matrix that maps input legs to output roles. Downmix and upmix are both handled as CROSSMIX strategies.

Crossmix page

  1. Open CROSSMIX.
  2. Review built-in strategies for each in/out pair; edit or add your own (+ CROSSMIX).
  3. Filter by input / output setup when the list is long.

Assignment priority (highest wins)

  1. INPUT SOURCE + GROUP specific strategy
  2. GROUP strategy for an input setup
  3. Global default for that in/out pair

Maxx Remote always picks a strategy (even for exact matches) by checking from highest priority to lowest. Gear icons open the editor for the selected / effective strategy.

Add / edit a crossmix

  1. Rows = output roles, columns = input legs.

  2. Enable crosspoints (double-click, or select + Enable).

  3. Set Gain Offset on active points (common 0 / ±3 / −6 values are color-coded).

  4. Name the strategy to unlock Add; use Save or Save As New when editing.

  5. Mark Default only when this should become the global fallback for that in/out pair.

  6. You cannot change in/out setup on the current global default (would remove the fallback). Non-defaults can change freely.

Changing setup on a strategy that was assigned to a group/input clears that assignment; Maxx Remote falls back to the next strategy in the chain.

Expected result

Surround legs land on the intended speakers; intentional up/downmix uses the strategy you selected; Dante shows the resulting subscriptions.

Common mistakes

3.8.3 - Speaker presets

Create, protect, and apply speaker presets for single- and multi-way channels.

Goal / when to use

Package a finished speaker tuning so you can reuse it on other channels or jobs. From Maxx Remote 1.13.0, presets are created and edited in Maxx Remote (not only on the amplifier).

For multi-way cabinets, read Multi-way channels first.

Prerequisites

  • Channel (or multi-way parent) tuned the way you want
  • Matching way count on any target channel that will load the preset

What a preset stores

Typical fields included:

  • Volume
  • Phase invert
  • Delay
  • EQ
  • FIR
  • Limiters

Create a preset

  1. Finish tuning on a regular or multi-way channel.
  2. Open the channel edit dialog → SPEAKER tab (use the parent for multi-way).
  3. Click CREATE PRESET.
  4. Enter metadata. Optionally set a password so only authorized users can edit later.
  5. Confirm creation / export as needed (.spkr files).

Expected result

You have a reusable speaker preset file / project preset you can apply elsewhere.

Edit a preset

  1. Apply the preset to a channel (or open a channel that already has it).
  2. SPEAKER tab → EDIT (enter password if prompted).
  3. The UI focuses on the preset editor channel(s).
  4. Change DSP, then SAVE or SAVE AS NEW / abort as offered.

Each edit increments an internal revision so two files with the same name/id can be compared for which is newer when exporting.

Apply a preset

  1. Open the target channel or group → SPEAKER.
  2. Use Select file (or the preset picker) and choose a .spkr file.
  3. Confirm the way configuration matches (2-way preset → 2-way channel only).

Groups

  • Mapped channels inherit a group’s speaker preset unless the channel already has its own.
  • If several groups provide presets, the channel uses the preset from the group that was mapped first — avoid stacking conflicting group presets.
  • Way-count mismatches on some members are skipped for those members.

Expected result

Target channels show the preset on the SPEAKER tab; amp output follows after link/sync.

Legacy .speaker presets

Presets created on MAXX devices (.speaker) still load, but:

  • They are not editable in Maxx Remote
  • New .spkr presets take precedence; applying a new preset removes the legacy one
  • A channel prefers a new preset (even from a group) over a legacy preset on the channel itself

Common mistakes

3.9 - Troubleshoot

Fix Out of Sync, discovery, Dante routing, and device replacement issues.

Goal / when to use

Something does not connect, discover, sync, or route audio. Work through the matching section below.

Out of Sync

Symptoms

  • Floating OUT OF SYNC alert in the UI
  • Device SYNC indicator not clean
  • Levels or EQ on the amp do not match Maxx Remote

Why it happens

Maxx Remote owns linked channels (Remote → device). Edits in Maxx Control, front-panel/other tools, or failed partial writes create differences. Maxx Remote detects them on periodic check-in.

Steps

  1. Click OUT OF SYNC (or device SYNC).
  2. Review which parameters differ.
  3. Choose direction carefully — normal recovery is APP → DEVICE (project wins).
  4. Use SYNC DEVICE / SYNC EVERYTHING as offered.
  5. Optional: enable HOME AUTO SYNC so future mismatches are pushed from the project automatically.

Expected result

Sync UI clears; amp matches the project.

Device not discovered

Symptoms

ADD FROM NETWORK is empty; UI may warn that discovery on UDP 9453 is unavailable.

Steps

  1. Confirm the amp appears in IDFM (discover) on the same PC/network.
  2. Check PC and amp are on a discovery-friendly segment (broadcast does not cross routers).
  3. Docker: use --network host — publishing UDP 9453 with -p is not enough for broadcast discovery. See Installation.
  4. Select the correct NETWORK INTERFACES / RECEIVE DISCOVERY options if shown.
  5. Fall back to ADD MANUALLY with hostname + IP.

Expected result

Device listed, or manually added and CONNECT goes online.

Dante TX sources missing in Maxx Remote

Symptoms

INPUTS / Dante discovery shows no (or stale) transmit channels, while Dante Controller on another PC may still see them.

Steps

  1. Confirm Maxx Remote can join the Dante control network (same L2 segment as the devices).
  2. Docker: use --network host. Dante discovery needs mDNS (224.0.0.251:5353) plus multicast 224.0.0.231:8702 and 224.0.0.233:8708 — bridge -p mappings do not deliver that reliably.
  3. Check host firewall allows those UDP multicast joins / inbound packets.
  4. As a workaround, read Transmit Channel@Hostname from Dante Controller and enter the INPUT SOURCE manually.

Expected result

TX channels appear for assignment, or you can enter them from Dante Controller.

Device connected but offline / errors

  1. DEVICES → STATUS column and CONNECT switch.
  2. Ping / browser-check the amp IP; re-run IDFM if IP changed.
  3. LOG → filter errors, Export Log if you need support.
  4. Try IDENTIFY / REBOOT DEVICE when safe.
  5. Re-link channels if the amp was replaced.

Dante / INPUTS silent

  1. Confirm TX hostname and label in Dante Controller match the INPUT SOURCE.
  2. Check channel ROLE (Left/Right vs Mono).
  3. Confirm the group has Input ability and a source assigned.
  4. For surround mismatches, review crossmix and group output setup.
  5. Verify Dante and control networks are as designed (many sites separate them).
  6. Look for D: subscriptions in Dante Controller after assignment.

Wrong speaker / wrong EQ after linking

  1. Open LINK CHs.
  2. IDENTIFY each HW channel.
  3. Unlink and re-link to the correct project channel.
  4. Re-apply or verify speaker preset if used.

Replace an amplifier

  1. Export the project.
  2. Add the new device; keep project channels.
  3. Link speakers again with IDENTIFY.
  4. SYNC project → device.
  5. Remove the old device when safe (do not delete project channels unless intended).

Common mistakes

3.10 - GUI reference

Maxx Remote GUI reference — purpose and key actions for each screen (HOME, DEVICES, INPUTS, CHANNELS, GROUPS, CROSSMIX, SIG-PATH, VIEW, LOG).

Goal / when to use

Use this section as a Maxx Remote screen map: what each page is for, key actions, and links to task guides.

ScreenPurpose
HOMEProject overview, status, API docs link
DEVICESAmplifiers, connect, sync, link outputs
INPUTSDante / input sources
CHANNELSSpeakers / project channels
GROUPSRooms and zones
CROSSMIXSurround / layout mix strategies
SIG-PATHEnd-to-end signal routing view
VIEWOperator pages
LOGApplication log / export

Task-oriented docs start at Quick-Start and Build a system.

3.10.1 - HOME

Maxx Remote HOME screen — project overview, status cards, activity, and REST API docs link.

Purpose

Landing overview for the open project: health at a glance and entry points to docs / API.

Key actions

  1. Read PROJECT card — name, status, AUTO SYNC.
  2. Rename the project (NAME / SET) when needed.
  3. Check DEVICES counts and status.
  4. Check CHANNELS counts and linked-channel status.
  5. Review LAST ACTIVITIES (who changed what).
  6. Note APP-Version.
  7. Open REST-API Doc (same as http://host:8000/api-docs/).

When to use

  • Start of a session: is everything online?
  • Enable AUTO SYNC after commissioning.
  • Hand integrators the OpenAPI link.

3.10.2 - DEVICES

Add amplifiers, connect, identify, sync, and link hardware channels.

Purpose

Manage every amplifier in the project and map physical outputs to project channels.

Key actions

  1. ADD DEVICE — from network scan or manually (model, hostname, IP).
  2. Choose network interface / SCAN NETWORK when discovery is used.
  3. Toggle CONNECT per device.
  4. IDENTIFY the amplifier.
  5. Open LINK CHs to assign project channels ↔ HW channels.
  6. Run SYNC when project and device differ.
  7. Open device SETTINGS, COPY SETTINGS, or REBOOT DEVICE.
  8. REARRANGE list order; REMOVE devices (watch delete-linked-channels option).

3.10.3 - INPUTS

Create and manage input sources for groups (typically Dante TX labels).

Purpose

Define named INPUT SOURCES that groups can use for program audio.

Key actions

  1. + INPUT SOURCE — label, receive hostname, receive label(s).
  2. Edit source properties; set volume offset / mute when needed.
  3. Use DANTE DISCOVERY helpers if available.
  4. REARRANGE order; delete SELECTED / ALL.
  5. Import/export via CSV for large systems.
  6. Create/edit stream patches when the UI offers CREATE/EDIT STREAM.

3.10.4 - CHANNELS

Project channels — speakers, DSP, roles, and group membership.

Purpose

Work on individual speakers (project channels): levels, DSP, roles, linking status, and meters.

Key actions

  1. MAP | CREATE — add channels; open channel↔group mapping.
  2. Enable MULTI-WAY MODE when creating cabinets with multiple ways.
  3. Set ROLE for input routing (Left / Right / Mono / surround…).
  4. Edit DSP via row controls or dialog tabs: Volume, Mute, Phase, Delay, EQ, Limiter, Speaker, Input, Power, Status, …
  5. Read LEVEL / STATUS; remember values are final output (channel + groups).
  6. REARRANGE, CSV export/import, Copy Settings between channels.
  7. Jump to device linking from linked-channel indicators.
  8. Create / apply SPEAKER PRESET on the Speaker tab.

3.10.5 - GROUPS

Rooms and zones — grouped control of volume, mute, EQ, inputs, and more.

Purpose

Control many speakers as a room or zone. Group parameters sum with each member channel.

Key actions

  1. Create groups via MAP | CREATE+ GROUP.
  2. Map / unmap member channels.
  3. Configure GROUP ABILITIES (which controls the group exposes).
  4. Set VOLUME, MUTE, EQ, delay/phase as enabled.
  5. Assign INPUT sources and output/channel setup (stereo / surround).
  6. Select group-level CROSSMIX overrides when needed.
  7. Manage SNAPSHOTS for scene recalls.
  8. Apply group SPEAKER PRESET carefully (members inherit unless overridden).

3.10.6 - CROSSMIX

Strategies that map input layouts to speaker layouts (upmix / downmix).

Purpose

Define and assign matrices that route INPUT SOURCE legs to group output roles when layouts differ (or even when they match).

Key actions

  1. Browse strategies; filter by input / output setup.
  2. + CROSSMIX to create a custom matrix.
  3. Edit crosspoints and gain offsets in the matrix editor.
  4. Mark a strategy as global default for an in/out pair (always keep one).
  5. Assign overrides on groups or group+input combinations (higher priority).
  6. REARRANGE / delete unused non-default strategies.

3.10.7 - SIG-PATH

Visual signal path from sources through groups and channels to devices.

Purpose

See how audio is supposed to flow: source → group → channel → device. Useful for verifying routing after INPUT changes.

Key actions

  1. Open SIG-PATH.
  2. Filter by SOURCE, GROUP, LINKED, UNLINKED.
  3. Inspect columns/tabs for group, channel, input, and device relationships.
  4. Use TEST / identify controls to confirm the physical path.
  5. Jump back to CHANNELS / GROUPS / DEVICES to fix anything wrong.

Standalone per-group URLs exist for integrators — see Group signal path API.

3.10.8 - VIEW

Build operator pages with meters and simple controls; share fullscreen links.

Purpose

Create simplified operator canvases (rooms, mute, volume, meters, images) without exposing the full commissioning UI.

Key actions

  1. + VIEW to create a page.
  2. Add objects: channel, group, level meter, mute, power, volume, device, group input, image, view link.
  3. Arrange with align / distribute / layer tools; optional snap-to-grid.
  4. MANAGE IMAGES for background / diagram assets.
  5. SAVE VIEW.
  6. Copy the operator Link for fullscreen use (/view/...).
  7. DELETE VIEW when obsolete; BACK TO LIST to manage many pages.

3.10.9 - LOG

Application log — search, filter, load history, and export for support.

Purpose

Inspect what Maxx Remote and connected clients recently did when diagnosing failures.

Key actions

  1. Open LOG.
  2. Search / filter; Apply / Reset.
  3. Load older entries when the issue is further back.
  4. Export Log for support tickets.
  5. Correlate with the navbar warning icon and OUT OF SYNC alerts.

3.11 - API

Integrator entry points for Maxx Remote — REST, operator VIEW, and signal-path URLs.

Maxx Remote exposes a few user-facing integration surfaces. This section stays thin on purpose: the live OpenAPI document on a running system is the contract for REST calls.

Entry pointTypical use
REST APIThird-party control (media controllers, show control)
View APIFullscreen operator pages at /view/
Group signal pathScoped SIG-PATH page for one group

OpenAPI UI on a running host: http://localhost:8000/api-docs/ (also linked from HOME → REST-API Doc).

3.11.1 - REST API

HTTP API for controlling Maxx Remote from third-party systems.

Goal / when to use

Drive day-to-day control (levels, mutes, selections) from a media controller or similar. Prefer this over scraping the GUI.

Where is the full reference?

Each Maxx Remote instance ships OpenAPI docs:

That document is authoritative for paths, payloads, and versions.

Scope

Compared with Maxx Control’s device REST API, this API targets the Maxx Remote project/server — operator-oriented control of the system Maxx Remote manages, not low-level single-device setup.

3.11.2 - Maxx Remote View API

Maxx Remote View API: open a saved VIEW as a standalone operator web page at http://:8000/view/ (tablet / kiosk).

The Maxx Remote View API exposes a saved VIEW as a standalone operator page — without the Maxx Remote editor chrome. Operator URLs use the /view/ path (also called the View API).

What is the Maxx Remote View API?

Use it when you want tablets or dedicated operator PCs to show only the mute / volume / meter widgets you placed in VIEW, not the full project editor.

How do I open a VIEW operator page at /view/?

  1. In VIEW, create and SAVE a page.
  2. Copy the operator Link from the editor toolbox.
  3. Open URLs of the form:

http://<server>:8000/view/<view-name>

(Exact name encoding matches what the UI copies.)

Expected result

Fullscreen operator canvas with the mute / volume / meter widgets you placed.

3.11.3 - Group signal path

Maxx Remote group signal-path API — open the SIG-PATH view scoped to one group via URL.

Goal / when to use

Embed or bookmark a SIG-PATH page for one room/group — useful on a monitoring wall.

URL pattern

Groups are addressed by their internal id (UUID), for example:

http://<server>:8000/group-signal-path/<group-uuid>

Example:

http://localhost:8000/group-signal-path/36875a19-8203-4647-9760-303ffd3c8f8f

Obtain the group id from your project/export or integrator tooling — it is not the display name.