The maintained protocol sources are the .proto files under
src/dwarf_alpaca/proto. Generated Python bindings are checked in because the
runtime imports them directly. Regenerate and validate with:
uv run python scripts/generate_protos.py
uv run python scripts/generate_protos.py --check
Evidence and confidence for reverse-engineered V3 additions are recorded in the APK analysis, with the full application registry in api-inventory.json.
The firmware alignment audit is documented in firmware-comparison.md. Transport/framing details are in transport.md, and unresolved conflicts are retained in UNRESOLVED.md rather than guessed.
Machine-readable, field-by-field results are available in
firmware-schema-audit.json and
firmware-command-audit.json; their compact
Markdown summaries are generated by the audit tools in tools/protocol.
For controlled hardware validation, tools/protocol/safe_live_probe.py performs
a read-only BLE/state probe by default. Supplying --exposure-seconds explicitly
enables one astronomy exposure; the tool never calibrates, focuses or moves the
mount.
Important Mini values:
| Definition | Value | Applicability | Confidence |
|---|---|---|---|
| WS major/minor | 1/20 | Mini firmware 1.1.3 build 2 | app code and hardware traffic |
| WS device ID | 4 | Mini | app code and hardware traffic |
| Astro / Duo-Band / Dark | 1 / 2 / 3 | newer filter enum; Dark calibration-only | app code, normal filters hardware-confirmed |
| Get/set quick-set parameters | 11040 / 11041 | shared API; hardware-verified on Mini | firmware descriptor, app code, traffic |
| Calibration-frame list | 11043 | shared API; response semantics unresolved | firmware descriptor and app code |
| Start/stop calibration-frame capture | 11045 / 11046 | shared API | firmware descriptor and app code |
| Calibration state/progress | 15290 / 15291 | shared API | firmware descriptor and app code |
DWARF 2, DWARF 3 and DWARF Mini use the same version-3 application protocol surface. Device profiles still supply model-specific WebSocket identity, capability and hardware differences; for example, DWARF 2 has no built-in filter wheel.
Do not turn a registry entry into a production capability without model and firmware evidence. Preserve unknown protobuf fields and use placeholder names when semantics are not established.