Skip to content

SteelSeries Arctis Nova 3 support #294

Description

@socketpair

Description

Bus 001 Device 014: ID 1038:12ec SteelSeries ApS Arctis Nova 3

Headset Name

SteelSeries Arctis Nova 3

Device information

Detailed Device Information
Device Found
 VendorID: 0x1038
ProductID: 0x12ec
 path: /dev/hidraw3
 serial_number: 
 Manufacturer: SteelSeries
 Product:      Arctis Nova 3
 Interface:    3
 Usage-Page: 0xc Usageid: 0x1

Device Found
 VendorID: 0x1038
ProductID: 0x12ec
 path: /dev/hidraw4
 serial_number: 
 Manufacturer: SteelSeries
 Product:      Arctis Nova 3
 Interface:    4
 Usage-Page: 0xffc0 Usageid: 0x1

Device Found
 VendorID: 0x1038
ProductID: 0x12ec
 path: /dev/hidraw4
 serial_number: 
 Manufacturer: SteelSeries
 Product:      Arctis Nova 3
 Interface:    4
 Usage-Page: 0xff00 Usageid: 0x1

Activity

  1. github-actions commented on May 3, 2023

    @github-actions

    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.

  2. AnErrupTion commented on Dec 27, 2023

    @AnErrupTion

    @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 pipe

    I 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.zip

  3. AnErrupTion commented on Dec 27, 2023

    @AnErrupTion

    Nevermind, 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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions