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.