Repository navigation
SteelSeries Arctis Nova 3 support #294
Description
Activity
Hello 👋
Thank you for reaching out and expressing interest in having support for a new headset.
We appreciate your willingness to contribute to the project!In order to create a implementation for a specific headset, we need to be able to reverse-engineer and test the implementation on that particular device.
Explicitly speaking, only people who actually own the headset, can implement that request.👉 If you're interested in adding support for a specific headset, we recommend taking a look at our wiki to get started.
📝 If you encounter any problems while using WireShark, we would be more than happy to help. Simply post screenshots and data on your progress.
@socketpair @Sapd I also have this headset and wanted to add support for it in HeadsetControl. However, I'm hitting a slightly problematic roadblock here... When I end up sending a feature report, I'm getting this error:
Failed to set/request sidetone. Error: -1: ioctl (SFEATURE): Broken pipeI also tried using PyUSB to send the feature report instead, but then I'm getting first a "Resource busy" error, then "Entity not found" (when re-running the program). I'm not exactly sure what's wrong, the headset is working perfectly fine.
Here's my code for setting the sidetone:
static int arctis_nova_3_send_sidetone(hid_device* device_handle, uint8_t num) { /* * steps to make it work nicely with headset-charge-indicator */ if (num < 26) { num = 0x0; } else if (num < 51) { num = 0x1; } else if (num < 76) { num = 0x2; } else { num = 0x3; } uint8_t data[MSG_SIZE + 1] = { 0x02, 0x06, 0x39, num }; return hid_send_feature_report(device_handle, data, sizeof(data)); }
I've also attached the Wireshark capture file below (inside a ZIP file) which shows the packets when I set the microphone sidetone to "Low" in SteelSeries GG Engine (which corresponds to the value
0x01):
ArctisNova3.zipNevermind, I guess I shouldn't code at 3 AM... I solved it by just using this as the data buffer:
uint8_t data[MSG_SIZE] = { 0x06, 0x39, num };
And now setting the microphone sidetone works!
Description
Bus 001 Device 014: ID 1038:12ec SteelSeries ApS Arctis Nova 3
Headset Name
SteelSeries Arctis Nova 3
Device information
Detailed Device Information