Skip to main content

Python RS232 API for Multi-Zone Amps

Library for RS232 serial communication to Xantech, Monoprice, Dayton Audio, Soundavo, and other multi-zone amps. This supports any serial protocol for communicating with the amps, including RS232 ports, USB serial ports, and possibly the RS232-over-IP interface for more recent Xantech amps. See below for exactly which amplifier models are supported.

GOAL: To eventually merge this with pymonoprice and get rid of a separate implementation.

The Monoprice version was originally created by Egor Tsinko for use with Home-Assistant.

beta_badge PyPi MIT license Build Status

Support

Visit the community support discussion thread for issues with this library. The developers are just volunteers from the community and do not provide any support, so it is best to ask the entire community for help or questions. There is no support or dedicated development for this integration, thus GitHub issue tracking has been turned off. Please submit Pull Requests with bug fixes!

Roadmap

  • 2025 Q3: reduce the min interval between commands from 50ms to 10ms (was originally 400ms) if there are no bug reports of the 50ms drop

Usage

For Monoprice and Dayton Audio 6-zone amplifiers:

from pyxantech import get_amp_controller

zone = 11 # (11 = amp 1/destination 1)
amp = get_amp_controller('monoprice6', '/dev/ttyUSB0')

# Turn off zone
amp.set_power(zone, False)

# Mute zone
amp.set_mute(zone, True)

# Set volume for zone
amp.set_volume(zone, 15)

# Set source 1 for zone
amp.set_source(zone, 1)

For Xantech 8-zone amplifiers the following exmaple. In this case pyxantech is used to connect to an RS232 device exposed over the network (e.g. IP2SL):

from pyxantech import get_amp_controller

zone = 12
amp = get_amp_controller('xantech8', 'socket://remote-host:4999/')

amp.set_source(zone, 3) # select source 3

See also example.py for a more complete example.

Usage with asyncio

With the asyncio flavor, all methods of the controller objects are coroutines:

import asyncio
from pyxantech import async_get_amp_controller

async def main(loop):
    amp = await async)get_amp_controller('monoprice6', '/dev/ttyUSB0', loop)
    zone_status = await amp.zone_status(11)
    if zone_status.power:
        await amp.set_power(zone_status.zone, False)

loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))

Supported Multi-Zone Amps

Manufacturer Model(s) Zones Supported Series Notes
Xantech MRAUDIO8X8 / MRAUDIO8X8m 6+2 YES xantech8 audio only; zones 7-8 are preamp outputs only
MX88a / MX88ai 8 YES xantech8 audio only; ai = Ethernet support (MRIP)
MRC88 / MRC88m 6+2 YES xantech8 audio + video; zones 7-8 are preamp outputs only
MX88 / MX88vi 8 YES xantech8 audio + video; vi = Ethernet support (MRIP)
CM8X8 / CM8X8DR 8 UNTESTED xantech8 commercial rack mount matrix controller (BNC)
ZPR68-10 6 UNTESTED zpr68-10 6-zone output; 8 source inputs
MRAUDIO4X4 / BXAUDIO4x4 4 NO N/A audio only; only supports IR control
MRC44 / MRC44CTL 4 NO N/A audio + video; only supprots IR control
Monoprice MPR-SG6Z / 10761 6 UNTESTED monoprice6 audio only
Dayton Audio DAX66 6 UNTESTED monoprice6 audio only
DAX88 6+2 YES dax88 audio only
Sonance C4630 SE (6-zone) / 875D MKII (4-zone) 4-6 UNTESTED sonance6 audio only
Soundavo WS66i 6 UNTESTED monoprice6 audio only; see pyws66i; does not support telnet/IP control (yet)
  • The Monoprice MPR-SG6Z and Dayton Audio DAX66 appear to have licensed or copied the serial interface from Xantech. Both Monoprice and Dayton Audio use a version of the Xantech multi-zone controller protocol.
  • Soundavo WS66i is an updated version of the Monoprice 10761 which includes 2 wireless streamers, IP/telnet-based control, etc. It has not been tested with this, but should use the monoprice6 integration when RS232 controlled.

Xantech High-Density Cable Models

Some Xantech MX88/MX88ai models use high-density HD15 (or DE15) connectors for rear COM ports, thus requiring Xantech's "DB15 to DB9" adapter cable (PN 05913665). The front DB9 RS232 and USB COM ports cannot be used for device control on these models. Instead, use the rear COM ports which are already wired as a 'null modem' connection, so no use of null modem cable is required as the Transmit and Receive lines have already been interchanged.

MX88 RS232 Control Cable (Xantech Part 05913665)

Thanks to @skavan for figuring out the pinouts for the discontinued RS232 Control DB15 cable (PN 05913665) with incorrect pinouts listed in the Xantech manual. The following are the correct pinouts:

HDB15 Male Function DB9 Female DB9 Color Function Notes
13 Tx 2 Brown Rx
12 Rx 3 White Tx
4 DSR 4 Green DTR
6 DTR 6 Red DSR
9 GND 5 Yellow GND Ground (see also pin 11)
11 GND 5 Yellow GND Ground (OPTIONAL)

Example parts needed to build a custom Xantech MX88 style cable:

For help, ask questions on the support forum

Expansion Port Cable (Xantech Part ???)

Pinouts as documented in the Xantech MX88 manual:

HDB15 Male Function DB9 Female DB9 Color Function Notes
2 Tx 2 Brown Rx
3 Rx 3 White Tx
4 DSR 4 Green DTR
5 GND 5 Yellow GND Ground
6 DTR 6 Red DSR

This may be the Xantech Null Modem Cable PN 05913560.

See Also

Other

Community Engagement

Sites with active community engagement around the Xantech, Monoprice, and Daytona AUdio multi-zone amplifiers:

Metadata

Release files for pyxantech 0.10.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyxantech 0.10.7
File Size Uploaded Provenance Actions
pyxantech-0.10.7.tar.gz 29.3 kB With provenance Details for pyxantech-0.10.7.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pyxantech 0.10.7
File Interpreter ABI Platform Actions
pyxantech-0.10.7-py3-none-any.whl Python 3 none any Details for pyxantech-0.10.7-py3-none-any.whl

Total release size: 57.0 kB

Release files / pyxantech-0.10.7.tar.gz

Download URL pyxantech-0.10.7.tar.gz
Size 29.3 kB
Tags Source
SHA-256 checksum
How to use checksums
04b4c2332abcc3c9cf91ba7ba954509ade80a42b7201aacc4641883ce2f32108
BLAKE2b-256 checksum
How to use checksums
427f277f3daddcd38a9d1fdfe4f22c2bad9fe30fc3be2c882344c4d214d2e0fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 23, 2026.

Transparency log

Release files / pyxantech-0.10.7-py3-none-any.whl

Download URL pyxantech-0.10.7-py3-none-any.whl
Size 27.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ac787568e63856fd4285da5547dde81df0ebb73fe6f97b92b2273d6c4eb4d1ac
BLAKE2b-256 checksum
How to use checksums
293e17d7ae45829c5a678382566b41e11bcd3772cb6088d2064c5a34d67572f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 23, 2026.

Transparency log

Security for pyxantech 0.10.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pyxantech-0.10.7.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page