Home

Awesome

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

Devicesidetonebatterynotification soundlightsinactive timechatmixvoice promptsrotate to muteequalizer presetequalizermicrophone mute led brightnessmicrophone volumevolume limiterbluetooth when powered onbluetooth call volume
Corsair Headset Devicexxxx
HyperX Cloud Alpha Wirelessxxxx
HyperX Cloud Flight Wirelessx
HyperX Cloud 3x
Logitech G430x
Logitech G432/G433x
Logitech G533xxx
Logitech G535xxx
Logitech G930xx
Logitech G633/G635/G733/G933/G935xxx
Logitech G PRO Seriesxxx
Logitech G PRO X 2xx
Logitech Zone Wired/Zone 750xxx
SteelSeries Arctis (1/7X) Wirelessxxx
SteelSeries Arctis (7/Pro)xxxxx
SteelSeries Arctis 9xxxx
SteelSeries Arctis Pro Wirelessxxx
ROCCAT Elo 7.1 Airxx
ROCCAT Elo 7.1 USBx
SteelSeries Arctis Nova 3xxxxx
SteelSeries Arctis Nova (5/5X)xxxxxxxxx
SteelSeries Arctis Nova 7xxxxxxxxxxx
SteelSeries Arctis 7+xxxxxx
SteelSeries Arctis Nova Pro Wirelessxxxxxx
HeadsetControl Test devicexxxxxxxxxxxxxxx

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.

brew install sapd/headsetcontrol/headsetcontrol --HEAD

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

Windows

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-GUI a simply GUI tool to manage your headset and check battery status. (Qt C++ based)

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

HeadsetControl-Qt adds a system tray icon, GUI with various settings, Linux compatible. (Qt C++ 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.