Skip to content

Add Lamzu Inca 8K under Lamzu's own vendor id 0x37b0 - #60

Merged
snekxs merged 2 commits into
mainfrom
pr45-fix
Sep 6, 2026
Merged

Add Lamzu Inca 8K under Lamzu's own vendor id 0x37b0#60
snekxs merged 2 commits into
mainfrom
pr45-fix

Conversation

@snekxs

Copy link
Copy Markdown
Member

Rebase/merge of #45 onto current main, resolving an additive conflict in vendors.ts (both this PR's Lamzu Inca filter and #49's Lingbao filter landed in the same spot). Closes#45.

bpavlinaand others added 2 commits September 4, 2026 16:57
The Inca enumerates under vendor id 0x37b0, not the shared CompX ODM id
0x373e that every earlier Lamzu, CRDRAKO, and Attack Shark product uses,
so it was invisible to the driver. It answers the existing CompX framing
unchanged, so this is a catalog and discovery change rather than a new
protocol: only the product lookup needed splitting per vendor id.
Confirmed on hardware (Windows 11, hidapi) in both connection modes:
- 0x0009, the mouse on its cable
- 0x0010, the 8K receiver
Both answer on MI_02 (usage page 0xffff, usage 0x0000), report id 0, a
65-byte feature buffer, and both address the mouse as target 0x02, so
neither needs a mouseTarget override. Every existing CompX decoder
produces a correct value with no new cases: firmware 0.18, battery 100%,
five DPI stages read unscaled as big-endian, lift-off 0x01 -> Medium,
sleep 60 s.
The two connections run different polling-rate families, which the
capture shows directly: LAMZU_POLLING_RATES encodes 1000 Hz twice, 0x01
in the 125-1000 family and 0x10 in the 1000-8000 family, and the cable
answered 0x01 where the 8K receiver answered 0x40. Wired is therefore
RATES_1K and the 8K receiver RATES_8K.
0x000f, the 1K receiver this model can also ship with, is taken from
Lamzu's own configurator device table and has not been exercised on
hardware. That table also names 0x000a and 0x0002 as the mouse and
dongle DFU bootloader identities; they never speak this protocol and are
excluded on purpose, with a test to keep them out.
The WebHID filter is narrowed to usage page 0xffff, which keeps the
mouse, consumer, system and keyboard collections out of the picker on a
platform that exposes a device's interfaces separately. A WebHID
enumeration of both connections settles the one collection that
narrowing cannot exclude: MI_01's 0xffff/0x0001 declares no feature
reports at all, while only 0xffff/0x0000 declares report 0, so the
driver's feature-report-0 check rejects it rather than offering a dead
entry. On Chrome/Windows the point is moot anyway — all seven
collections arrive on a single HIDDevice, so each connection is one
picker entry however the filter is written.
Writes are entirely uncaptured. The inherited setters are unproven on an
Inca, so this should be treated as read-only support.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018C96pMdnhGcXhLQhHYkLWc
# Conflicts:
#	src/drivers/vendors.ts
@snekxs
snekxs merged commit e6b7f22 into mainSep 6, 2026
2 checks passed
@snekxs
snekxs deleted the pr45-fix branch September 6, 2026 08:10
Sign up for freeto 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

@snekxs@bpavlina