Each supported meter family has its own wire protocol documented under
docs/research/<family>/reverse-engineered-protocol.md. Those per-family
documents are the authoritative reference for transport, framing, mode
tables, flag bytes, command encoding, and hardware-verified behavior.
- UT61+ / UT161 family
— UT61B+, UT61D+, UT61E+, UT161B, UT161D, UT161E. Covers per-model
differences; defers to research/ut61eplus/reverse-engineered-protocol.md
for the full CP2110/CH9329 transport,
AB CDframing, request/response format, flag bytes, sampling rate, and implementation quirks. - UT8803 / UT8803E (bench DMM)
- UCI bench family — UT8802 and transport variants (extends the UT8803 spec with the UT8802 0xAC wire format and the CP2110/CH9325/serial transport alternatives)
- UT171 series
- UT181A
- UT803 / UT804 — proprietary structured data in FS9721 framing
Families that use a 0xAB 0xCD header share a framing skeleton but
differ in the details: UT61+/UT161, UT8803, VC880, and VC890 use a
1-byte length plus a 16-bit big-endian sum checksum, while UT171
and UT181A use a 2-byte little-endian length (counting payload +
checksum) plus a 16-bit little-endian sum. UT8802 uses a 0xAC
single-byte header with BCD frames and no checksum, and UT803/UT804
carry proprietary structured data inside FS9721-style framing — see
the per-family docs for the exact wire format.
The UART byte stream is transport-agnostic within each family. Three HID bridge chips appear across the supported devices:
- CP2110 (Silicon Labs) — bidirectional HID-to-UART, used by UT61+/UT161 and the UCI bench DMMs (UT8802/UT8803).
- CH9329 (WCH) — bidirectional, driverless, found on newer UT-D09 cables for UT181A / UT171 / UT243, and reported on a UT61B+.
- CH9325 (QinHeng / HE2325U) — receive-only HID bridge used by UT803/UT804 and some UT-D04 cables. Can stream meter data to the host but cannot send commands back.
See each per-family doc for the HID report layout and any chip-specific initialization sequence.
For how the library works out which family is on the wire from the bytes it sends, see detection-design.md.
For verification status and the outstanding hardware-testing backlog, see verification-backlog.md.
These third-party implementations are useful cross-references when
extending the UT61E+ family support, but are not consumed by the
clean-room research docs under research/ — cite them in review
discussion, not in the spec files.
- ljakob/unit_ut61eplus — Python implementation (UT61E+, most complete)
- mwuertinger/ut61ep — Go implementation (UT61E+)
- pylablib — Python implementation (VC-880)
- Silicon Labs AN434 — CP2110/4 HID-to-UART interface specification