Skip to content

Recognize G502 X LIGHTSPEED direct-USB PID (0xc098) - #43

Merged
snekxs merged 1 commit into
mainfrom
claude/g502-lightspeed-device-wh1ex4
Sep 4, 2026
Merged

Recognize G502 X LIGHTSPEED direct-USB PID (0xc098)#43
snekxs merged 1 commit into
mainfrom
claude/g502-lightspeed-device-wh1ex4

Conversation

@snekxs

@snekxs snekxs commented Sep 4, 2026

Copy link
Copy Markdown
Member

Summary

  • lsusb showed a G502 X LIGHTSPEED enumerating directly as 046d:c098 when connected by USB cable, distinct from its Lightspeed dongle connection.
  • That PID was missing from LOGITECH_DIRECT_PRODUCT_IDS, so a cable-connected G502 X LIGHTSPEED wouldn't be recognized as a direct HID++ endpoint.
  • Added 0xc098 to the direct-connect PID list and its doc comment, plus test coverage in hidpp.test.ts.

Cross-check against Solaar

Checked Solaar's descriptors.py: it has no static PID entry for the G502 X family either (G502 X, X PLUS, X LIGHTSPEED all rely on runtime HID++ 2.0 feature-table probing rather than a hardcoded quirks entry), which matches this driver's approach — no further special-casing needed for core features (DPI, buttons, battery, onboard profiles). Solaar's only model-specific carve-out is an RGB NVConfig color allowlist scoped to G502 X PLUS's modelId specifically; this codebase has no equivalent allowlist to update.

Testing

  • npm test — 818/818 passing

🤖 Generated with Claude Code

https://claude.ai/code/session_016PAJakuepDJB8rZVc5ZFyy


Generated by Claude Code

lsusb showed the mouse enumerating directly as 046d:c098 ("G502 X
LIGHTSPEED") when connected by USB cable, distinct from its Lightspeed
dongle connection. That PID was missing from the direct-connect
product list, so a cable-connected G502 X LIGHTSPEED wouldn't be
recognized as a direct HID++ endpoint.

Cross-checked against Solaar's descriptors.py: it has no static PID
entry for the G502 X family either (G502 X, X PLUS, X LIGHTSPEED all
rely on runtime HID++ 2.0 feature-table probing rather than a
hardcoded quirks entry), which matches this driver's approach — no
further special-casing needed for core features (DPI, buttons,
battery, onboard profiles). Solaar's only model-specific carve-out is
an RGB NVConfig color allowlist scoped to G502 X PLUS's modelId
specifically; this codebase has no equivalent allowlist to update.
@snekxs
snekxs merged commit 45bc2a9 into main Sep 4, 2026
2 checks passed
@snekxs
snekxs deleted the claude/g502-lightspeed-device-wh1ex4 branch September 4, 2026 22:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants