fix: enable Windows support for Arctis Nova 3P/3X via output reports - #556
Open
RpYTMc wants to merge 1 commit into
Open
fix: enable Windows support for Arctis Nova 3P/3X via output reports#556RpYTMc wants to merge 1 commit into
RpYTMc wants to merge 1 commit into
Conversation
Windows hidapi pads HID feature reports to the interface's declared report length (~1060 bytes on this device), and the firmware silently ignores oversized reports - so every feature-report command was a no-op on Windows, which is why the device was limited to Linux/macOS (Sapd#417). Switch the battery query to the shared readDeviceStatus() write path and all commands to output reports, matching the Nova 5/7 implementations. The status response layout is identical to the Nova 5: offline = data[1] == 0x02, charging = data[4] == 0x01, level = data[3]. This also adds charging detection, which the feature-report implementation never had. Tested on a real Arctis Nova 3X (0x1038:0x226d) on Windows 11: battery level, charging flag, sidetone, equalizer presets and inactive time all work. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes made
Enables Windows support for the SteelSeries Arctis Nova 3P/3X Wireless by switching all device communication from HID feature reports to output reports, matching the existing Nova 5/7 implementations.
Why this fixes Windows: on Windows, hidapi pads feature reports to the interface's declared feature-report length (~1060 bytes on this device), and the firmware silently ignores oversized reports — so every feature-report command was a no-op there. This is the "commands have no effect on Windows" problem observed in #417 when the device was added, which led to the
PLATFORM_LINUX | PLATFORM_MACOSrestriction. Output reports don't hit this issue, so the same packets that already work for the Nova 5/7 work here too.Details:
getBattery()now uses the sharedreadDeviceStatus()helper ([0x00, 0xb0]write + read), like Nova 5/7. The status response layout is identical to the Nova 5:data[1] == 0x02→ offline,data[4] == 0x01→ charging,data[3]→ level percent.writeHID()with the0x00report-ID prefix; EQ payload offsets shift by one byte accordingly.getSupportedPlatforms()override (base default isPLATFORM_ALL) and updates the README row fromL/MtoAll.Tested on real hardware — Arctis Nova 3X (
0x1038:0x226d), Windows 11, MSYS2/MinGW64 build:ctest: 2/2)The byte meanings (
data[4]:0x01charging /0x03discharging;data[1]:0x03online /0x02off) were confirmed by live HID captures while docking/undocking the headset.Note: I could only test on Windows. The write path used here is byte-identical to what the Nova 5/7 already use successfully on Linux/macOS, but a quick Linux/macOS smoke test from another 3P/3X owner would be welcome.
Checklist