Skip to content

Version 1.08

Choose a tag to compare

@rh1tech rh1tech released this 28 Apr 15:33
· 86 commits to main since this release

Focus: PS/2 mouse support now works with a much wider range of devices, including cheap and older mice that previously failed to initialize.

Fixes

  • Handle the device's 0xFE (RESEND) reply. A single corrupt host-to-device byte no longer fails the whole init; the driver retries the byte as the spec requires.
  • Handle the device's 0xFC (ERROR) reply the same way. The spec says 0xFC is BAT-only, but many real-world mice send it post-BAT as a soft "please resend". The driver now treats it as a retry request instead of a fatal error.
  • Wait for the bus to be idle (CLK and DATA both high) before every host-to-device transmit. Slower mice that hold the lines a little longer no longer cause a request-to-send collision.
  • Add a 50 ms settling delay after BAT completes, plus a drain of any stragglers in the PIO RX FIFO, before the first configuration byte. Mice that were still finishing internal init no longer get commands thrown at them too early.
  • Flush the RX FIFO before every command. A leftover response from a previously failed command can no longer be misread as the answer to the current one.
  • Replace the old 4-try / 5 ms retry loop with 2 tries at 30 ms. The faster loop was flooding some mice into a locked state that even a fresh reset couldn't recover from.
  • Add a communication-inhibit bus recovery step between init attempts: CLK held low for 20 ms, both lines released for 30 ms, then the PIO state machine is restarted. Retry attempts now start from a clean bus instead of a wedged one.
  • Fall back gracefully when the IntelliMouse magic knock fails. Previously the driver gave up; now it continues in plain 3-button mode.

Diagnostics

  • Command timeouts log timed out waiting for ACK instead of 0xFFFFFFFF.

Assets

  • frank-snes_m1_1_08.uf2 — firmware for M1 board variant
  • frank-snes_m2_1_08.uf2 — firmware for M2 board variant
  • metadata.zip — sdcard ROM metadata bundle