Skip to content

test(incott): verify model code 0x02 on an original G23 Pro - #261

Open
finnwasabi wants to merge 1 commit into
OpenMouse-Project:mainfrom
finnwasabi:test/incott-g23-pro-identity
Open

finnwasabi wants to merge 1 commit into
OpenMouse-Project:mainfrom
finnwasabi:test/incott-g23-pro-identity

Conversation

@finnwasabi

@finnwasabi finnwasabi commented Oct 29, 2026 •

Copy link
Copy Markdown

First hardware sighting of Incott model code 0x02 (G23), from a first-generation G23 Pro. Tests, docs and captures only; no codec or driver change.

Device

  • Incott G23 Pro (original, not V2), PAW3950, white
  • Wired: 093A:622C, product string incott Esports G23 Pro mouse
  • Wireless: 093A:522C through the 8K dongle, product string incott 8K wireless mouse
  • Firmware version: not exposed by the device or the reports

Tested on hardware

OpenMouse hardware test (control.openmouse.app BETA v2.0.59d, Chrome 156, Windows 11), 2026-10-29, once per link:

Link Identity reply
Cable only, wireless switch off, no dongle 09 8f 01 02 00 f1 00 00 00
Dongle only, cable unplugged 09 8f 01 02 02 f0 f1 00 02

Every report sent in both sessions is a query (0x81 to 0x8F); nothing was written to the mouse. The two reports are committed unmodified under captures/incott-g23-pro/ (no serial string is exposed).

Changes

  • src/incott/index.test.ts: one test decoding both real frames to model G23, PAW3950, "G23 Pro", with and without the 8K receiver.
  • docs/incott-testing.md: marks the 0x02 row as hardware-confirmed and adds "A second model on hardware: the original G23 Pro".
  • captures/incott-g23-pro/: the two hardware test reports and a README.

Observed, not explained (documented, no code change)

  • Byte 8 reads 0x02 on 69 of 70 full dongle replies whatever the command, so it looks like a per-link trailer rather than identity data.
  • The transaction queue's discard read right after each identity reply came back shifted by one byte (09 8f 01 02 02 f0 f0 f1 02, 4 of 4). The driver never decodes that read, so naming is unaffected.
  • Over the dongle the 0x85/0x02 reply carried a stale 0xF1 at byte 5 (09 85 02 03 0a f1 00 00 02), left over from the identity reply.
  • Lift-off read hw 2 ("Low") on both links; this does not settle the millimetre mapping.

Checks

  • npm run check: 2716 tests pass, npm pack --dry-run clean, git diff --check clean.
  • No exported API changed, so the OpenMouse check against a local package was not run.

Related artwork request: OpenMouse-Project/openmouse#1276.

Note

Verify Incott model code 0x02 on an original G23 Pro with test fixtures

  • Adds OpenMouse hardware test reports for the original G23 Pro, wired (product ID 0x622C) and dongle (0x522C), plus fixture documentation in README.md
  • Updates incott-testing.md to mark model code 0x02 as hardware-confirmed and records observations from the reports, including sensor-slot position, wireless reply trailer byte, and lack of colour identification
  • Adds identity-frame fixtures and tests in index.test.ts covering wired and dongle identity decoding: G23 model, PAW3950 sensor, receiver detection, and the wired model code

Macroscope summarized a5da85c.

Summary by CodeRabbit

  • Documentation
    • Added hardware reference information for the original G23 Pro, including wired and wireless connection details and observed differences when using an 8K receiver.
  • Tests
    • Added coverage for identifying the original G23 Pro over a cable and through an 8K receiver, including sensor and receiver detection.

Hardware test reports from a first-generation G23 Pro, cable only and 8K
dongle only, both read-only. Model code 0x02 decodes to "G23 Pro" on both
links and the 0xF1 sensor slot moves with the receiver as on the G23V2.

Also records what the wireless report shows but does not explain: byte 8 is
a 0x02 trailer on nearly every dongle reply, the discard read after the
identity reply is shifted by one byte, and a stale 0xF1 lands in the 0x85/02
payload.
@github-actions github-actions Bot added type: tests PR title category: tests area: protocol Protocol codecs and shared types area: tests Protocol and driver tests area: captures Protocol captures and device evidence area: documentation Documentation labels Oct 29, 2026
@coderabbitai

coderabbitai Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between afdde73 and a5da85c.

Files selected for processing: 5
  • captures/incott-g23-pro/README.md
  • captures/incott-g23-pro/openmouse-hardware-test-wired.json
  • captures/incott-g23-pro/openmouse-hardware-test-wireless.json
  • docs/incott-testing.md
  • src/incott/index.test.ts

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

Walkthrough

The PR documents read-only wired and wireless captures from the original G23 Pro and adds tests for decoding its identity responses. The captures confirm model code 0x02 and record the sensor-byte position with and without an 8K receiver.

Changes: Original G23 Pro identity

Layer / File(s) Summary
Capture evidence and identity decoding
docs/incott-testing.md, src/incott/index.test.ts, captures/incott-g23-pro/README.md
The documentation records the wired and wireless captures, hardware-confirmed model code 0x02, and observed response details. Tests check the model, PAW3950 sensor, display name, receiver detection, and dongle payload. The README identifies the connection setups and points to the test frames and testing write-up.

Priority: Low

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Other

Suggested labels: area: tests, area: documentation

Suggested reviewers: vladidraganov

Merge Risk: Minimal · up to a5da8

This change documents original G23 Pro hardware behavior and adds identity-decoding coverage. No merge-blocking issue is identified; merge after normal checks pass.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title names the main change: adding tests that verify model code 0x02 on an original G23 Pro. The raw summary confirms a new identity-response test for model code 0x02 on cable and through the 8K …
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title names the main change: adding tests that verify model code 0x02 on an original G23 Pro. The raw summary confirms a new identity-response test for model code 0x02 on cable and through the 8K receiver, plus documentation and captures for the same device. The title is specific and matches the changeset. It is conventional in form and uses a 'test(incott):' scope prefix. It is 59 characters, within a typical length limit.

Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 1 files. (2 skipped: 2 unsupported.)

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@macroscopeapp

macroscopeapp Bot commented Oct 29, 2026

Copy link
Copy Markdown

Approvability

Verdict: Approved at a5da85c

Macroscope's review found this PR approvable — Adds G23 Pro hardware reference captures and regression coverage for identity decoding over cable and receiver. Production behavior and device communication are unchanged, leaving no obvious material operational risk.

Notes:

  • Your repo's Minimum Blocking Severity is Off, so correctness findings do not automatically block approval.

You can add or adjust custom eligibility rules. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: captures Protocol captures and device evidence area: documentation Documentation area: protocol Protocol codecs and shared types area: tests Protocol and driver tests type: tests PR title category: tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant