Skip to content

MouseLatencyTester 1.2.0 — Probe-to-Photon

Latest

Choose a tag to compare

@github-actions github-actions released this 21 Aug 16:12
· 2 commits to main since this release
03d0c5e

The hardware is finished, and there is a second way to measure.

Probe-to-Photon

A separate measurement mode, firmware v1.5. t₀ is the same probe contact on D2, taken in the same interrupt as always; t₁ is the first KY-018 reading past a calibrated threshold. The dashboard shows a large black target in the centre of the screen and flips it to white the instant Windows reports the click — so the number covers the mouse, the link, the OS input stack, the application's repaint, the compositor, the GPU queue and the panel.

Measured on real hardware: 40 clicks, ~16 ms median, against ~3 ms for the same mouse in Probe-to-PC.

Warning

The KY-018 is a photoresistor. Its own response time is in the milliseconds — the same order as what is being measured — and it is part of every figure this mode reports. Use Probe-to-Photon to compare one setup against itself. It is not an absolute click-to-photon benchmark, and the ~13 ms difference above is the display pipeline and the sensor together, not "my monitor adds 13 ms".

The calibration is automatic and happens on the target itself: black, settle, sample, white, settle, sample. Baselines closer than 60 ADC counts refuse to arm and the window stays open with a live light reading so the sensor can be aimed by watching a number instead of guessing.

The two modes never mix. Different wire token, separate firmware statistics, runs.mode in the archive, and the Compare tab says so when a comparison spans both.

The buttons do something

BTN1 enters and leaves test mode, BTN2 clears the live run outside it, after the 10-press acceptance test passed on hardware. The firmware still only reports a press; the dashboard decides and refuses one that would disturb a run. New preference, on by default: ask before BTN2 clears a run.

Fixed

  • The live tab's right-hand column scrolls. With the optical panel showing it was taller than a laptop screen, which put Enter test mode below the bottom edge of the window.
  • "Access denied" on the COM port at startup: the serial reader thread is joined on close so Windows really releases the handle, and the automatic connection retries quietly instead of opening a modal.

Hardware: settled

Every component is built, wired and verified. The 2N2222A and the 220 Ω resistors are not needed — they were on an early parts list and never found a role. If you bought the kit, leave them in the drawer.

The mouse is still never touched: no opening it, no soldering to its PCB, no transistor across its microswitch. Removable copper tape on the outside of the button remains the only mouse-side modification.

Next up is a 3D-printed enclosure, including a mount to hold the probe steady — probe alignment is the largest error source in the whole method.

Upgrading

  • Flash firmware/latency_tester_photon_v1_5/. The Probe-to-PC measurement path is byte-identical to v1.4 and v1.3, so your existing runs stay comparable.
  • The archive migrates itself to schema v3 in place. Existing runs read as probe_to_pc — the only mode that existed when they were written. Nothing is deleted.
  • 293 tests, 88% coverage of the non-GUI code, green on Windows and Linux across Python 3.10 and 3.12.

The installer is not code-signed, so SmartScreen warns on first run. Verify SHA256SUMS.txt.