Skip to content

Releases: rsnodgrass/hass-xantech

v0.3.2

23 Feb 08:09

Choose a tag to compare

Fix: MRAUDIO8x8 source selection and command failures

Problem

All commands (source selection, volume, power, etc.) failed silently on Xantech MRAUDIO8x8 amplifiers. The root cause was a zone ID mismatch between two layers:

  1. Config flow defaults suggested zone IDs 11-18 for all xantech8 models
  2. pyxantech only validated against primary zones 1-8 for xantech8, rejecting 11-18 with ValueError

Because the integration uses optimistic state updates, the errors were swallowed — the UI appeared to work but no RS232 commands were actually sent to the amplifier.

Other xantech8 models (MRC88, MX88) were less affected because users with those models often entered zones matching pyxantech's expected format.

flowchart LR
    A[Config flow defaults<br/>zones 11-18] --> B[pyxantech validates<br/>zones 1-8 only]
    B --> C[ValueError: Invalid zone 11]
    C --> D[Commands fail silently<br/>optimistic state masks it]

Fix

pyxantech v0.10.7 (upstream dependency):

  • New _get_valid_zones() merges primary zones with alternative_zones from device config
  • All 8 command functions now accept both zone ID formats
  • xantech8 now validates against the full set: 1-8, 11-18, 21-28, 31-38

hass-xantech v0.3.2 (this release):

  • Config flow and options flow now validate entered zone IDs against pyxantech's device config
  • Invalid zone IDs show a clear error instead of silently failing later
  • Updated zone step descriptions to explain both formats:
    • Two-digit (11-18): Most Xantech models (MRC88, MX88) — first digit is controller unit, second is zone
    • Single-digit (1-8): Standalone MRAUDIO8x8 units
  • Defaults remain 11-18 since most users have newer multi-unit models

Dependencies

v0.3.1

14 Jan 04:07

Choose a tag to compare

Bug Fixes

  • Fix options flow config_entry attribute storage
    • Changed self.config_entry = config_entry to self._config_entry = config_entry
    • HA's OptionsFlow base class has config_entry as a property that reads from _config_entry
  • Bump pyxantech to v0.10.5 which fixes the DAX88 treble command format string

Testing & Quality

  • Add test to verify XantechOptionsFlow stores config_entry correctly
  • Update test fixtures for newer Home Assistant versions
  • Add mypy type checking to pre-commit hooks
  • Add pytest to pre-commit hooks to run tests before every commit

v0.3.0 - Advanced Audio Controls

12 Jan 23:05

Choose a tag to compare

New Features

Optional Bass, Treble & Balance Controls

  • New setting: "Enable advanced audio controls" in the zone configuration step
  • When enabled, creates number entities for each zone with slider controls:
    • Bass adjustment
    • Treble adjustment
    • Balance (left/right) adjustment
  • Device-aware: Only creates controls for devices that support them
    • Most Xantech, Monoprice, and Sonance devices support all three
    • ZPR68-10 series only supports bass and treble (no balance control in protocol)
  • Device-specific ranges: Control limits (min/max values) are loaded from the device configuration

Improved Options Flow

  • Merged "Features" step into the zones configuration step for a more streamlined setup experience
  • Reduced total setup steps from 4 to 3

Requirements

  • Home Assistant 2025.2.0 or newer
  • pyxantech >= 0.10.4 (includes device capability flags)

Notes

  • The advanced audio controls are disabled by default to avoid polluting the entity database
  • Existing installations can enable the feature via the integration's Options menu

v0.2.6

12 Jan 04:41

Choose a tag to compare

What's New

Bug Fixes

  • Fixed sonance amp type key to sonance6 (matches pyxantech library)
  • Fixed DAX88 default sources to show all 8 inputs instead of 4

UI Improvements

  • Amp type selector now shows radio buttons with descriptive labels listing all supported models:
    • xantech8: MRC88, MX88, MRAUDIO8X8
    • monoprice6: MPR-SG6Z, DAX66, WS66i
    • dax88: Dayton Audio DAX88 (6+2 Zone)
    • sonance6: C4630 SE, 875D MKII
  • Implemented optimistic updates for instant UI feedback on power, volume, mute, and source changes (fixes slow UI response)
  • Fixed rapid-click handling to prevent UI flicker when toggling power quickly

New Features

  • Options flow: Edit configuration after initial setup:
    • Polling interval
    • Connection settings (serial port or socket URL)
    • Zone names
    • Source names

This allows existing users to add more sources or rename zones without re-adding the integration.

v0.2.1 - Config Flow UX Improvements

10 Jan 20:44

Choose a tag to compare

What's New

Improved config flow user experience:

  • Action-oriented step titles (Name Your Zones, Name Your Audio Sources)
  • Realistic default room/source names (Living Room, Kitchen, TV, Streaming)
  • Explained Xantech zone ID numbering convention
  • Added model numbers to amplifier type dropdown
  • Better error messages with examples

No breaking changes - existing configurations will continue to work.

Compatibility

  • Home Assistant: 2025.2.0+
  • Python: 3.13+

0.2.5

11 Jan 15:02

Choose a tag to compare

Changes

  • DAX88 default zones now correctly set to 11-18
  • Requires pyxantech>=0.10.3 which fixes:
    • RateLimitException bug causing cascading timeouts
    • ZoneStatus.dict returning raw strings instead of converted bools/ints (broke power status)
  • Added docstring documenting expected types from pyxantech

Bug Fixes

This release addresses timeout errors and power status issues reported by DAX88 users after upgrading to 0.2.2/0.2.3.

v0.2.2

11 Jan 00:35

Choose a tag to compare

What's Changed

Bug Fixes

  • Requires pyxantech 0.10.0 which fixes AttributeError: 'NoneType' object has no attribute 'groupdict' when amplifier returns unexpected response format for zone status queries

Upgrade

Update via HACS or manually replace the custom_components/xantech folder.

v0.2.0 - Home Assistant 2025.2+ Modernization

10 Jan 19:50

Choose a tag to compare

What's New

  • Modernize to Home Assistant 2025.2+ standards
  • Add DataUpdateCoordinator pattern
  • Update Python 3.13+ type hints and async patterns
  • Add diagnostics support
  • Add comprehensive test suite
  • Fix ruff lint errors

Compatibility

  • Home Assistant: 2025.2.0+
  • Python: 3.13+

0.1.3

18 Jan 02:32

Choose a tag to compare

Bump version to 0.1.3 to see if this will trigger pyxantech 0.8.1 to download for users that have
been having problems.

https://community.home-assistant.io/t/xantech-dayton-audio-sonance-multi-zone-amps/450908/141

0.1.2

06 Jan 18:10

Choose a tag to compare

  • pickup pyxantech changes to reduce min time between commands from 400ms to 50ms (allows sending multiple commands faster)