Mouse joystick observability development plan¶
Workstream: OBS-HW-JOYSTICK (board slice of OBS-HW).
Status: Planned, updated 2026-09-30. All new work below is pending.
The system architecture (orb-weaver-context/context/experimental-system-observability.md)
and development roadmap (orb-weaver-context/context/experimental-system-observability-plan.md)
own the cross-repository intent, gate definitions, and workstream dependencies.
This document owns only this board's contribution. It records planned work,
not new electrical measurements, hardware validation, or deployment approval.
Current evidence and board boundary¶
The routing handoff identifies the finished v1.0 layout. The interface map owns its actual GPIO and Digital-50 allocation, including observation tap locations. Use its v1.0 map instead of historical InstrumentPort-40 assignments. The validation plan and bring-up log remain the local acceptance and measured-evidence records. Dated completion notes supersede older unchecked layout tasks; this plan does not reopen completed routing.
As of the adapter's 2026-09-28 bring-up record (la5032-instrument-port-adapter/docs/bringup-log.md),
the v1.0 companion target was ordered and awaited. Confirm receipt and the
actual unit before scheduling its electrical tests. Existing v0.x measurements
remain evidence for their identified units and assemblies. They do not qualify
the new Digital-50 path.
The board has one joystick axis and one pyControl UART. pyControl retains experiment sequencing; firmware retains bounded motion and local fault responses. Encoder and limit inputs reach the TMC5130A, not MCU GPIOs; the InstrumentPort provides independent electrical witnesses to those signals. Analog amplitude and physical motion require their own measurements.
Direction update, 2026-09-30¶
Retain Digital-50 as the read-only, 32-signal observation interface. Evaluate a separate optional debug/trace connector on a future board revision for a reusable external RP2040 probe. Defer a combined 60-pin observation/debug connector and a permanently on-board debug MCU until a demonstrated need justifies reconsidering them. This reopens future separate-connector planning from the 2026-09-08 rejection; it does not add SWD access to a manufactured board or reopen its completed layout.
Keep the researcher's USB connection direct to the DUT and the probe's USB connection separate. Preserve the pyControl UART's existing responsibility. Two USB connectors do not establish galvanic isolation: review shared grounds, reference levels, power sequencing and unpowered-pin behavior, and prevent VBUS tying or back-powering through either power or signal connections. No connector pinout, pin mux, voltage compatibility, cable assembly or power arrangement is qualified by this decision.
OBS-PROBE (instrument-control/docs/probe-development-plan.md) owns the
external probe/host evaluation; OBS-IF owns the
candidate physical/electrical contract (board-interfaces/docs/debug-trace-interface.md). The upstream RP2040
debugprobe candidate typically offers SWD and one UART bridge. A second
independent UART, simultaneous command/trace capture, or additional probe
functionality must be demonstrated rather than assumed. Choose the actual
command and QS paths with those owners before allocating board pins.
A qualified future interface may permit a probe to remain attached for a specified monitoring session. Attachment alone does not authorize halting, reset, programming, memory/register writes or command injection during an experiment. The current manufactured-board and bench-only restrictions remain in force; future attached-monitoring conditions need explicit scope and electrical/behavioral evidence, including probe reset and disconnect cases.
Debug-Trace-20 and future MCU budget¶
The user accepted the separate
20-pin FFC logical pinout (board-interfaces/docs/debug-trace-interface.md#debug-trace-20-logical-pinout).
Exact parts, power/reset/inhibit circuits, cable behavior and this board's MCU
allocation remain open. Keep the current manufactured revision unchanged. A future
overlay can observe buffered trace TX, SYNC, reset and useful UART nets through
Digital-50; it must not create a drive path or carry raw VTref there.
The current v1.0 interface map allocates 28 GPIOs and reserves GP20/GP22 for unconnected pyControl event/fault functions. Those are not automatically available or a usable hardware UART pair. Full command/trace UARTs plus SYNC use five general GPIOs, with SYNC potentially reusing a marker and bench trace RX optional. RP2040 USB, SWD and RUN use dedicated pins. Observation taps mostly reuse existing nets, so 32 analyzer channels do not imply 32 additional MCU GPIOs.
RP2354B, already cataloged in the inventory, is a candidate for a future board
with more I/O headroom: 48 GPIO rather than 30 and 520 kB SRAM rather than 264 kB.
It still has only two hardware UARTs, so pyControl plus separate command and trace
UARTs needs a deliberate USB/PIO/external-UART or reduced-profile choice. See the
shared assessment (orb-weaver-context/context/experimental-system-observability.md#mcu-choice-and-pin-budget--assessment-2026-09-30)
for sources and scope. The detailed
stocked MCU comparison (orb-weaver-context/context/instrument-controller-mcu-selection.md)
also evaluates STM32G0B1CEU6: six USART plus two LPUART engines, a static three-UART
allocation with USB/SWD, 144 kB SRAM and up to 44 GPIO including USB/SWD/reset
pads. Compare it with RP2354B under a complete joystick pin/peripheral budget.
PIO adds serial engines, not pins, so it cannot by itself solve the current
RP2040 allocation. An occasional PIO command UART is a future RP-board candidate;
driver buffering, IRQ cost and loss visibility need measurement.
An MCU change needs a new power/boot/layout and firmware qualification;
it is not approved by the connector decision. RP2040 remains the
active QP target and external-probe candidate. Do not reassign current pins,
revise the board, or edit library blocks under this documentation task.
Independent execution paths¶
| Path | Ready now | Waiting condition and exit evidence |
|---|---|---|
OBS-HW-JOYSTICK.1: qualification preparation |
Review actual v1.0 overlay, tap points, switched-domain states and existing acceptance limits; prepare channel checklist and evidence manifest with OBS-IF and OBS-FW |
G0: versioned overlay and fixture expectations agreed with their owners; unknowns listed, no guessed pinout |
OBS-HW-JOYSTICK.2: current-board electrical qualification |
Prepare procedures independently of QP and future debug hardware | Physical v1.0 unit and qualified OBS-HW-ADAPTER cable path; G1: measured continuity, levels, loading, pulse fidelity, delay/skew, and operating envelope in the bring-up record |
OBS-HW-JOYSTICK.3: correlated control operation |
Select one existing bounded operation and list its command, bus, encoder/limit, and physical witnesses with OBS-FW/OBS-HOST |
G1/G2 and relevant firmware readiness; G4: synchronized capture with stated uncertainty and explicit missing-data results; adding QS also requires the separately validated QP/target path |
OBS-HW-JOYSTICK.4: future debug/trace revision |
Inventory separate-connector needs and pin/peripheral/power budget with OBS-PROBE without altering the current board |
OBS-IF contract decision, OBS-PROBE capability evidence and local revision decision; reviewed interface proposal first, subsequent implementation and bench evidence on its own revision |
The first two paths can proceed independently of OBS-QP. Its primary G3
qualification target is now RP2040 with Earle Philhower's Arduino core, using
QP/C++ v7.3.4 and QV only. Previous Teensy 4.1 build evidence is preserved;
Teensy hardware validation is deferred and does not block this RP2040 path.
STM32G0B1CEU6 is a later, separately qualified target. Neither target is declared
supported by this planning update. Both RP2040 and STM32G0B1CEU6 use Cortex-M0+
and lack SWO/ITM trace; QS needs a separately qualified TX transport.
Keep current firmware operational while OBS-FW evaluates application adoption.
OBS-QP target qualification does not establish this board's connector, pin
assignment or probe behavior, and OBS-PROBE qualification does not establish
QP scheduling, tracing overhead or application behavior.
Planned tasks and acceptance¶
- [ ]
.1Identify the exact v1.0 unit, overlay revision, expected signal polarities and rates, tap side, power state, and fixture for each test. Derive limits from existing board requirements and component data; give unresolved tolerances an owner before measuring against them. - [ ]
.2Complete the existing Digital-50 electrical acceptance items on the actual board/cable/adapter combination. Include MCU reset, switched domains off, supplies sequenced, and target/analyzer power-off cases. Report which checks need a scope or meter beyond a logic analyzer. - [ ]
.2Compare operation with and without the observation cable under representative simultaneous switching. Record waveform and analog-noise differences, delay/skew, minimum resolvable pulses, maximum qualified rates and cable length. Cable removal alone does not remove the load or switching of the board's fitted buffers. - [ ]
.3Capture one bounded command through UART, relevant SPI/I2C writes, independent encoder or limit activity, and the completion/fault reply. Record which observation establishes software intent, an electrical action, or physical response; firmware completion alone is insufficient. - [ ]
.3Provide positive and deliberately faulty bench examples for the deterministic host monitors. Use controlled fixture conditions; record resets, missing edges, capture gaps and timing ambiguity as such. Existing local safety behavior must remain independent of the monitor or agent. - [ ]
.4Propose a future revision with a separate optional debug/trace connector, external SWD access and a dedicated TX trace path. Add a command UART only for a defined need and demonstrated probe capability. Audit actual pin mux, UART allocation, reset access, reference voltage, grounding, power domains and connector space withOBS-PROBE. No new pin assignment is frozen by this plan. - [ ]
.4Resolve the proposal withOBS-IF,OBS-FWandOBS-PROBEbefore schematic work. Keep all 32 Digital-50 signals read-only and separate from drive-capable debug/control. Defer combined-60 and a permanently on-board debug MCU. An optional second command ingress must use the firmware's command ownership rules; one UART bridge does not imply two simultaneous independent UART channels. - [ ]
.4Preserve direct researcher-to-DUT USB and separate probe USB in the proposal. Review both hosts' grounds and power domains, prevent VBUS tying and signal-pin back-powering, and define powered/unpowered and probe-reset behavior. Qualify any isolation claim separately. - [ ]
.4After a revision is selected and implemented, retain its own build, inspection and bench evidence. Qualify the TX path, trace bandwidth, loss reporting and stopped-reader behavior withOBS-FW/OBS-QP/OBS-PROBEbefore using QS as evidence. SWD is not a replacement for the QS transport on these Cortex-M0+ targets. - [ ]
.4If attached experiment monitoring is proposed, document the permitted read-only/receive-only functions and enforceable limits withOBS-RUNandOBS-PROBE. Demonstrate reset/disconnect behavior and absence of unwanted drive actions; retain the current board's bench-only restrictions until a separately scoped arrangement is qualified. Halting, reset, programming and writes are not authorized by monitoring permission.
The current board's intentionally omitted SWD/debug connection is not a
fabrication defect to repair within this documentation work. G5 live
observation belongs to OBS-RUN after G4 and laboratory-specific acceptance.
It does not require adding a debug MCU, changing pyControl, or rewriting all
drivers.
Evidence, ownership and handoff¶
For each bench session, record the board revision and unit identity, source commit and dirty state, exact adapter and cable, connector views, instrument identity/settings, channel-map version, stimulus, units, uncertainty, and raw capture location/hash. Link measurements from the existing bring-up log; do not copy another board's or revision's results into a new acceptance record. Preserve unsuccessful and incomplete captures and state their limits.
Before measurements, claim the physical DUT, analyzer, cable, power supply, and time window in the shared session record described by the central roadmap. Only one agent/operator controls a claimed instrument or DUT at a time. Offline documentation, fixture review, and saved-capture analysis may run in parallel. A reservation records coordination; it does not authorize motion, reset, stimulus, programming, or a change to a live experiment.
Use docs/bringup-log.md for per-unit measured results and the existing
docs/captures/ hierarchy for retained raw captures and manifests. Link larger
run artifacts from the system/laboratory evidence destination chosen by
OBS-RUN. Reuse the existing instrument strategy
for instrument selection.
One board agent owns docs/observability-plan.md, this workstream's
.agents/PLANS.md entry, and new evidence entries. Arrange a handoff before
editing shared docs/interface-map.md, docs/validation-plan.md, or the
bring-up log concurrently. OBS-FW owns firmware files; OBS-IF owns connector
contracts; OBS-HOST owns decoding and deterministic checks; OBS-PROBE owns
external probe firmware/interface/host evaluation in instrument-control.
Future schematic work is a separately claimed revision task. kicad-libs is
excluded from this documentation work and is not assigned to any parallel agent here.
Close a step only with its result, limits and evidence link, then report the
result to the central roadmap owner. For these documentation changes, check
relative links, git diff --check, and make test; preserve README generated
blocks and all KiCad/fabrication artifacts. Those checks do not pass any
hardware gate.