Skip to content

v3.12.0 – GZI0x per-zone polling (more resilient, simpler)

Choose a tag to compare

@FX6W9WZK FX6W9WZK released this 17 Mar 12:14

Major improvement

Complete rewrite of the MTX polling strategy. Replaces the bulk query approach (GVALL/GRALL/GMALL + individual bass/treble) with per-zone GZI0x queries.

Why this is better

Old (bulk) New (GZI0x)
Commands per poll 3-19 (with cache) 8 (always)
Duration ~2-20s (varies) ~5-6s (consistent)
Failure impact One garbled GVALL → all zones lost One failed zone → only that zone keeps previous data
Bass/treble Cached, stale 80% of time Always fresh
Code complexity 264 lines, cache logic, bulk fallback 183 lines, simple loop

How it works

Each zone is queried individually with GZI0x, which returns all 5 values in one response:

GZI01 → volume^routing^mute^bass^treble

If a single zone fails to respond:

  • That zone keeps its previous data (passed via previous parameter)
  • All other zones update normally
  • A warning is logged: MTX: 1/8 zones returned no data, kept previous state: [3]

This eliminates the intermittent status loss (0/6 zones) that occurred when a bulk response was garbled.