Skip to content

Feat: Add support for SteelSeries Arctis Nova 3P Wireless - #417

Merged
Sapd merged 14 commits into
Sapd:masterfrom
marcg03:feat/arctis-nova-3p-wireless
Oct 29, 2025
Merged

Sapd merged 14 commits into
Sapd:masterfrom
marcg03:feat/arctis-nova-3p-wireless

Conversation

@marcg03

@marcg03 marcg03 commented Aug 5, 2025

Copy link
Copy Markdown
Contributor

I'll be adding support for SteelSeries Arctis Nova 3P Wireless. Right now I managed to get the sidetone working.

I first tried seeing if the implementation of SteelSeries Arctis Nova 3 works for this model as well, but it doesn't.

@AnErrupTion

Copy link
Copy Markdown

I first tried seeing if the implementation of SteelSeries Arctis Nova 3 works for this model as well, but it doesn't.

It seems like most (if not all) of the commands for each capability are the same, except without the 0x06 byte at the beginning. So you might be able to copy most of the code from the Arctis Nova 3 implementation for the Nova 3P (though I already saw the latter was a bit more capable, such as supporting more sidetone levels).

@marcg03

marcg03 commented Aug 8, 2025

Copy link
Copy Markdown
Contributor Author

Yeah, I copied most of the code

@marcg03
marcg03 force-pushed the feat/arctis-nova-3p-wireless branch from f3a551e to 16a6fd2 Compare August 11, 2025 10:50
@marcg03

marcg03 commented Aug 11, 2025

Copy link
Copy Markdown
Contributor Author

Support for Linux works fine on my end.

Unfortunately inside my Windows VM things don't work (I tried all Usage-Page + Interface combos as reported by headsetcontrol --dev -- --list). There seems to be an issue with how I use hid_send_feature_report because inside WireShark I see the packets have 1060 length.

@marcg03
marcg03 marked this pull request as ready for review August 11, 2025 10:52
@Sapd

Sapd commented Sep 2, 2025

Copy link
Copy Markdown
Owner

Support for Linux works fine on my end.

Unfortunately inside my Windows VM things don't work (I tried all Usage-Page + Interface combos as reported by headsetcontrol --dev -- --list). There seems to be an issue with how I use hid_send_feature_report because inside WireShark I see the packets have 1060 length.

Windows support is a bit tricky, it expects the exact same length.
Here it seems to be overwritten:
The FeatureReport seems to be supposed to be longer

https://github.com/libusb/hidapi/blob/f18d2c0768bed300d13758dd9f52b57163c0498f/windows/hid.c#L1256

I think we can merge anyways, we just need to maybe include some message or at least a comment that windows seems to not quite work yet with that implementation

@marcg03

marcg03 commented Sep 2, 2025

Copy link
Copy Markdown
Contributor Author

Alright, where should I write the message/comment?

@Sapd

Sapd commented Sep 2, 2025

Copy link
Copy Markdown
Owner

Are all functions erroring out or only specific?

@marcg03

marcg03 commented Sep 3, 2025

Copy link
Copy Markdown
Contributor Author

From what I recall, nothing works on windows and they don't error out but instead just don't have any effects.

@Sapd
Sapd merged commit c4ecc65 into Sapd:master Oct 29, 2025
4 of 5 checks passed
@marcg03
marcg03 deleted the feat/arctis-nova-3p-wireless branch October 29, 2025 15:53
Sapd pushed a commit that referenced this pull request Aug 5, 2026
…556)

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 (#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 <[email protected]>
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.

3 participants