Sapd / HeadsetControl

Sidetone and Battery status for Logitech G930, G533, G633, G933 SteelSeries Arctis 7/PRO 2019 and Corsair VOID (Pro) in Linux and MacOSX

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support with adding Arctis Nova 7

str0g opened this issue · comments

Description

Hey I am trying to add support for Arctis Nova 7.
Detection and rules is no brainier but getting correctly crafted packet is harder task.
The easiest part was to capture sidecap options.

I am constantly getting Failed to set/request sidetone. Error: -1: Broken pipe

/* 64 length, total 128
0x39, 0x00 off
0x39, 0x10 low
0x39, 0x20 medium
0x39, 0x30 high
*/

static int arctis_nova_7_send_sidetone(hid_device* device_handle, uint8_t num)
{
    printf("%s\n", __FUNCTION__ );
    num = map(num, 0, 255, 0x00, 0x30);

    uint8_t data[MSG_SIZE] = { 0x39, num };

    return hid_write(device_handle, data, MSG_SIZE);
}
device_arctis.capability_details[CAP_SIDETONE] = (struct capability_detail) { .usagepage = 0xffc0, .usageid = 0x1, .interface = 3 };

They main difference which I found between windows in virtual box and Arch Linux was wValue (Linux: 0x0239), while on windows(0x0200)

Headset Name

SteelSeries Arctis Nova 7

Device information

Detailed Device Information
❯ ./headsetcontrol --dev -- --list --device 0x1038:0x2202
Device Found
 VendorID: 0x1038
ProductID: 0x2202
 path: /dev/hidraw10
 serial_number: 
 Manufacturer: SteelSeries
 Product:      Arctis Nova 7
 Interface:    3
 Usage-Page: 0xffc0 Usageid: 0x1

Device Found
 VendorID: 0x1038
ProductID: 0x2202
 path: /dev/hidraw11
 serial_number: 
 Manufacturer: SteelSeries
 Product:      Arctis Nova 7
 Interface:    4
 Usage-Page: 0xc Usageid: 0x1

Device Found
 VendorID: 0x1038
ProductID: 0x2202
 path: /dev/hidraw12
 serial_number: 
 Manufacturer: SteelSeries
 Product:      Arctis Nova 7
 Interface:    5
 Usage-Page: 0xff00 Usageid: 0x1

sorted out, data was one byte to short.