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
GNU General Public License v3.0
1.44k stars 176 forks source link

Corsair Void Pro USB Can't set sidetone #69

Closed zosman1 closed 2 years ago

zosman1 commented 4 years ago

Hello, after compiling the program as explained in the readme i get the following error when i try to set sidetone. Is this a known issue? I was unable to find anything similar.

Setting lights on and off on the headset however does work

The output

sudo ./headsetcontrol -s 120
Found Corsair Void (Pro)!

ioctl (SFEATURE): Broken pipe
Failed to set sidetone. Error: -1: (null)

Computer Specifications:

- ubuntu 19.10 eoan 
- Corsair VOID PRO Gaming Headset

LsUsb: Bus 001 Device 009: ID 1b1c:1b5e Corsair Corsair VOID PRO USB Gaming Headset

end part of strace ran on the same command as above:

access("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.5/1-6.5:1.0/0003:0424:274C.000C/hidraw/hidraw6/uevent", F_OK) = 0
openat(AT_FDCWD, "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.5/1-6.5:1.0/0003:0424:274C.000C/hidraw/hidraw6/uevent", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
read(3, "MAJOR=239\nMINOR=6\nDEVNAME=hidraw"..., 4096) = 34
read(3, "", 4096)                       = 0
close(3)                                = 0
openat(AT_FDCWD, "/", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
openat(3, "sys", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "devices", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "pci0000:00", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "0000:00:14.0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "usb1", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "1-6", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "1-6.5", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "1-6.5:1.0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "0003:0424:274C.000C", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "hidraw", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
close(3)                                = 0
access("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.5/1-6.5:1.0/0003:0424:274C.000C/hidraw/uevent", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
openat(3, "sys", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "devices", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "pci0000:00", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "0000:00:14.0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "usb1", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "1-6", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "1-6.5", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "1-6.5:1.0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "0003:0424:274C.000C", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
close(4)                                = 0
access("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.5/1-6.5:1.0/0003:0424:274C.000C/uevent", F_OK) = 0
readlinkat(AT_FDCWD, "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.5/1-6.5:1.0/0003:0424:274C.000C/subsystem", "../../../../../../../../bus/hid", 4096) = 31
lstat("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.5/1-6.5:1.0/0003:0424:274C.000C/uevent", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6.5/1-6.5:1.0/0003:0424:274C.000C/uevent", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
read(3, "DRIVER=hid-generic\nHID_ID=0003:0"..., 4096) = 177
read(3, "", 4096)                       = 0
close(3)                                = 0
openat(AT_FDCWD, "/", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
openat(3, "sys", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "devices", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "pci0000:00", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "0000:00:14.0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "usb1", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "1-8", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "1-8:1.0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "0003:0B05:1872.0003", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "hidraw", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "hidraw1", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
close(3)                                = 0
access("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:0B05:1872.0003/hidraw/hidraw1/uevent", F_OK) = 0
openat(AT_FDCWD, "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:0B05:1872.0003/hidraw/hidraw1/uevent", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
read(3, "MAJOR=239\nMINOR=1\nDEVNAME=hidraw"..., 4096) = 34
read(3, "", 4096)                       = 0
close(3)                                = 0
openat(AT_FDCWD, "/", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
openat(3, "sys", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "devices", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "pci0000:00", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "0000:00:14.0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "usb1", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "1-8", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "1-8:1.0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "0003:0B05:1872.0003", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "hidraw", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
close(4)                                = 0
access("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:0B05:1872.0003/hidraw/uevent", F_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
openat(3, "sys", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0555, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "devices", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "pci0000:00", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "0000:00:14.0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "usb1", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "1-8", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
openat(3, "1-8:1.0", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 4
fstat(4, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(3)                                = 0
openat(4, "0003:0B05:1872.0003", O_RDONLY|O_NOFOLLOW|O_CLOEXEC|O_PATH) = 3
fstat(3, {st_mode=S_IFDIR|0755, st_size=0, ...}) = 0
close(4)                                = 0
close(3)                                = 0
access("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:0B05:1872.0003/uevent", F_OK) = 0
readlinkat(AT_FDCWD, "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:0B05:1872.0003/subsystem", "../../../../../../../bus/hid", 4096) = 28
lstat("/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:0B05:1872.0003/uevent", {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
openat(AT_FDCWD, "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0/0003:0B05:1872.0003/uevent", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=4096, ...}) = 0
read(3, "DRIVER=hid-generic\nHID_ID=0003:0"..., 4096) = 199
read(3, "", 4096)                       = 0
close(3)                                = 0
uname({sysname="Linux", nodename="-----------", ...}) = 0
openat(AT_FDCWD, "/dev/hidraw0", O_RDWR) = 3
ioctl(3, HIDIOCGRDESCSIZE or HIDIOCGVERSION, 0x7ffe515ab63c) = 0
ioctl(3, HIDIOCGRDESC, 0x7ffe515ab640)  = 0
ioctl(3, HIDIOCSFEATURE(64), 0x7ffe515ac610) = -1 EPIPE (Broken pipe)
dup(2)                                  = 4
fcntl(4, F_GETFL)                       = 0x2 (flags O_RDWR)
fstat(4, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0), ...}) = 0
write(4, "ioctl (SFEATURE): Broken pipe\n", 30ioctl (SFEATURE): Broken pipe
) = 30
close(4)                                = 0
write(2, "Failed to set sidetone. Error: -"..., 42Failed to set sidetone. Error: -1: (null)
) = 42
close(3)                                = 0
exit_group(1)                           = ?
+++ exited with 1 +++
Sapd commented 4 years ago

Seems to be something local to your system. Does setting LED work? Does it behave the same way after plugging it out/in and after a system reboot?

zosman1 commented 4 years ago

Does setting LED work?

Yes! However sending notification sound doesn't work.

Does it behave the same way after plugging it out/in and after a system reboot?

Unfortunately, yes.

Sapd commented 4 years ago

I'm not really sure about it. It could be some error in the code or in the hidraw library.

I've read somewhere about issues with the old hidraw library. You can try compiling the new one maintained by libusb, to see if it fixes it for you (uninstall the old one first): https://github.com/libusb/hidapi

ghost commented 4 years ago

same thing, cant set sidetone, (same error too) manjaro + Corsair Void Pro RGB Gaming.

ghost commented 4 years ago

yeah just found issue, Corsair Void PRO USB (iCUE software) uses audiodg.exe on windows to disable sidetone, em it isn't supported on linux tho, just asked corsair how can I disable it just waiting for response. @zosman1

Sapd commented 4 years ago

yeah just found issue, Corsair Void PRO USB (iCUE software) uses audiodg.exe on windows to disable sidetone, em it isn't supported on linux tho, just asked corsair how can I disable it just waiting for response. @zosman1

Maybe you can simply set the sidetone then via alsamixer if on Linux.

ghost commented 4 years ago

I tried, i was trying to disable all, it only volumed down sound in headphones. so idk really xD

ghost commented 4 years ago

or maybe im dumb and im choosing not this driver in alsamixer

nelwa commented 4 years ago

any update on this? I'm getting the same problem...

ghost commented 4 years ago

not possible to disable sidetone

nelwa commented 4 years ago

not possible to disable sidetone

Ok, so is sidetone not actually supported in all corsair void products as indicated on the main repo page?

ghost commented 4 years ago

It depends on model. But this model is not supported to set sidetone.

nelwa commented 4 years ago

ok, thanks.

zosman1 commented 4 years ago

Corsair Quick Start Guide

Screen Shot 2020-07-20 at 10 53 46 PM

It depends on model. But this model is not supported to set sidetone.

(In my usage) On windows with the correct drivers it is most definitely something that can be changed. Were you able to find any documentation to say otherwise?

ghost commented 4 years ago

as I said before it doesn't work on linux due of missing audiodg.exe that has windows (it handles audio thinks i think)

smfuller commented 3 years ago

I'm not sure if this is specifically a problem with the code here.

I was able to build this as of today in Arch Linux for my Void Elite and can adjust the sidetone with headsetcontrol -s without issue.

The comments regarding audiodg.exe and Windows don't seem to have any bearing in this case.

alecrm commented 3 years ago

I'm incredibly new to playing around with usb information (let alone programming in C), but from what I was able to get out of the code with some debugging, it seems like the information is correct up until hid_send_feature_report() inside void_send_sidetone() in the corsair_void.c class. As far as I can tell, the hid_path used to set the hid_device correctly points to my void pro usb headset. I don't know how to print out the value of the hid_device->device_handle or what that would exactly tell me, but that was the only unknown up until the void_send_sidetone() method. Once inside there, I don't know at all what the values of the data array mean, but assuming that's correct, then the only other point of failure from my understanding would be inside the hidapi code once it hits the hid_send_feature_report() method. Wonder if maybe there's some issue on that end?

Sapd commented 2 years ago

@alecrm Sounds like a Windows Option. The new version which will be released today contains a fix