Skip to content

razer: stop offering WebHID-inaccessible models (nativeOnly) - #2

Merged
jazzstack merged 2 commits into
OpenMouse-Project:mainfrom
jazzstack:razer-native-only
Aug 10, 2026
Merged

jazzstack merged 2 commits into
OpenMouse-Project:mainfrom
jazzstack:razer-native-only

Conversation

@jazzstack

@jazzstack jazzstack commented Aug 10, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The DeathAdder V4 Pro (0xbe wired / 0xbf receiver) and the Viper Ultimate wireless receiver (0x7b) carry their control channel on a HID collection Chrome classifies as a plain mouse and strips feature reports from. sendFeatureReport therefore fails on every interface, no matter how many collections are granted (confirmed on hardware with Synapse stopped; the receiver case was also reported on openmouse#45).

This means the DeathAdder V4 Pro is not supported over WebHID and will not be: its control channel is only reachable through the native HAL (e.g. Synapse), so no amount of HID granting can make it work in the browser. The registry keeps a nativeOnly entry purely so the native HAL transport still has a config.

Despite that, the WebHID picker offered these models as usable entries, so users picked a mouse that could never connect.

Change

  • Mark the three models nativeOnly: true in the registry (entries stay, so the native HAL transport still has a config).
  • RAZER_REGISTRY_FILTERS now excludes nativeOnly products, so requestDevice({ filters }) stops offering them as dead entries.
  • RazerHidClient.isSupported refuses nativeOnly models even when a previously granted device enumerates (e.g. getDevices() auto-reconnect, grants shared across origins).

Verification

  • Picker-coverage test asserts every non-nativeOnly product is still offered and none of the nativeOnly ones are.
  • New isSupported test asserts 0xbe is refused on both the mouse and vendor interface shapes.
  • 269 tests pass, tsc --noEmit clean.

The DeathAdder V4 Pro (0xbe/0xbf) and the Viper Ultimate wireless
receiver (0x007b) carry their control channel on a collection Chrome
classifies as a plain mouse and strips feature reports from, so
sendFeatureReport fails on every interface no matter how many are
granted (confirmed on hardware with Synapse stopped; the dongle case
was also reported on openmouse#45).

The registry entries stay so the native HAL transport still has a
config, but RAZER_REGISTRY_FILTERS now excludes nativeOnly products so
the WebHID picker stops offering them as dead entries.
A previously granted nativeOnly device can still enumerate through
navigator.hid.getDevices() (auto-reconnect, shared grants across
origins), so isSupported must reject it regardless of the interface
shape. This keeps the picker filter and the claim check consistent.
@jazzstack
jazzstack merged commit fd99140 into OpenMouse-Project:main Aug 10, 2026
1 check passed
jazzstack pushed a commit that referenced this pull request Sep 9, 2026
…off-scale

feat(atk): identify the A9 Mini + and add a continuous lift-off range
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.

1 participant