Skip to content

feat: support AJAZZ AJ179 PRO across USB, receiver and Bluetooth - #169

Merged
snekxs merged 2 commits into
OpenMouse-Project:mainfrom
artembaechka:feat/ajazz-aj179-pro
Oct 6, 2026
Merged

snekxs merged 2 commits into
OpenMouse-Project:mainfrom
artembaechka:feat/ajazz-aj179-pro

Conversation

@artembaechka

@artembaechka artembaechka commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Add AJAZZ AJ179 PRO (device id 1851, PAW3395) to the existing GearHub-V5 family, with USB, 2.4 GHz receiver, and Bluetooth control. No application-specific UI or native service is added.

  • VID 3151; receiver PID 402D and USB PID 4026 use FFFF:0002; Bluetooth PID 402C uses FF55:0202, report 6.
  • Add pure Bluetooth framing and queued WebHID input/output requests, including listener cleanup and optional battery reads.
  • Resolve AJ179-specific Back/Forward slots, eight-slot DPI capacity, and percentage-only battery reporting through profile metadata.
  • Expose every valid DPI step (including 1000), preserve disabled DPI slots/colors and unrelated settings, and reject stale button-matrix responses.
  • Add sanitized receiver fixtures, codec/driver/transport regressions, and detailed evidence and limitations in docs/ajazz-aj179-pro.md.

Evidence and hardware checks

Verified on Windows 11, firmware 3.03. Installed AJAZZ Driver (R) catalog identifies device 1851; its Bluetooth backend provided framing evidence. No vendor binaries, proprietary source, serial numbers, HID paths, or development-only native tools are included.

  • Settings write/readback: 49 receiver, 46 USB, 49 Bluetooth cases.
  • Side-button mapping write/readback: 18 cases per transport; unrelated matrix bytes preserved.
  • Physical receiver Back/Forward remapping and DPI-stage advance verified with user assistance.
  • Foreground, device-filtered Raw Input verified configured 500 and 1000 Hz on the receiver.
  • Full settings restored; persistence verified after an unpowered ten-second power cycle through Bluetooth.

Charging state remains Unknown; dock controls are not claimed. Stored Bluetooth polling is not its measured physical report rate. Higher receiver report rates, physical effects of some sensor settings, macros, keyboard bindings, and profile switching are not claimed.

Automated verification

  • npm run build: passed.
  • Focused GearHub codec, HID and Bluetooth tests: 55/55 passed.
  • Registry tests: 6/6 passed, including picker coverage and overlap probes.
  • npm pack --dry-run: passed.
  • OpenMouse npm run check against the sibling local package: production build and 267/267 tests passed.
  • The earlier full protocol check exposed two failures in unchanged Corsair tests: regexes expect comma thousands separators, but this Russian Windows environment formats them with non-breaking spaces. They were independently reproduced; no Corsair files were changed. The initially failing new Bluetooth picker-coverage test was fixed, and all registry tests subsequently passed. The full suite is therefore not claimed green locally.

Related application change

Artwork mapping: OpenMouse-Project/openmouse#599

The accompanying OpenMouse PR only adds model-name artwork resolution and provenance. Its dependency manifest and lockfile remain unchanged; production driver availability requires the usual protocol release and dependency update.

Conflicts were additive: the MouseStatus brand union gained "LunaFury" on main and "AJAZZ" here; the registry union auto-merged with the Redragon M690 PRO entry. Resolution keeps both. tsc clean.
@snekxs
snekxs merged commit af7fd2e into OpenMouse-Project:main Oct 6, 2026
5 checks passed
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown

🎉 This PR is included in version 0.25.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants