sapd / headsetcontrol Goto Github PK
View Code? Open in Web Editor NEWSidetone and Battery status for Logitech G930, G533, G633, G933 SteelSeries Arctis 7/PRO 2019 and Corsair VOID (Pro) in Linux and MacOSX
License: GNU General Public License v3.0
Sidetone and Battery status for Logitech G930, G533, G633, G933 SteelSeries Arctis 7/PRO 2019 and Corsair VOID (Pro) in Linux and MacOSX
License: GNU General Public License v3.0
My system is running Linux Mint 18.3.
When trying to get or set any of the functions I get this :
`Headsetcontrol written by Sapd (Denis Arnst)
https://github.com/Sapd
Found Corsair Void Pro!
Couldn't open device.`
confirmed the udev rules are in place and I'm getting the same message with sudo
Calling headsetcontrol
with an invalid option (e.g. -v
) produces seemingly unnecessary line "Invalid argument ?":
~ $ headsetcontrol -v
headsetcontrol: invalid option -- 'v'
Invalid argument ?
is there any way to do this properly?
I think the executable should be in all lowercase, almost all binaries in *nix systems are lowercase..
I would make it a lot easier to call in Linux since the file systems are mostly case sensitive.
I have an Arctis 7 2019 edition
Bus 002 Device 006: ID 1038:12ad SteelSeries ApS
The battery is incorrect. After charging it all night the battery strength is reported as 64%. This is a pretty new headset so I doubt the battery has degraded that far yet.
$ ./headsetcontrol -b
Found SteelSeries Arctis (7/Pro)!
Battery: 64%
Does this even have one? I would really like to not have to install g hub and break my macros to just disable sidetone. :)
~/HeadsetControl/build$ ./headsetcontrol -s 16
Found Logitech G633/G933/G935!
Couldn't open device.
Any solutions?
Taskbar icon for battery level
cant get the corsair virtuoso to work added it like the other corsair headsets
Arctis 1, Ubuntu 18.04
Bus 001 Device 012: ID 1038:12b3 SteelSeries ApS
I tried adding 0x12b3 to steelseries_arctis.c, but I get
Requested/supported HID device not found or system error.
I will take a look at https://github.com/Sapd/HeadsetControl/wiki/Development and see what I can contribute.
Hi! I love your project. I just would love to save the settings permanently. Is there a way to achieve that? I am using Arch with KDE.
I tried normal setup and I tried to follow the instructions from the other closed issue about this, but it didnt work with different errors.
Sometimes it says no supported headset found, one thing I tried found the headset but said broken pipe.
OS: Kubuntu 19.04
My lsusb output is:
Bus 003 Device 007: ID 1b1c:0a18 Corsair
What can I do to find the problem and make it work?
Hi,
I am not sure, if it is really possible but, could you help me in doing the following:
I would be very happy about your support.
Thanks in advance.
Thank you for this!! I've already asked the Logitech support a thousand times for OSX support for the Gaming-Headsets. Besides gaming on a Win10 machine I'm also using the headset unser OSX.
Now for the problem: I'm using a G533 and can't set the sidetone like it should be:
./HeadsetControl -s 128
disables sidetone completely, which is ok for me.
./HeadsetControl -s 127
and ./HeadsetControl -s 1
practicaly have the same loudness on sidetone (very loud), can't tell any difference.
I've cloned the current master
and compiled it with make, cmake, etc. via brew.
The problem ist not, that I'm missing the sidetone but that I hear a loud swooshy noise (Rauschen) obviously coming from the sidetone if enabled. Under Windows I can get around this by setting the sidetone to ~50%.
So on OSX currently -s 128
is working for me without any sidetone at all.
Is this is a bug or did I understand something wrong?
Cheers and thank you,
Patrik
on debian jessie with kde, i have problems with the libusb :
gcc main.c -std=gnu99 -L"/usr/lib" -lusb-1.0 -o headsetcontrol
main.c:21:31: fatal error: libusb-1.0/libusb.h: no such file or folder
#include <libusb-1.0/libusb.h>
i tried installing libusb 1.0 with aptitude, but it didn't solve the problem
can you help me ?
thanks
After building and installing, I type in the command to disable sidetone (headsetcontrol -s 0), and I receive the following in terminal:
"Found Logitech G430"
"Error: This headset doesn't support sidetone"
It's very possible I built the necessary parts incorrectly, as I'm new to Mac OS. If there is any other information I could provide to facilitate the process, please let me know. Thanks in advance.
Hello,
Is there a way to get the current sidetone level value for a connected headset? I would like to build a sidetone slider bar for GNOME around your code and would like to know the initial value recorded in the headset itself without needing to persist it on the computer.
For example instead of such output
➜ HeadsetControl -b
Found Logitech G933 Wireless!
Battery: 70%
more convenient will be separate this command
➜ HeadsetControl -b
70
model
➜ HeadsetControl -m
Logitech G933
status
➜ HeadsetControl -s
connected
In your readme you said that my headset(Corsair Void Wired) was supported but when using your program I get "No supported headset found". Is there a fix for that error?
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 +++
Device: G533
This works before launching HeadsetControl
The headset itself makes a little sound indicating if you are raising or lowering the volume, volume raises or lowers fine and in my case, mate desktop shows this notification:
After launching sudo HeadsetControl -s 128
you can still hear the sound in headset, but volume remains unchanged and no notification is shown, off course.
edit: running in debian stretch with mate.
I'm on Arch and had the Problem, that i needed to be root to use HeadsetCotrol on my corsair void Pro.
The reason for this is, afaik, that the hidraw-devices used by this program are owned by root. To change this I changed the udev-rule to contain the Following:
SUBSYSTEM=="hidraw", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b1c", ATTRS{idProduct}=="0a14", MODE="0666"
With the ENV{ID_MODEL}="..."
my headset did not get matched, and as the Vendor-/Product-ID do not change it is afe to use them. Further changes to SUBSYSTEM
were made to change the Permissions for the correct /dev/hidraw#
.
As I am not sure whether this is specific for Archlinux or applicable on other Distributions, i would ask you to look into this and if necessary change the rules.
Regards
Hades
I noticed the Void is supported, so I was wondering.. any chance of the Corsair HS70 being supported? With what I've found this program is my only chance for getting sidetone from this headset on Linux. If it isn't possible I understand, but I thought I'd ask. I personally have little to no experience with Linux otherwise I'd be happy to help with adding support myself.
HeadsetControl is unable to open the Corsair VOID PRO Wireless due to the following line
missing in 70-headsets.rules
# Corsair VOID PRO Wireless
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1b1c", ATTRS{idProduct}=="0a1a", TAG+="uaccess"
lsusb output for the Corsair VOID PRO Wireless on my system is:
Bus 005 Device 002: ID 1b1c:0a1a Corsair Corsair VOID PRO Wireless Gaming Headset
Hey, congratulations for the great work!
Just came here to inform that I created and AUR package for this repository headsetcontrol-git. Anyone using Arch based distributions have an easier way to install it now.
I'd love to be able to see the current battery level, as I have no other way of receiving that information (unless I go on Windows and see what the Logitech Gaming Software says).
A simple command such as "./G930SideTone battery" that returns the battery percentage would be great.
I wrote a Gentoo ebuild for headsetcontrol. Since there is no installation section in the repo - should I add it as a wiki page?
Hi! I just bought a G935, and HeadsetControl has been exactly what I needed to get the headset working. Thanks!
Are there any plans to expand the features to cover the other things that the official software can do? I don't have a windows machine, and right now the buttons are useless to me.
Many thanks.
Can you please add support for Corsair Corsair VOID RGB USB Gaming Headset? It's device ID is: 1b1c:1b2a
Thanks in advance.
Any way to work sidetone with G332?
I tried again to get this working on Linux, and I discovered additional information dmesg output when I ran headsetcontrol:
[523380.230450] usb 3-9: usbfs: process 6312 (headsetcontrol) did not claim interface 0 before use
[523380.232022] input: Logitech Logitech G430 Gaming Headset as /devices/pci0000:00/0000:00:14.0/usb3/3-9/3-9:1.3/0003:046D:0A4D.0010/input/input27
[523380.290414] hid-generic 0003:046D:0A4D.0010: input,hidraw1: USB HID v1.00 Device [Logitech Logitech G430 Gaming Headset] on usb-0000:00:14.0-9/input3
If I change the calls to libusb_claim_interface() and libusb_release_interface() to use 0 for the second argument, then it works.
I don't want to submit a PR with that change because I assume that it would break everything that was already working. Do you think there is a way to dynamically discover the correct value to use depending on device and platform?
Hi, thanks for bringing this awesome tool. Gaming with friends without sidetone makes me speak too loud, lol.
I have a G533 and HeadsetControl simply stops working after I lift up the mic (this automatically mutes it) when I put back the mic in its position.
When trying to turn the lights off on my G633 headset, only the light strips on the back are turning off. The G logo is still enlightened.
Getting "no supported headset found" when trying to connect to my Corsair Void Pro wireless headset. Worked previously, but I've received a new USB controller from Corsair as part of warranty replacement. I've looked at the model number on old and new USB and they are the same.
I also checked the PCI address (?) in dmesg output and I believe it matches the one in the corsair_void_pro.c file.
Any help would be appreciated.
USB cable connected:
sudo headsetcontrol -c -l 1
- enables LED properly.
sudo headsetcontrol -c -l 0
- doesn't disable LED.
USB cable disconnected:
sudo headsetcontrol -c -l 1
- enables LED properly.
sudo headsetcontrol -c -l 0
- disable only strip (same as #65)
Great job on this tool, I've been looking for something like this for months, thanks for the effort!
I cloned the repository, installed libusb-1.0, but still wasn't able to compile.
This is the error message I get:
Programs/G930SideTone [master] » make
gcc main.c -L"/usr/lib" -lusb-1.0 -o G930Sidetone
main.c: In function ‘find_logitech_g930’:
main.c:110:5: error: ‘for’ loop initial declarations are only allowed in C99 mode
for (ssize_t i = 0; i < cnt; i++)
^
main.c:110:5: note: use option -std=c99 or -std=gnu99 to compile your code
main.c: In function ‘send_sidetone’:
main.c:134:5: error: ‘for’ loop initial declarations are only allowed in C99 mode
for (int i = 16; i < 64; i++)
^
make: *** [default] Error 1
Hi,
I've purchased for Christmas an Steelseries Headset Artic 7 version 2019 and it is not reconnized on Linux Manjaro with the last version of HeadsetControl.
[olivier@thorielle ~]$ HeadsetControl -h
Headsetcontrol written by Sapd (Denis Arnst)
https://github.com/Sapd
Parameters
-s level Sets sidetone, level must be between 0 and 128
-b Checks the battery level
-n soundid Makes the headset play a notifiation
[olivier@thorielle ~]$ HeadsetControl -b
Headsetcontrol written by Sapd (Denis Arnst)
https://github.com/Sapd
No supported headset found
[olivier@thorielle ~]$ HeadsetControl -n 0
Headsetcontrol written by Sapd (Denis Arnst)
https://github.com/Sapd
No supported headset found
Here more explanation about my system and usb:
[olivier@thorielle ~]$ lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 046d:c517 Logitech, Inc. LX710 Cordless Desktop Laser
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 1b1c:1b51 Corsair
Bus 001 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 002: ID 1038:12ad SteelSeries ApS
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
[olivier@thorielle ~]$ dmesg | grep usb
[ 0.718696] usbcore: registered new interface driver usbfs
[ 0.718696] usbcore: registered new interface driver hub
[ 0.718700] usbcore: registered new device driver usb
[ 0.869704] usbcore: registered new interface driver usbserial_generic
[ 0.869708] usbserial: USB Serial support registered for generic
[ 1.718711] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19
[ 1.718712] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.718713] usb usb1: Product: xHCI Host Controller
[ 1.718714] usb usb1: Manufacturer: Linux 4.19.12-2-MANJARO xhci-hcd
[ 1.718714] usb usb1: SerialNumber: 0000:02:00.0
[ 1.719509] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[ 1.719522] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 4.19
[ 1.719523] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.719524] usb usb2: Product: xHCI Host Controller
[ 1.719524] usb usb2: Manufacturer: Linux 4.19.12-2-MANJARO xhci-hcd
[ 1.719525] usb usb2: SerialNumber: 0000:02:00.0
[ 1.720267] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 4.19
[ 1.720268] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.720268] usb usb3: Product: xHCI Host Controller
[ 1.720269] usb usb3: Manufacturer: Linux 4.19.12-2-MANJARO xhci-hcd
[ 1.720270] usb usb3: SerialNumber: 0000:0a:00.3
[ 1.720467] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[ 1.720480] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 4.19
[ 1.720481] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 1.720481] usb usb4: Product: xHCI Host Controller
[ 1.720482] usb usb4: Manufacturer: Linux 4.19.12-2-MANJARO xhci-hcd
[ 1.720483] usb usb4: SerialNumber: 0000:0a:00.3
[ 2.046734] usb 1-2: new full-speed USB device number 2 using xhci_hcd
[ 2.050041] usb 3-2: new full-speed USB device number 2 using xhci_hcd
[ 2.224527] usb 3-2: New USB device found, idVendor=046d, idProduct=0b02, bcdDevice=40.02
[ 2.224530] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2.224531] usb 3-2: Product: Logitech BT Mini-Receiver
[ 2.224532] usb 3-2: Manufacturer: Logitech
[ 2.360881] usb 1-2: New USB device found, idVendor=1038, idProduct=12ad, bcdDevice= 1.19
[ 2.360884] usb 1-2: New USB device strings: Mfr=4, Product=5, SerialNumber=0
[ 2.360885] usb 1-2: Product: SteelSeries Arctis 7
[ 2.360886] usb 1-2: Manufacturer: SteelSeries
[ 2.433491] usbcore: registered new interface driver usbhid
[ 2.433493] usbhid: USB HID core driver
[ 2.435318] input: SteelSeries SteelSeries Arctis 7 Consumer Control as /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-2/1-2:1.5/0003:1038:12AD.0001/input/input2
[ 2.490070] input: SteelSeries SteelSeries Arctis 7 as /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-2/1-2:1.5/0003:1038:12AD.0001/input/input4
[ 2.490454] hid-generic 0003:1038:12AD.0001: input,hiddev0,hidraw0: USB HID v1.11 Device [SteelSeries SteelSeries Arctis 7] on usb-0000:02:00.0-2/input5
[ 2.513369] usb 1-6: new full-speed USB device number 3 using xhci_hcd
[ 2.670414] usb 3-2.2: new full-speed USB device number 3 using xhci_hcd
[ 2.807549] usb 3-2.2: New USB device found, idVendor=046d, idProduct=c70e, bcdDevice=40.02
[ 2.807552] usb 3-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2.807554] usb 3-2.2: Product: Logitech BT Mini-Receiver
[ 2.807555] usb 3-2.2: Manufacturer: Logitech
[ 2.807556] usb 3-2.2: SerialNumber: 000761A35EDF
[ 2.843012] usb 1-6: New USB device found, idVendor=1b1c, idProduct=1b51, bcdDevice= 3.08
[ 2.843014] usb 1-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 2.843016] usb 1-6: Product: CORSAIR DARK CORE RGB SE Wireless USB Receiver
[ 2.843017] usb 1-6: Manufacturer: Corsair
[ 2.843018] usb 1-6: SerialNumber: 16007025AF099D2258CCD846F5001946
[ 2.872108] input: Corsair CORSAIR DARK CORE RGB SE Wireless USB Receiver Mouse as /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-6/1-6:1.0/0003:1B1C:1B51.0002/input/input5
[ 2.872142] input: Corsair CORSAIR DARK CORE RGB SE Wireless USB Receiver Consumer Control as /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-6/1-6:1.0/0003:1B1C:1B51.0002/input/input6
[ 2.926733] input: Corsair CORSAIR DARK CORE RGB SE Wireless USB Receiver as /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-6/1-6:1.0/0003:1B1C:1B51.0002/input/input7
[ 2.926750] input: Corsair CORSAIR DARK CORE RGB SE Wireless USB Receiver as /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-6/1-6:1.0/0003:1B1C:1B51.0002/input/input8
[ 2.926767] input: Corsair CORSAIR DARK CORE RGB SE Wireless USB Receiver as /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-6/1-6:1.0/0003:1B1C:1B51.0002/input/input9
[ 2.926784] input: Corsair CORSAIR DARK CORE RGB SE Wireless USB Receiver Keyboard as /devices/pci0000:00/0000:00:01.3/0000:02:00.0/usb1/1-6/1-6:1.0/0003:1B1C:1B51.0002/input/input10
[ 2.926849] hid-generic 0003:1B1C:1B51.0002: input,hiddev1,hidraw1: USB HID v1.11 Mouse [Corsair CORSAIR DARK CORE RGB SE Wireless USB Receiver] on usb-0000:02:00.0-6/input0
[ 2.936066] hid-generic 0003:1B1C:1B51.0003: hiddev2,hidraw2: USB HID v1.11 Device [Corsair CORSAIR DARK CORE RGB SE Wireless USB Receiver] on usb-0000:02:00.0-6/input1
[ 3.026159] input: Logitech Logitech BT Mini-Receiver as /devices/pci0000:00/0000:00:07.1/0000:0a:00.3/usb3/3-2/3-2.2/3-2.2:1.0/0003:046D:C70E.0004/input/input11
[ 3.080513] hid-generic 0003:046D:C70E.0004: input,hidraw3: USB HID v1.11 Keyboard [Logitech Logitech BT Mini-Receiver] on usb-0000:0a:00.3-2.2/input0
[ 3.163373] usb 3-2.3: new full-speed USB device number 4 using xhci_hcd
[ 3.297522] usb 3-2.3: New USB device found, idVendor=046d, idProduct=c70a, bcdDevice=40.02
[ 3.297524] usb 3-2.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 3.297525] usb 3-2.3: Product: Logitech BT Mini-Receiver
[ 3.297526] usb 3-2.3: Manufacturer: Logitech
[ 3.297527] usb 3-2.3: SerialNumber: 000761A35EDF
[ 3.558937] input: Logitech Logitech BT Mini-Receiver Mouse as /devices/pci0000:00/0000:00:07.1/0000:0a:00.3/usb3/3-2/3-2.3/3-2.3:1.0/0003:046D:C70A.0005/input/input22
[ 3.559046] input: Logitech Logitech BT Mini-Receiver Consumer Control as /devices/pci0000:00/0000:00:07.1/0000:0a:00.3/usb3/3-2/3-2.3/3-2.3:1.0/0003:046D:C70A.0005/input/input23
[ 3.613428] input: Logitech Logitech BT Mini-Receiver System Control as /devices/pci0000:00/0000:00:07.1/0000:0a:00.3/usb3/3-2/3-2.3/3-2.3:1.0/0003:046D:C70A.0005/input/input24
[ 3.613490] hid-generic 0003:046D:C70A.0005: input,hiddev3,hidraw4: USB HID v1.11 Mouse [Logitech Logitech BT Mini-Receiver] on usb-0000:0a:00.3-2.3/input0
[ 4.092988] usbcore: registered new interface driver snd-usb-audio
====================================================================================================================================
[olivier@thorielle ~]$ inxi -xxx --usb
USB: Hub: 1-0:1 info: Full speed (or root) Hub ports: 10 rev: 2.0 speed: 480 Mb/s
chip ID: 1d6b:0002
Device-1: 1-2:2 info: SteelSeries ApS type: Audio,HID
driver: hid-generic,snd-usb-audio,usbhid interfaces: 6 rev: 1.1 speed: 12 Mb/s
chip ID: 1038:12ad
Device-2: 1-6:3 info: Corsair type: Mouse,HID driver: hid-generic,usbhid
interfaces: 2 rev: 2.0 speed: 12 Mb/s chip ID: 1b1c:1b51
serial: 16007025AF099D2258CCD846F5001946
Hub: 2-0:1 info: Full speed (or root) Hub ports: 4 rev: 3.1 speed: 10 Gb/s
chip ID: 1d6b:0003
Hub: 3-0:1 info: Full speed (or root) Hub ports: 4 rev: 2.0 speed: 480 Mb/s
chip ID: 1d6b:0002
Hub: 3-2:2 info: Logitech C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode)
ports: 3 rev: 2.0 speed: 12 Mb/s chip ID: 046d:0b02
Device-3: 3-2.2:3 info: Logitech MX1000 Bluetooth Laser Mouse type: Keyboard
driver: hid-generic,usbhid interfaces: 1 rev: 2.0 speed: 12 Mb/s
chip ID: 046d:c70e serial: 000761A35EDF
Device-4: 3-2.3:4 info: Logitech MX5000 Cordless Desktop type: Mouse
driver: hid-generic,usbhid interfaces: 1 rev: 2.0 speed: 12 Mb/s
chip ID: 046d:c70a serial: 000761A35EDF
Hub: 4-0:1 info: Full speed (or root) Hub ports: 4 rev: 3.0 speed: 5 Gb/s
chip ID: 1d6b:0003
[olivier@thorielle ~]$
Hope that can help you.
Hello,
I built HeadsetControl on MacOS for my g430s using build 41be993 and everything seems to work well besides one issue: The sidetone setting seems to reset; specifically after a new sound is made.
For instance, after setting "headsetcontrol -s 0" it will silence sidetone, but if I were to play a youtube video, it would reset. If I were to set "headsetcontrol -s 0" again, it would work for the remainder of the youtube video, then loading a new page, playing music, etc. will trigger it to reset again. I'm aware I can setup a loop like "while sleep 1; do HeadsetControl -s 0; done", but is there a more permanent solution available?
Any help would be much appreciated, Thank you for this build.
I made a fork that implements partial support for the Wired Void. It finds the Void Wired however, the sidetone command for the Void fails with:
Found Corsair Wired!
Error in transfering data :(
This would lead me to believe that possibly the protocol for the Wired version is different than the Wireless? Any ideas?
Hello,
i have ubuntu 19.10 when i use HeadsetControl -b i get the following:
Found Logitech g933-935 Wireless!
Failed to request battery. Error: -24: (null)
[lucas@majestic ~]:$ sudo headsetcontrol -b
Found Logitech G533!
Failed to request battery. Error: -100: (null)
Sidetone works ok.
Any help is welcome.
Hi, I'm running Ubuntu 16.04 and I'm trying to get rid of sidetone on my Logitech G430 headset. Whenever I run sudo HeadsetControl -s 0 it says "Error: This headset doesn't support sidetone"
It says for all of the other features as well that they are not supported.
But in the readme it says that the G430 is supported, so surely something is wrong here?
Headsetcontrol written by Sapd (Denis Arnst) https://github.com/Sapd
Found Logitech G430!
Error: This headset doesn't support sidetone
Hi!
Thank you very very much for this useful piece of software.
I wrote a small (and pretty ugly) daemon that will display notifications for the battery state of your devices:
https://github.com/Manawyrm/headsetcontrol-notificationd
Should we link to this repo in the README for HeadsetControl?
I'm probably not the only user that would like to have desktop notifications for battery status.
Thanks!
Couldn't get HeadsetControl to work as a non-privileged user. Turns out my headset has a different idProduct that the included udev rule in 50-corsair-void-pro.rules:
ID_VENDOR=Corsair
ID_VENDOR_ENC=Corsair
ID_VENDOR_ID=1b1c
ID_MODEL=Corsair_VOID_PRO_Wireless_Gaming_Headset
ID_MODEL_ENC=Corsair\x20VOID\x20PRO\x20Wireless\x20Gaming\x20Headset
ID_MODEL_ID=0a1a
ID_REVISION=0000
ID_SERIAL=Corsair_Corsair_VOID_PRO_Wireless_Gaming_Headset
ID_BUS=usb
Changing
SUBSYSTEM=="hidraw", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b1c", ATTRS{idProduct}=="0a14", MODE="0666"
To
SUBSYSTEM=="hidraw", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b1c", ATTRS{idProduct}=="0a1a", MODE="0666"
Makes it work as a normal user:
$ HeadsetControl -b
Found Corsair Void (Pro)!
Battery: 61%
$
Any chance you could implement support for the Logitech G633 Artemis Spectrum?
All of the control options recognize and work fine on my Corsair Void Pro Wireless (RGB) headset. However, when I set the LEDs to off (headsetcontrol -l 0
), the mute button on the side of the headset does not work.
When LEDs are on:
When LEDs are off:
Hi, I followed the guide in #3 to check the protocol for the g930 headset and I hope I did it right.
Search for packets with a info of URB_INTERRUPT in, if you found some, check the leftover capture data field, this is the data field. Now you need to go through multiple of such packets and see if the values make sense as battery indicator (e.g. if there is a 32 in hex, that could mean that the battery is 50% full). Post me the full data of such a packet (the data and the headers!).
As I cannot find the described pattern I attached the log file of USBPcap.
During capture, I did the following (time and packet column might be incorrect, I only looked for the right interval which seemed promising)
event, time, leftover capture data, packet no
charge, 101, 02 20 04 00 00, 2820
15s later
discharge, 116, 02 00 04 00 00, 2929
15s later
charge, 131, 02 20 04 00 00, 3044
15s later
discharge, 146, 02 00 04 00 00, 3157
15s later
charge, 161, 02 20 04 00 00, 3287
15s later
discharge, 176, 02 00 04 00 00, 3400
15s later
charge, 191, 02 20 04 00 00, 3530
15s later
discharge, 206, 02 00 04 00 00, 3639
15s later
unplug, 221, , 3754
5s later
plug
25s later
unplug, 251, , 4783
5s later
plug
(headset was almost full during capture)
The protocol of g930 seems totally different to me and I cannot find the battery level...
Is there anything else I can provide to have the battery check implemented for the g930?
After installing libusb (btw: now it has version 1.0.21) and cloning repo I typed:
gcc main.c -L"/usr/local/Cellar/libusb/1.0.21/lib" -lusb-1.0 -I"/usr/local/Cellar/libusb/1.0.21/include" -std=gnu99 -o headsetcontrol
and had no errors, than I tried to use and had: HeadsetControl: command not found
When the mic is put up vertically, which triggers an automatic mute, the battery readings are wrong.
Examples:
mic down, muted (with the mute key)
Battery: 94%
mic down, unmuted
Battery: 94%
mic up, automuted
Battery: 222%
Maybe this is an issue with the VOID PRO and you are not getting it with yours, if so: can I provide you with any readings to figure this out?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.