• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/workflows/H13-Nov-2021-163141

cmake_modules/H13-Nov-2021-5345

src/H03-May-2022-2,9481,878

.clang-formatH A D13-Nov-2021106 76

.clang-tidyH A D13-Nov-2021290 54

.gitignoreH A D13-Nov-202131 33

README.mdH A D13-Nov-20217 KiB190116

licenseH A D13-Nov-202134.3 KiB701579

README.md

1## Summary
2
3A 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.
4
5### Sidetone
6
7Want 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
8talking. This differs from a simple loopback via PulseAudio as you won't have any disturbing latency.
9
10## Supported Headsets
11
12- Corsair Void (Every version*, regardless whether Elite, Pro, HS70, Wireless or Wired)
13  - Sidetone, Battery (for Wireless), LED on/off, Notification Sound
14- Logitech G430
15  - No support in current version (Last working on macOS in commit 41be99379f)
16- Logitech G432
17  - Sidetone (only tested on Linux)
18- Logitech G433
19  - Sidetone (only tested on Linux)
20- Logitech G533
21  - Sidetone, Battery (for Wireless)
22- Logitech G633 / G635 / G733 / G933 / G935
23  - Sidetone, Battery (for Wireless), LED on/off
24- Logitech G930
25  - Sidetone, Battery
26- SteelSeries Arctis 1, Arctis 1 for XBox
27  - Sidetone, Battery, Inactive time
28- SteelSeries Arctis (7 and Pro)
29  - Sidetone, Battery, Inactive time, Chat-Mix level, LED on/off (allows to turn off the blinking LED on the base-station)
30- SteelSeries Arctis 9
31  - Sidetone, Battery, Inactive time, Chat-Mix level
32- SteelSeries Arctis Pro Wireless
33  - Sidetone, Battery, Inactive time
34- Logitech G PRO
35  - Sidetone
36- Logitech Zone Wired/Zone 750
37  - Sidetone, Voice prompts, Rotate to mute
38- Roccat Elo 7.1 Air
39  - LED on/off, Inactive time (Note for Linux: Sidetone is handled by sound driver => use AlsaMixer)
40
41For non-supported headsets on Linux: There is a chance that you can set the sidetone via AlsaMixer
42
43* *If your Corsair headset is not recognized, see [Adding a corsair device](https://github.com/Sapd/HeadsetControl/wiki/Adding-a-Corsair-device)*
44
45For 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](https://github.com/Sapd/HeadsetControl/wiki/Development) provides a tutorial.
46
47## Building
48
49### Prerequisites
50
51You will need hidapi, c compilers and cmake. All usually installable via package managers.
52
53#### Debian / Ubuntu
54
55`apt-get install build-essential git cmake libhidapi-dev`
56
57#### CentOS / RHEL (RedHat based)
58
59RHEL and CentOS also require the epel-repository: `yum install epel-release`. Please inform yourself about the consequences of activating the epel-repository.
60
61`yum groupinstall "Development tools"`
62`yum install git cmake hidapi-devel`
63
64#### Fedora
65
66`dnf install cmake hidapi-devel g++`
67
68#### Sabayon
69
70`equo i hidapi cmake`
71
72#### Arch Linux
73
74`pacman -S git cmake hidapi`
75
76#### FreeBSD
77
78`pkg install hidapi cmake`
79
80#### Gentoo
81
821. Enable [nitratesky](https://github.com/VTimofeenko/nitratesky) overlay:
83
84    `eselect repository enable nitratesky`
852. Install:
86
87    `emerge -a app-misc/headsetcontrol`
88
89#### Mac OS X
90
91I recommend using [Homebrew](https://brew.sh).
92
93You can automatically compile and install the latest version of the software, by using
94`brew install sapd/headsetcontrol/headsetcontrol --HEAD`.
95
96If you wish to compile it manually, you can install the dependencies with  `brew install hidapi cmake`.
97
98Also you have to download Xcode via the Mac App Store for the compilers.
99
100#### Windows
101
102Windows support is a bit experimental and might not work in all cases. You can find binaries in the [releases](https://github.com/Sapd/HeadsetControl/releases) page, or compile instructions via MSYS2/MinGW in the [wiki](https://github.com/Sapd/HeadsetControl/wiki/Development#windows).
103
104### Compiling
105
106```
107git clone https://github.com/Sapd/HeadsetControl && cd HeadsetControl
108mkdir build && cd build
109cmake ..
110make
111```
112
113If you want to be able to call HeadsetControl from every folder type:
114
115```bash
116make install
117```
118
119This will copy the binary to a folder globally accessible via path.
120
121### Access without root
122
123Also in Linux, you need udev rules if you don't want to start the application with root. Those rules are generated via `headsetcontrol -u`. Typing `make install` on Linux generates and writes them automatically to /etc/udev/rules.d/.
124
125You can reload udev configuration without reboot via `sudo udevadm control --reload-rules && sudo udevadm trigger`
126
127## Usage
128
129Type `headsetcontrol -h` to get all available options.\
130(Don't forget to prefix it with `./` when the application resides in the current folder)
131
132Type `headsetcontrol -?` to get a list of supported capabilities for the currently detected headset.
133
134`headsetcontrol -s 128` sets the sidetone to 128 (REAL loud). You can silence it with `0`. I recommend a loudness of 16.
135
136The following options don't work on all devices yet:
137
138`headsetcontrol -b` check battery level. Returns a value from 0 to 100 or loading.
139
140`headsetcontrol -n 0|1` sends a notification sound, made by the headset. 0 or 1 are currently supported as values.
141
142`headsetcontrol -l 0|1` switches LED off/on (off almost doubles battery lifetime!).
143
144`headsetcontrol --short-output` cut unnecessary output, for reading by other scripts or applications.
145
146`headsetcontrol -i 0-90` sets inactive time in minutes, time must be between 0 and 90, 0 disables the feature.
147
148`headsetcontrol -m` retrieves the current chat-mix-dial level setting between 0 and 128. Below 64 is the game side and above is the chat side.
149
150`headsetcontrol -v 0|1` turn voice prompts on or off.
151
152`headsetcontrol -r 0|1` turn rotate to mute feature on or off.
153
154`headsetcontrol -u` Generates and outputs udev-rules for Linux.
155
156`headsetcontrol --dev` Advanced menu for developers, to send and/or receive custom data
157
158### Third Party
159
160The following additional software can be used to enable control via a GUI
161
162#### Linux
163
164[headsetcontrol-notifcationd](https://github.com/Manawyrm/headsetcontrol-notificationd) provides notifications on the battery status of connected headsets (PHP based)
165
166[headset-charge-indicator](https://github.com/centic9/headset-charge-indicator/) adds a system tray icon, displaying the current amount of battery. Also provides controls via the icon's menu (Python based)
167
168#### Windows
169
170[HeadsetControl-SystemTray](https://github.com/zampierilucas/HeadsetControl-SystemTray) adds a system tray icon, displaying the current amount of battery. (Python based)
171
172## Development
173
174Look at the [wiki](https://github.com/Sapd/HeadsetControl/wiki/Development) if you want to contribute and implement another device or improve the software.
175
176## Notice
177
178HeadsetControl is distributed in the hope that it will be useful,\
179but WITHOUT ANY WARRANTY; without even the implied warranty of\
180MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\
181GNU General Public License for more details.
182
183## License
184
185Released under GPL v3.
186
187## Like it?
188
189If you like my software please star the repository.
190