Skip to content

Help wanted: UT8803 protocol verification (real hardware needed) #3

Description

@antoinecellerier

Summary

The UT8803/UT8803E protocol has been implemented based on reverse engineering (vendor software decompilation, community implementations) but has never been tested against real hardware. Every aspect needs end-to-end verification.

What we need

Someone with a UT8803 or UT8803E multimeter and the CP2110 USB adapter.

What needs verification

  • Frame extraction (21-byte frames, AB CD header, big-endian checksum)
  • 0x5A streaming trigger byte — does the meter start streaming after this is sent?
  • Mode byte mapping (23 position codes, 0x000x16) — do the mode labels match the meter's LCD?
  • Range byte (0x30 prefix, like UT61E+)
  • Display bytes (5 raw bytes) — ASCII or binary encoding?
  • Flag byte → semantic flag mapping (HOLD, REL, MIN, MAX, AUTO, OL) — the raw-byte-to-status-word construction is complex; current bit assignments are plausible guesses
  • Display value parsing (5 bytes → float) — are parsed values correct?
  • Streaming rate (~2–3 Hz per manual)

Verification steps

1. Run the capture wizard

cargo run --bin dmm-cli -- --device ut8803 capture

The wizard will walk you through each measurement mode. Follow the prompts, confirm what the LCD shows vs. what the tool parsed.

2. Raw byte dump

If the capture wizard doesn't work at all (no response from meter), try a raw debug dump:

RUST_LOG=dmm_lib=trace cargo run --bin dmm-cli -- --device ut8803 debug

This shows raw HID bytes. Even if parsing fails, the raw dump tells us if framing is correct.

3. Basic reading

cargo run --bin dmm-cli -- --device ut8803 read --count 10

Compare each displayed value against the meter's LCD.

What to report

Open an issue or comment here with:

  • Meter model (UT8803 or UT8803E)
  • OS and version
  • Result of each step above
  • The capture YAML file (if the wizard produced one)
  • Any raw debug output if things didn't work
  • Screenshots of the meter's LCD alongside the tool's output are very helpful

Reference implementations

If you want to cross-check behavior:

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions