Xantech / Dayton Audio / Sonance multi-zone amps

Getting there. thanks so much for your quick response. I have used copilot and it has been very helpful in getting HA going. I have had more success than I thought.

here is my config yaml:

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
media_player: !include media_player.yaml

# Serial connection for DAX88
serial:
  port: /dev/ttyUSB0
  baudrate: 9600  # Matches typical RS232 settings for DAX88

xantech:
  devices:
    - name: DAX88
      # The following fields are commented out since we're using RS232 instead of network control.
      # host: 10.0.1.77
      # port: 23
      zones:
        1:
          name: "Kitchen"
          bass: true
          treble: true
        2:
          name: "Family Room"
          bass: true
          treble: true
        3:
          name: "Study Hallway"
          bass: true
          treble: true
        4:
          name: "Dining Rm Living Rm"
          bass: true
          treble: true
        5:
          name: "Game Rm"
          bass: true
          treble: true
        6:
          name: "Patio"
          bass: true
          treble: true
        7:
          name: "Pool House"
          bass: true
          treble: true
        8:
          name: "MBR"
          bass: true
          treble: true
      sources:
        1: "Sonos"
        2: "AirPlay"
        3: "Computer"
        4: "Fam Rm TV"
        5: "Game Console"
        6: "Streaming Box"
        7: "Turntable"
        8: "WiFi"

Any suggestions? And, should it just appear on my ā€œoverviewā€ page? Will the bass and treble for each zone appear as devices?

Thanks!

Now working! Thanks and I will explore more!

Just one note, you will not get bass/treble/balance controls. I wrote that and it exists only in my copy. A while back @ryans recommended waiting for that to come in core media player instead of my (hack … my words) solution.

1 Like

Has there been any word about something like this being added to core media player? I haven’t checked.

If others really want these controls, I’d be fine with integrating your changes, if you want.

I have not seen anything either.
I made changes … GitHub - kbrown01/hass-xantech: Xantech Multi-Zone Matrix Audio for Home Assistant

But only exposes the attributes and service to update them.

That is probably behind yours as I have not installed latest changes you made.

Can you explain what you did? If you got it working via native IP.

I have tried sniffing the traffic, but havent gotten much usefull information about the protocal that way.

Sorry, I should have worded that better. I’m controlling mine using RS232 via Ser2Net on a Raspberry Pi. I didn’t get it working via the native IP.

Hi Guys, I’ve successfully connected my Dayton Audion DAX88 using a IP-Serial Connection. The problem is, it stops working after a while and I get the error ā€œFailed to perform the action media_player/turn_off. Attempting to use a port that is not openā€. I’m not too tech savvy so I cant figure how to solve this.

I was getting an error with an automation when I’m calling set_treble and I think this is what’s causing it. I’m running home assistant OS on a raspberry pi, so I don’t think I am able to modify the pyxantech library on my system. Is there a way to get around this? Was wondering if I installed pyxantech as a custom component and made the change there if that would work or still call the site-packages version.

I’m also not able to set_bass to over 14. It looks like this is being limited in pyxantech for dax88 instead of 0-24 for bass/treble.

I’m looking at getting a DAX88. Did you ever get this resolved?

Hi … it didn’t get totally resolved but atleast made the connection last longer before it gets terminated.

Maybe using a usb to serial will solve the problem but I haven’t tried it yet.

All the best with your purchase :slight_smile:

I’m also considering the Soundavo WS66i but I lose a zone if I go with that.

I use the USB Serial cable that actually comes in the package of the Dax 88. Hooked it up years ago. Never had any issues whatsever, runs solid as a rock.

I came back from vacation and the integration is not working. Getting this error:

Failed to perform the action media_player/turn_on. 'NoneType' object has no attribute 'reset_output_buffer'

any thoughts?

I rolled back to the prior Xantech version and it is now working again.

Hi, if anyone has a DAX88, ive been working on a home assistant integration to control that device over the network instead of using serial

Matrio Control Thread
Matrio Control Repository

