Giter Club home page Giter Club logo

headsetcontrol's Introduction

Summary

A tool to control certain aspects of USB-connected headsets on Linux. Currently, support is provided for adjusting sidetone, getting battery state, controlling LEDs, and setting the inactive time. See below for which headset supports which feature.

Sidetone

Want to use your Headset under Linux or Mac OS X, but you shout while talking because there is no support for sidetone? With sidetone, sometimes also called loopback, you can hear your own voice while talking. This differs from a simple loopback via PulseAudio as you won't have any disturbing latency.

Supported Headsets

Device sidetone battery notification sound lights inactive time chatmix voice prompts rotate to mute equalizer preset equalizer microphone mute led brightness microphone volume
Corsair Headset Device x x x x
HyperX Cloud Alpha Wireless x x x x
HyperX Cloud Flight Wireless x
HyperX Cloud 3 x
Logitech G430 x
Logitech G432/G433 x
Logitech G533 x x x
Logitech G535 x x x
Logitech G930 x x
Logitech G633/G635/G733/G933/G935 x x x
Logitech G PRO Series x x x
Logitech G PRO X 2 x x
Logitech Zone Wired/Zone 750 x x x
SteelSeries Arctis (1/7X) Wireless x x x
SteelSeries Arctis (7/Pro) x x x x x
SteelSeries Arctis 9 x x x x
SteelSeries Arctis Pro Wireless x x x
ROCCAT Elo 7.1 Air x x
ROCCAT Elo 7.1 USB x
SteelSeries Arctis Nova 3 x x x x x
SteelSeries Arctis Nova 7 x x x x x x
SteelSeries Arctis 7+ x x x x x x
SteelSeries Arctis Nova Pro Wireless x x x x x x
HeadsetControl Test device x x x x x x x x x x x x

For non-supported headsets on Linux: There is a chance that you can set the sidetone via AlsaMixer

* If your Corsair headset is not recognized - or you have a very similar headset to an existing one, see Adding a corsair device. HS80 and HS70 wired, RGB Elite, and Virtuso is not supported, but you can change its sidetone in Alsamixer.

For more features or other headsets, the protocol of the respective headset must be analyzed further. This can be done by capturing the USB traffic between the device and the original Windows software and analyzing it with WireShark or USBlyzer. For that, you can also use a virtual machine with USB passthrough. The wiki provides a tutorial.

Some headsets expose sidetone as audio-channel volume and as such can be changed in Alsamixer.

Building

Prerequisites

Before building, ensure you have the necessary dependencies installed, including HIDAPI, C compilers, and CMake. These dependencies can usually be installed via your system's package manager.

Debian / Ubuntu

apt-get install build-essential git cmake libhidapi-dev

CentOS / RHEL (RedHat based)

RHEL and CentOS also require the epel-repository.

yum install epel-release yum groupinstall "Development tools" yum install git cmake hidapi-devel

Fedora

dnf install cmake hidapi-devel g++

Sabayon

equo i hidapi cmake

Arch Linux

pacman -S git cmake hidapi

FreeBSD

pkg install hidapi cmake

Gentoo

  1. Enable nitratesky overlay:

    eselect repository enable nitratesky

  2. Install:

    emerge -a app-misc/headsetcontrol

NixOS

headsetcontrol is included in nixpkgs. To use it without installing, use:

nix run nixpkgs#headsetcontrol

To install it globally, add the following to your configuration.nix:

environment.systemPackages = [ pkgs.headsetcontrol ];

For the udev rules, add the following to your configuration.nix:

services.udev.packages = [ pkgs.headsetcontrol ];

Compiling

git clone https://github.com/Sapd/HeadsetControl && cd HeadsetControl
mkdir build && cd build
cmake ..
make

To make headsetcontrol accessible globally, run:

sudo make install

# On LINUX, to access without root reboot your computer or run
sudo udevadm control --reload-rules && sudo udevadm trigger

This command installs the binary in a location that is globally accessible via your system's PATH. On Linux it also runs headsetcontrol -u for generating udev files and stores them in /etc/udev/rules.d/ (used to allow non-root access)

OS X

Recommendation: Use Homebrew.

  • To automatically compile and install the latest version:
brew install sapd/headsetcontrol/headsetcontrol --HEAD
  • To manually compile, first install the dependencies: brew install hidapi cmake

Note: Xcode must be downloaded via the Mac App Store for the compilers.

Windows

  • Binaries are available on the releases page.
  • For compilation instructions using MSYS2/MinGW refer to the wiki.

Usage

To view available options for your device, use:

headsetcontrol -h

For a complete list of all options, run:

headsetcontrol --help-all

To use headsetcontrol in scripts or other applications, explore:

headsetcontrol --output

(and the wiki article about API development)

Note: When running the application from the current directory, prefix commands with ./

Third Party

The following additional software can be used to enable control via a GUI

Linux

headsetcontrol-notifcationd provides notifications on the battery status of connected headsets (PHP based)

headset-charge-indicator adds a system tray icon, displaying the current amount of battery. Also provides controls via the icon's menu (Python based)

gnome-shell-extension-HeadsetControl adds a system tray icon, displaying the current amount of battery. Also provides controls via the icon's menu (gnome-shell 42 and later)

Windows

HeadsetControl-SystemTray adds a system tray icon, displaying the current amount of battery. (Python based)

Development

Look at the wiki if you want to contribute and implement another device or improve the software.

Release Cycle

HeadsetControl is designed to be a rolling-release software, with minor versions (0.x.0) providing new features in the software itself, and patch versions (0.0.x) fixing issues or adding support for new headsets. Major versions are reserved for bigger rewrites.

If you want to build and provide packages for it, we recommend building and providing the current git HEAD in most cases. This ensures that users have access to the latest features and fixes.

Notice

HeadsetControl is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

License

Released under GPL v3.

Like it?

If you like my software please star the repository.

headsetcontrol's People

Contributors

aguywholikestetris avatar anerruption avatar centic9 avatar core1024 avatar dessix avatar elril0000 avatar giuseppem99 avatar gort818 avatar hadess avatar infiniteloopgamedev avatar ionic avatar iv-m avatar jaypikay avatar krdimitrov avatar leixb avatar matthewbaggett avatar michsior14 avatar moonlight-angel avatar peternordin avatar questofiranon avatar s3lph avatar sapd avatar simonbaird avatar snkaupe avatar str0g avatar strudelkuchen avatar tobiaspc avatar vtimofeenko avatar xphyro avatar yurusov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

headsetcontrol's Issues

Corsair Void Pro Wireless (RGB) LED Off breaks mute button

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:

  • Mute button makes a beeping noise when pressed
  • When enabled, mic is muted and no sound is measured in various sound settings and measurements

When LEDs are off:

  • Mute button does not make a noise when pressed
  • Mute button has no effect on mic sensitivity or input

Enhancement: Future plans?

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.

"no supported headset found"

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.

Steelseries Artic 7 2019 not reconnized

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.

Get the current sidetone level

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.

VOID PRO battery check issue

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?

Check battery level for g930 headset

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?

Corsaid Void Wired not working

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?

Can't compile on Linux Mint (FIXED)

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

Void Wired Support

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?

[Feature Request] Support for Plantronics DA45

Hi,

I am not sure, if it is really possible but, could you help me in doing the following:

  1. Find out, which data has to be sent via USB to set the sidetone of the DA45 (if it supports it at all).
  2. Extend your tool to also support the DA45.

I would be very happy about your support.

Thanks in advance.

Please provide more machine-readable interface

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

G533 macOS High Sierra (10.13.4)

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

Logitech G533 Battery Level

[lucas@majestic ~]:$ sudo headsetcontrol -b
Found Logitech G533!

Failed to request battery. Error: -100: (null)

Sidetone works ok.
Any help is welcome.

Notification daemon

Hi!

screenshot

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!

Arctis 7 battery incorrect

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%

Logitech G930 on MacOS

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

Couldn't open device.

~/HeadsetControl/build$ ./headsetcontrol -s 16
Found Logitech G633/G933/G935!

Couldn't open device.

Any solutions?

Corsair Corsair VOID PRO Wireless missing in udev rules

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

Gentoo ebuild

I wrote a Gentoo ebuild for headsetcontrol. Since there is no installation section in the repo - should I add it as a wiki page?

Corsair Void Wired Not supported

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?

Corsair Void Pro USB Can't set sidetone

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 +++

Sidetone Disables After Sound Sometimes (G430)

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.

G633 side lights doesn't turn off

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.

Sidetone Not Working For G430 on Mac

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.

Arch Linux AUR Package

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.

Logitech G430 on Linux

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?

G633 support

Any chance you could implement support for the Logitech G633 Artemis Spectrum?

Wrong idProduct for Corsair Void Pro Wireless (RGB)

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%
$

hidraw-Permissions

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

Rename executable to headsetcontrol

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.

[Feature Request] Check battery level

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.

Logitech g933-935 Battery issue!

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)

Sidetone stops working after muting mic from headset itself.

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.

HS70 Support?

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.

save settings?

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.

cannot install it

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

volume scroll stops working after launching

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:
gi

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.

Corsair virtuoso

cant get the corsair virtuoso to work added it like the other corsair headsets

Corsair Void Pro Couldn't open device

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

No features supported for G430?

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.