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.
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.
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 | |||||||||||
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.
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.
apt-get install build-essential git cmake libhidapi-dev
RHEL and CentOS also require the epel-repository.
yum install epel-release
yum groupinstall "Development tools"
yum install git cmake hidapi-devel
dnf install cmake hidapi-devel g++
equo i hidapi cmake
pacman -S git cmake hidapi
pkg install hidapi cmake
-
Enable nitratesky overlay:
eselect repository enable nitratesky
-
Install:
emerge -a app-misc/headsetcontrol
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)
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.
- Binaries are available on the releases page.
- For compilation instructions using MSYS2/MinGW refer to the wiki.
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 ./
The following additional software can be used to enable control via a GUI
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)
HeadsetControl-SystemTray adds a system tray icon, displaying the current amount of battery. (Python based)
Look at the wiki if you want to contribute and implement another device or improve the software.
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.
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.
Released under GPL v3.
If you like my software please star the repository.