HeadsetControl icon indicating copy to clipboard operation
HeadsetControl copied to clipboard

Getting Error: -1: Incorrect function with Arctis Pro Wireless

Open JomerDev opened this issue 3 years ago • 3 comments

Description

I'm getting the Error: -1: Incorrect function error on all three possible options (sidetone, battery and inactive time) with my Arctis Pro Wireless headset

Headset Name

Steelseries Arctis Pro Wireless

On which OS does the problem happen?

Windows

Device information

Detailed Device Information
Device Found
 VendorID: 0x1038
ProductID: 0x1290
 path: \\?\hid#vid_1038&pid_1290&mi_01#8&2df551e3&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
 serial_number: (null)
 Manufacturer: SteelSeries
 Product:      Arctis Pro Wireless
 Interface:    1
 Usage-Page: 0xffc0 Usageid: 0x1

Device Found
 VendorID: 0x1038
ProductID: 0x1290
 path: \\?\hid#vid_1038&pid_1290&mi_00#8&a1e1421&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
 serial_number: (null)
 Manufacturer: SteelSeries
 Product:      Arctis Pro Wireless
 Interface:    0
 Usage-Page: 0xff00 Usageid: 0x1

JomerDev avatar Jan 16 '22 15:01 JomerDev

Nobody set UsagePage and UsageID for your device yet: https://github.com/Sapd/HeadsetControl/wiki/Development#problems

Basically you need to edit src/devices/steelseries_arctis_pro_wireless.c and then add code like this to the init function:

    device_arctis.capability_details[CAP_SIDETONE]           = (struct capability_detail) { .usagepage = 0xffc0, .usageid = 0x1, .interface = 1 };
    device_arctis.capability_details[CAP_BATTERY_STATUS]     = (struct capability_detail) { .usagepage = 0xffc5, .usageid = 0x1, .interface = 1 };
    device_arctis.capability_details[CAP_INACTIVE_TIME]      = (struct capability_detail) { .usagepage = 0xffc5, .usageid = 0x1, .interface = 1 };

You need to correctly replace usagepage, usageid and interface. You posted the detailed device information with all ids, simply try .usagepage = 0xffc0, .usageid = 0x1, .interface = 1 or .usagepage = 0xff00, .usageid = 0x1, .interface = 0 for every function until everything works. After that you are free to create a pull request.

Sapd avatar Jan 17 '22 12:01 Sapd

Thank you, that seems to work. I do get a timeout with the battery thought, not sure what is up with that.

Edit: Nevermind, apparently my SteelSeries Software was buggy, after a reinstall everything works as expected.

JomerDev avatar Jan 17 '22 22:01 JomerDev

@Sapd I'm not sure if I should open a new issue for this or reopen this one. HeadsetControl worked completely fine for a few days but now it just stopped. It still returns successfully, but no change actually happens, nor does it show the correct data (Always 100% for battery, for example). I tried to change the UsagePage and UsageID values again, but no luck. I used wireshark to try and find out what happens and found that while wireshark shows the requests the SteelSeries Software is making, I wasn't able to find any of the requests HeadsetControl tried to make.

JomerDev avatar Jan 22 '22 23:01 JomerDev

This issue is stale because it has been open 300 days with no activity. Remove stale label or comment or this will be closed in 60 days.

github-actions[bot] avatar May 02 '23 02:05 github-actions[bot]

This issue was closed because it has been stalled with no activity.

github-actions[bot] avatar Jul 01 '23 02:07 github-actions[bot]