Skip to content

Protocol

Igor Kuz edited this page Jul 31, 2026 · 1 revision

Protocol

The full reference lives in the repo: docs/PROTOCOL.md.

Summary of what this integration establishes (much of it in no HTD documentation):

  • Frame format 02 <res> <zone> <cmd> <data…> <checksum>; checksum = sum mod 256. Query-ID reply is bare ASCII (Lync12) with no framing.
  • Volume, bass, treble, balance use signed bytes on firmware v3 — HTD's Serial Commands v1.1 PDF's 0x80-offset tables are wrong.
  • Doorbell message 0x1F (undocumented, discovered by live capture): data 0x02 = chime started (input bitmask), 0x00 = chime ended. During the chime the unit powers zones on and routes them to Intercom, without reverting afterwards.
  • Source select codes: 1-12 → 0x10-0x1B, 13-18 → 0x63-0x68, MP3/Intercom → 0x7E. Party-mode variants 0x36-0x41/0x69-0x6E are sent per zone, not broadcast.
  • Doorbell enable/disable uses reserved byte 0x01.
  • Zone status frames are 14 bytes; the input byte is 0-based; D1 bit 7 is set on v3 and must be masked.

Verified against: a real Lync 12 (firmware v3), HTD's published Lync Hex Codes, and the official HTD Android app (Cordova — its command logic is plain JavaScript).

Clone this wiki locally