1 Like

Hi @cwelsh1812, since I can’t get the USB to serial cable to work, I decided to get a Global Cache IP2SL for another round of testing. Two questions:

1- Which type of cable do you use between the IP2SL and the Xantech?
2- Which port do you use on the Xantech (front or back?)

Thank you!

IP2SL is now connected to the network (192.168.x.x) and I have built the recommended DB9 to DB15 cable

My configuration

media_player:
  - platform: xantech
    type: xantech8
    port: socket://192.168.x.x:4999
    zones:
      1: 
        name: "ZONETEST1"
    sources:
      1:
        name: "SOURCETEST1"

edited IP address.
Also tried zone11 with the same results.

Log/errors below.

Let me know if you have any idea where the problem is / troubleshooting tips

Thank you!

The deprecated alias HomeAssistantType was used from xantech. It will be removed in HA Core 2025.5. Use homeassistant.core.HomeAssistant instead, please report it to the author of the 'xantech' custom integration

Failed updating Xantech House Audio zone 1 (ZONETEST1):

Failed to perform the action media_player/turn_on. unknown error

Detected blocking call to import_module with args ('serial.urlhandler',) inside the event loop by custom integration 'xantech' at custom_components/xantech/media_player.py, line 137: amp = await async_get_amp_controller( (offender: /usr/local/lib/python3.13/site-packages/serial/__init__.py, line 74: importlib.import_module(package_name)), please report it to the author of the 'xantech' custom integration For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#import_module Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module> sys.exit(main()) File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 156, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.13/asyncio/base_events.py", line 712, in run_until_complete self.run_forever() File "/usr/local/lib/python3.13/asyncio/base_events.py", line 683, in run_forever self._run_once() File "/usr/local/lib/python3.13/asyncio/base_events.py", line 2050, in _run_once handle._run() File "/usr/local/lib/python3.13/asyncio/events.py", line 89, in _run self._context.run(self._callback, *self._args) File "/usr/src/homeassistant/homeassistant/setup.py", line 170, in async_setup_component result = await _async_setup_component(hass, domain, config) File "/usr/src/homeassistant/homeassistant/setup.py", line 425, in _async_setup_component result = await task File "/usr/src/homeassistant/homeassistant/components/media_player/__init__.py", line 325, in async_setup await component.async_setup(config) File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 183, in async_setup self.hass.async_create_task_internal( File "/usr/src/homeassistant/homeassistant/core.py", line 829, in async_create_task_internal task = create_eager_task(target, name=name, loop=self.loop) File "/usr/src/homeassistant/homeassistant/util/async_.py", line 44, in create_eager_task return Task(coro, loop=loop, name=name, eager_start=True) File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 344, in async_setup_platform await self._platforms[key].async_setup(platform_config, discovery_info) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 388, in async_setup await self._async_setup_platform(async_create_setup_awaitable) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 448, in _async_setup_platform awaitable = create_eager_task(awaitable, loop=hass.loop) File "/usr/src/homeassistant/homeassistant/util/async_.py", line 44, in create_eager_task return Task(coro, loop=loop, name=name, eager_start=True) File "/config/custom_components/xantech/media_player.py", line 137, in async_setup_platform amp = await async_get_amp_controller(

If you can install the latest hass-xantech from main to pickup version 0.1.4 those warnings should go away. Version 0.1.4 has not been released yet until someone tests this out (I don’t have my Xantech hooked up to HA currently).

This may require you to manually clone the git repo and copy the custom_components/xantech folder over to your HA /config.

Thank you @ryans
l will test and report back.

Out of curiosity, I believe you have an unused MRAUDIO8X8 in storage but do you remember which hardware/software combo (cable type, input port, HA config) was successful?

Another important question: is it essential to ā€œhard resetā€ (how) or ā€œpre-configureā€ the unit with Universal Dragon in order to enable HA control via serial or is this only intended for ā€œstandardā€ keypad type usage? I bought mine used so have no idea how it was configured prior.

Thanks