Skip to content

Add native HID support for Basilisk V3 Pro 35K Phantom Green - #6

Open
AlexAllocated wants to merge 1 commit into
geezmolycos:mainfrom
AlexAllocated:agent/basilisk-v3-pro-35k-phantom
Open

Add native HID support for Basilisk V3 Pro 35K Phantom Green#6
AlexAllocated wants to merge 1 commit into
geezmolycos:mainfrom
AlexAllocated:agent/basilisk-v3-pro-35k-phantom

Conversation

@AlexAllocated

Copy link
Copy Markdown

What changed

  • Add native Python/hidapi detection for the Basilisk V3 Pro 35K Phantom Green Edition (1532:00D6 wired and 1532:00D7 wireless).
  • Use HID interface 0 for this model; the older Basilisk V3 protocol implementation uses interface 3.
  • Detect both wired and wireless product IDs when connecting through native hidapi.
  • Support both Python hidapi shapes: hid.Device(path=...) and hid.device().open_path(...).
  • Add unit coverage for product IDs, interface selection, both Python APIs, and the intentional WebHID exclusion.
  • Run the Python tests in CI and document the transport limitation.

Why

The Phantom Green hardware accepts the existing Basilisk button-binding protocol, but only through interface 0. Native Linux hidapi can send the legacy Razer feature report there. Chrome WebHID exposes a vendor feature interface instead and cannot send report 0 to interface 0, so the model is deliberately not advertised by the web app.

Hardware validation

Tested on a Basilisk V3 Pro 35K Phantom Green Edition on NixOS:

  • Wireless 1532:00D7: command 0x028c successfully read the profile-1 aim-button binding.
  • Wired 1532:00D6: the same read succeeded through interface 0.
  • Both transports passed a reversible volatile-profile test using command 0x020c: underside button F1 (0202003a000000) -> F2 (0202003b000000) -> exact F1 restoration.
  • No onboard profile was modified; profile 0 is volatile.
  • WebHID was also tested on both transports. Enumeration/opening succeeds after permission is granted, but sending feature report 0 fails, confirming that the native-only distinction is required.

Checks

  • python3 -m unittest discover -s public/py/tests -v
  • python3 -m py_compile public/py/basilisk_v3/device.py public/py/qdrazer/device.py public/py/qdrazer/protocol.py
  • npm run build
  • git diff --check

@AlexAllocated
AlexAllocated marked this pull request as ready for review July 21, 2026 04:12
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